diff --git a/src/Definition/Loader/OpenApiDefinitionLoader.php b/src/Definition/Loader/OpenApiDefinitionLoader.php
index 82ceaa2..a72a2db 100644
--- a/src/Definition/Loader/OpenApiDefinitionLoader.php
+++ b/src/Definition/Loader/OpenApiDefinitionLoader.php
@@ -41,6 +41,8 @@
 use cebe\openapi\spec\Schema;
 use cebe\openapi\spec\SecurityRequirement;
 use cebe\openapi\spec\SecurityScheme;
+use Vural\OpenAPIFaker\Options;
+use Vural\OpenAPIFaker\SchemaFaker\SchemaFaker;
 
 final class OpenApiDefinitionLoader implements DefinitionLoader
 {
@@ -383,13 +385,10 @@ private function getExamples(\cebe\openapi\spec\Operation $operation, array $par
                     if ($mediaType->schema->example !== null) {
                         $operationExample = $this->getExample('default', $examples);
                         $operationExample->setBody(BodyExample::create((array) $mediaType->schema->example));
-                    }
-                    try {
+                    } else {
                         $example = $this->extractDeepExamples($mediaType->schema);
                         $operationExample = $this->getExample('properties', $examples);
                         $operationExample->setBody(BodyExample::create($example));
-                    } catch (ExampleNotExtractableException) {
-                        // @ignoreException
                     }
                 }
             }
@@ -424,15 +423,12 @@ private function getExamples(\cebe\openapi\spec\Operation $operation, array $par
                         $operationExample->setResponse(
                             new ResponseExample((string) $statusCode, (array) $mediaType->schema->example)
                         );
-                    }
-                    try {
+                    } else {
                         $example = $this->extractDeepExamples($mediaType->schema);
                         $operationExample = $this->getExample('properties', $examples);
                         $operationExample->setResponse(
                             new ResponseExample((string) $statusCode, $example)
                         );
-                    } catch (ExampleNotExtractableException) {
-                        // @ignoreException
                     }
                 }
             }
@@ -475,8 +471,6 @@ private function getExample(string $name, array &$examples): OperationExample
     }
 
     /**
-     * @throws ExampleNotExtractableException
-     *
      * @return array<mixed>
      */
     private function extractDeepExamples(Schema $schema, bool $optional = false): array
@@ -496,21 +490,16 @@ private function extractDeepExamples(Schema $schema, bool $optional = false): ar
                     if ($return !== [] || $isRequired) {
                         $parent[$name] = $return;
                     }
-                } else {
-                    if (
-                        !$optional
-                        && !isset($property->default)
-                        && !$property->nullable
-                        && !isset($property->example)
-                        && \in_array($name, $schema->required ?? [], true)) {
-                        throw new ExampleNotExtractableException();
-                    }
-                    if (isset($property->example)) {
-                        $parent[$name] = $property->example;
-                    } elseif (isset($property->default)) {
-                        $parent[$name] = $property->default;
-                    } elseif ($property->nullable) {
-                        $parent[$name] = null;
+                } elseif (isset($property->example)) {
+                    $parent[$name] = $property->example;
+                } elseif (isset($property->default)) {
+                    $parent[$name] = $property->default;
+                } elseif ($property->nullable) {
+                    $parent[$name] = null;
+                } elseif (!$optional && \in_array($name, $schema->required ?? [], true)) {
+                    $fakeSchema = (new SchemaFaker($schema, new Options()))->generate();
+                    if (is_array($fakeSchema) && isset($fakeSchema[$name])) {
+                        $parent[$name] = $fakeSchema[$name];
                     }
                 }
             }
diff --git a/src/Preparator/Error400BadTypesPreparator.php b/src/Preparator/Error400BadTypesPreparator.php
index 8092cfb..142654f 100644
--- a/src/Preparator/Error400BadTypesPreparator.php
+++ b/src/Preparator/Error400BadTypesPreparator.php
@@ -136,6 +136,6 @@ private function getSchemaExample(string $type)
 
     private function isAllowedType(string $passedType, string $testedType): bool
     {
-        return $passedType === $testedType || (self::NUMBER_TYPE === $passedType && self::INTEGER_TYPE === $testedType);
+        return $passedType === $testedType || ($passedType === self::NUMBER_TYPE && $testedType === self::INTEGER_TYPE);
     }
 }