code: def field2property(self, field):
          
          ret = {}
  
          for attr_func in (
              self.field2type_and_format,
              self.field2default,
              self.field2choices,
              self.field2read_only,
              self.field2write_only,
              self.field2nullable,
              self.field2range,
              self.field2length,
              self.field2pattern,
              self.metadata2properties,
          ):
              ret.update(attr_func(field))
  
          if isinstance(field, marshmallow.fields.Nested):
              del ret["type"]
              schema_dict = self.resolve_nested_schema(field.schema)
              if ret and "$ref" in schema_dict:
                  ret.update({"allOf": [schema_dict]})
              else:
                  ret.update(schema_dict)
          elif isinstance(field, marshmallow.fields.List):
              ret["items"] = self.field2property(field.container)
          elif isinstance(field, marshmallow.fields.Dict):
              if MARSHMALLOW_VERSION_INFO[0] >= 3:
                  if field.value_container:
                      ret["additionalProperties"] = self.field2property(
                          field.value_container
                      )
  
          return ret
docs: Return the JSON Schema property definition given a marshmallow
          :class:`Field <marshmallow.fields.Field>`.
  
          Will include field metadata that are valid properties of OpenAPI schema objects
          (e.g. "description", "enum", "example").
  
          https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject
  
          :param Field field: A marshmallow field.
          :rtype: dict, a Property Object