code: def construct_schema_validators(schema, context):
      
      validators = ValidationDict()
      if '$ref' in schema:
          validators.add_validator(
              '$ref', SchemaReferenceValidator(schema['$ref'], context),
          )
      if 'properties' in schema:
          for property_, property_schema in schema['properties'].items():
              property_validator = generate_object_validator(
                  schema=property_schema,
                  context=context,
              )
              validators.add_property_validator(property_, property_validator)
      if schema.get('additionalProperties') is False:
          validators.add_validator(
              'additionalProperties',
              generate_additional_properties_validator(context=context, **schema),
          )
      assert 'context' not in schema
      for key in schema:
          if key in validator_mapping:
              validators.add_validator(key, validator_mapping[key](context=context, **schema))
      return validators
docs: Given a schema object, construct a dictionary of validators needed to
      validate a response matching the given schema.
  
      Special Cases:
          - $ref:
              These validators need to be Lazily evaluating so that circular
              validation dependencies do not result in an infinitely deep
              validation chain.
          - properties:
              These validators are meant to apply to properties of the object
              being validated rather than the object itself.  In this case, we
              need recurse back into this function to generate a dictionary of
              validators for the property.