public function denormalize($data, $class, $format = null, array $context = [])
 {
     if (empty($data)) {
         return null;
     }
     if (isset($data->{'$ref'})) {
         return new Reference($data->{'$ref'}, $context['rootSchema'] ?: null);
     }
     $object = new \Joli\Jane\OpenApi\Model\Operation();
     if (!isset($context['rootSchema'])) {
         $context['rootSchema'] = $object;
     }
     if (isset($data->{'tags'})) {
         $values_61 = [];
         foreach ($data->{'tags'} as $value_62) {
             $values_61[] = $value_62;
         }
         $object->setTags($values_61);
     }
     if (isset($data->{'summary'})) {
         $object->setSummary($data->{'summary'});
     }
     if (isset($data->{'description'})) {
         $object->setDescription($data->{'description'});
     }
     if (isset($data->{'externalDocs'})) {
         $object->setExternalDocs($this->serializer->deserialize($data->{'externalDocs'}, 'Joli\\Jane\\OpenApi\\Model\\ExternalDocs', 'raw', $context));
     }
     if (isset($data->{'operationId'})) {
         $object->setOperationId($data->{'operationId'});
     }
     if (isset($data->{'produces'})) {
         $values_63 = [];
         foreach ($data->{'produces'} as $value_64) {
             $values_63[] = $value_64;
         }
         $object->setProduces($values_63);
     }
     if (isset($data->{'consumes'})) {
         $values_65 = [];
         foreach ($data->{'consumes'} as $value_66) {
             $values_65[] = $value_66;
         }
         $object->setConsumes($values_65);
     }
     if (isset($data->{'parameters'})) {
         $values_67 = [];
         foreach ($data->{'parameters'} as $value_68) {
             $value_69 = $value_68;
             if (is_object($value_68) and isset($value_68->{'name'}) and (isset($value_68->{'in'}) and $value_68->{'in'} == 'body') and isset($value_68->{'schema'})) {
                 $value_69 = $this->serializer->deserialize($value_68, 'Joli\\Jane\\OpenApi\\Model\\BodyParameter', 'raw', $context);
             }
             if (is_object($value_68) and (isset($value_68->{'in'}) and $value_68->{'in'} == 'header') and isset($value_68->{'name'}) and (isset($value_68->{'type'}) and ($value_68->{'type'} == 'string' or $value_68->{'type'} == 'number' or $value_68->{'type'} == 'boolean' or $value_68->{'type'} == 'integer' or $value_68->{'type'} == 'array'))) {
                 $value_69 = $this->serializer->deserialize($value_68, 'Joli\\Jane\\OpenApi\\Model\\HeaderParameterSubSchema', 'raw', $context);
             }
             if (is_object($value_68) and (isset($value_68->{'in'}) and $value_68->{'in'} == 'formData') and isset($value_68->{'name'}) and (isset($value_68->{'type'}) and ($value_68->{'type'} == 'string' or $value_68->{'type'} == 'number' or $value_68->{'type'} == 'boolean' or $value_68->{'type'} == 'integer' or $value_68->{'type'} == 'array' or $value_68->{'type'} == 'file'))) {
                 $value_69 = $this->serializer->deserialize($value_68, 'Joli\\Jane\\OpenApi\\Model\\FormDataParameterSubSchema', 'raw', $context);
             }
             if (is_object($value_68) and (isset($value_68->{'in'}) and $value_68->{'in'} == 'query') and isset($value_68->{'name'}) and (isset($value_68->{'type'}) and ($value_68->{'type'} == 'string' or $value_68->{'type'} == 'number' or $value_68->{'type'} == 'boolean' or $value_68->{'type'} == 'integer' or $value_68->{'type'} == 'array'))) {
                 $value_69 = $this->serializer->deserialize($value_68, 'Joli\\Jane\\OpenApi\\Model\\QueryParameterSubSchema', 'raw', $context);
             }
             if (is_object($value_68) and (isset($value_68->{'required'}) and $value_68->{'required'} == '1') and (isset($value_68->{'in'}) and $value_68->{'in'} == 'path') and isset($value_68->{'name'}) and (isset($value_68->{'type'}) and ($value_68->{'type'} == 'string' or $value_68->{'type'} == 'number' or $value_68->{'type'} == 'boolean' or $value_68->{'type'} == 'integer' or $value_68->{'type'} == 'array'))) {
                 $value_69 = $this->serializer->deserialize($value_68, 'Joli\\Jane\\OpenApi\\Model\\PathParameterSubSchema', 'raw', $context);
             }
             if (is_object($value_68) and isset($value_68->{'$ref'})) {
                 $value_69 = $this->serializer->deserialize($value_68, 'Joli\\Jane\\OpenApi\\Model\\JsonReference', 'raw', $context);
             }
             $values_67[] = $value_69;
         }
         $object->setParameters($values_67);
     }
     if (isset($data->{'responses'})) {
         $values_70 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
         foreach ($data->{'responses'} as $key_72 => $value_71) {
             if (preg_match('/^([0-9]{3})$|^(default)$/', $key_72) && isset($value_71)) {
                 $value_73 = $value_71;
                 if (is_object($value_71) and isset($value_71->{'description'})) {
                     $value_73 = $this->serializer->deserialize($value_71, 'Joli\\Jane\\OpenApi\\Model\\Response', 'raw', $context);
                 }
                 if (is_object($value_71) and isset($value_71->{'$ref'})) {
                     $value_73 = $this->serializer->deserialize($value_71, 'Joli\\Jane\\OpenApi\\Model\\JsonReference', 'raw', $context);
                 }
                 $values_70[$key_72] = $value_73;
                 continue;
             }
             if (preg_match('/^x-/', $key_72) && isset($value_71)) {
                 $values_70[$key_72] = $value_71;
                 continue;
             }
         }
         $object->setResponses($values_70);
     }
     if (isset($data->{'schemes'})) {
         $values_74 = [];
         foreach ($data->{'schemes'} as $value_75) {
             $values_74[] = $value_75;
         }
         $object->setSchemes($values_74);
     }
     if (isset($data->{'deprecated'})) {
         $object->setDeprecated($data->{'deprecated'});
     }
     if (isset($data->{'security'})) {
         $values_76 = [];
         foreach ($data->{'security'} as $value_77) {
             $values_78 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
             foreach ($value_77 as $key_80 => $value_79) {
                 $values_81 = [];
                 foreach ($value_79 as $value_82) {
                     $values_81[] = $value_82;
                 }
                 $values_78[$key_80] = $values_81;
             }
             $values_76[] = $values_78;
         }
         $object->setSecurity($values_76);
     }
     return $object;
 }
 public function denormalize($data, $class, $format = null, array $context = [])
 {
     if (isset($data->{'$ref'})) {
         return new Reference($data->{'$ref'}, $context['rootSchema'] ?: null);
     }
     $object = new \Joli\Jane\OpenApi\Model\Operation();
     if (!isset($context['rootSchema'])) {
         $context['rootSchema'] = $object;
     }
     if (property_exists($data, 'tags')) {
         $values = [];
         foreach ($data->{'tags'} as $value) {
             $values[] = $value;
         }
         $object->setTags($values);
     }
     if (property_exists($data, 'summary')) {
         $object->setSummary($data->{'summary'});
     }
     if (property_exists($data, 'description')) {
         $object->setDescription($data->{'description'});
     }
     if (property_exists($data, 'externalDocs')) {
         $object->setExternalDocs($this->serializer->deserialize($data->{'externalDocs'}, 'Joli\\Jane\\OpenApi\\Model\\ExternalDocs', 'raw', $context));
     }
     if (property_exists($data, 'operationId')) {
         $object->setOperationId($data->{'operationId'});
     }
     if (property_exists($data, 'produces')) {
         $values_1 = [];
         foreach ($data->{'produces'} as $value_1) {
             $values_1[] = $value_1;
         }
         $object->setProduces($values_1);
     }
     if (property_exists($data, 'consumes')) {
         $values_2 = [];
         foreach ($data->{'consumes'} as $value_2) {
             $values_2[] = $value_2;
         }
         $object->setConsumes($values_2);
     }
     if (property_exists($data, 'parameters')) {
         $values_3 = [];
         foreach ($data->{'parameters'} as $value_3) {
             $value_4 = $value_3;
             if (is_object($value_3) and isset($value_3->{'name'}) and (isset($value_3->{'in'}) and $value_3->{'in'} == 'body') and isset($value_3->{'schema'})) {
                 $value_4 = $this->serializer->deserialize($value_3, 'Joli\\Jane\\OpenApi\\Model\\BodyParameter', 'raw', $context);
             }
             if (is_object($value_3) and (isset($value_3->{'in'}) and $value_3->{'in'} == 'header') and isset($value_3->{'name'}) and (isset($value_3->{'type'}) and ($value_3->{'type'} == 'string' or $value_3->{'type'} == 'number' or $value_3->{'type'} == 'boolean' or $value_3->{'type'} == 'integer' or $value_3->{'type'} == 'array'))) {
                 $value_4 = $this->serializer->deserialize($value_3, 'Joli\\Jane\\OpenApi\\Model\\HeaderParameterSubSchema', 'raw', $context);
             }
             if (is_object($value_3) and (isset($value_3->{'in'}) and $value_3->{'in'} == 'formData') and isset($value_3->{'name'}) and (isset($value_3->{'type'}) and ($value_3->{'type'} == 'string' or $value_3->{'type'} == 'number' or $value_3->{'type'} == 'boolean' or $value_3->{'type'} == 'integer' or $value_3->{'type'} == 'array' or $value_3->{'type'} == 'file'))) {
                 $value_4 = $this->serializer->deserialize($value_3, 'Joli\\Jane\\OpenApi\\Model\\FormDataParameterSubSchema', 'raw', $context);
             }
             if (is_object($value_3) and (isset($value_3->{'in'}) and $value_3->{'in'} == 'query') and isset($value_3->{'name'}) and (isset($value_3->{'type'}) and ($value_3->{'type'} == 'string' or $value_3->{'type'} == 'number' or $value_3->{'type'} == 'boolean' or $value_3->{'type'} == 'integer' or $value_3->{'type'} == 'array'))) {
                 $value_4 = $this->serializer->deserialize($value_3, 'Joli\\Jane\\OpenApi\\Model\\QueryParameterSubSchema', 'raw', $context);
             }
             if (is_object($value_3) and (isset($value_3->{'required'}) and $value_3->{'required'} == '1') and (isset($value_3->{'in'}) and $value_3->{'in'} == 'path') and isset($value_3->{'name'}) and (isset($value_3->{'type'}) and ($value_3->{'type'} == 'string' or $value_3->{'type'} == 'number' or $value_3->{'type'} == 'boolean' or $value_3->{'type'} == 'integer' or $value_3->{'type'} == 'array'))) {
                 $value_4 = $this->serializer->deserialize($value_3, 'Joli\\Jane\\OpenApi\\Model\\PathParameterSubSchema', 'raw', $context);
             }
             if (is_object($value_3) and isset($value_3->{'$ref'})) {
                 $value_4 = $this->serializer->deserialize($value_3, 'Joli\\Jane\\OpenApi\\Model\\JsonReference', 'raw', $context);
             }
             $values_3[] = $value_4;
         }
         $object->setParameters($values_3);
     }
     if (property_exists($data, 'responses')) {
         $values_4 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
         foreach ($data->{'responses'} as $key => $value_5) {
             if (preg_match('/^([0-9]{3})$|^(default)$/', $key) && isset($value_5)) {
                 $value_6 = $value_5;
                 if (is_object($value_5) and isset($value_5->{'description'})) {
                     $value_6 = $this->serializer->deserialize($value_5, 'Joli\\Jane\\OpenApi\\Model\\Response', 'raw', $context);
                 }
                 if (is_object($value_5) and isset($value_5->{'$ref'})) {
                     $value_6 = $this->serializer->deserialize($value_5, 'Joli\\Jane\\OpenApi\\Model\\JsonReference', 'raw', $context);
                 }
                 $values_4[$key] = $value_6;
                 continue;
             }
             if (preg_match('/^x-/', $key) && isset($value_5)) {
                 $values_4[$key] = $value_5;
                 continue;
             }
         }
         $object->setResponses($values_4);
     }
     if (property_exists($data, 'schemes')) {
         $values_5 = [];
         foreach ($data->{'schemes'} as $value_7) {
             $values_5[] = $value_7;
         }
         $object->setSchemes($values_5);
     }
     if (property_exists($data, 'deprecated')) {
         $object->setDeprecated($data->{'deprecated'});
     }
     if (property_exists($data, 'security')) {
         $values_6 = [];
         foreach ($data->{'security'} as $value_8) {
             $values_7 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
             foreach ($value_8 as $key_1 => $value_9) {
                 $values_8 = [];
                 foreach ($value_9 as $value_10) {
                     $values_8[] = $value_10;
                 }
                 $values_7[$key_1] = $values_8;
             }
             $values_6[] = $values_7;
         }
         $object->setSecurity($values_6);
     }
     return $object;
 }