code: def _perform_validation(self, path, value, results):
          
          name = path if path != None else "value"
          value = ObjectReader.get_value(value)
  
          super(MapSchema, self)._perform_validation(path, value, results)
  
          if value == None:
              return
  
          if isinstance(value, dict):
              for (key, value) in value.items():
                  element_path = key if path == None or len(path) == 0 else path + "." + key
  
                  self._perform_type_validation(element_path, self.key_type, key, results)
                  self._perform_type_validation(element_path, self.value_type, value, results)
          else:
              results.append(
                  ValidationResult(
                      path,
                      ValidationResultType.Error,
                      "VALUE_ISNOT_MAP",
                      name + " type is expected to be Map",
                      "Map",
                      type(value)
                  )
              )
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.