code: def _perform_validation(self, path, value, results):
          
          name = path if path != None else "value"
  
          if value == None:
              # Check for required values
              if self.required:
                  results.append(
                      ValidationResult(
                          path,
                          ValidationResultType.Error,
                          "VALUE_IS_NULL",
                          name + " cannot be null",
                          "NOT NULL",
                          None
                      )
                  )
          else:
              value = ObjectReader.get_value(value)
  
              # Check validation rules
              if self.rules != None:
                  for rule in self.rules:
                      rule.validate(path, self, value, results)
docs: Validates a given value against the schema and configured validation rules.
  
          :param path: a dot notation path to the value.
  
          :param value: a value to be validated.
  
          :param results: a list with validation results to add new results.