docs: def validate(self, obj, pointer=None):
          """
          Validate object against validator
  
          :param obj: the object to validate
          """
  
          pointer = pointer or '#'
  
          validator = deepcopy(self)
          validator.errors = []
          validator.fail_fast = False
  
          obj = deepcopy(obj)
          obj = validator.validate_enum(obj, pointer)
          obj = validator.validate_type(obj, pointer)
          obj = validator.validate_not(obj, pointer)
          obj = validator.validate_all_of(obj, pointer)
          obj = validator.validate_any_of(obj, pointer)
          obj = validator.validate_one_of(obj, pointer)
  
          if self.is_array(obj):
              obj = validator.validate_items(obj, pointer)
              obj = validator.validate_max_items(obj, pointer)
              obj = validator.validate_min_items(obj, pointer)
              obj = validator.validate_unique_items(obj, pointer)
          elif self.is_number(obj):
              obj = validator.validate_maximum(obj, pointer)
              obj = validator.validate_minimum(obj, pointer)
              obj = validator.validate_multiple_of(obj, pointer)
          elif self.is_object(obj):
              obj = validator.validate_required(obj, pointer)
              obj = validator.validate_max_properties(obj, pointer)
              obj = validator.validate_min_properties(obj, pointer)
              obj = validator.validate_dependencies(obj, pointer)
              obj = validator.validate_properties(obj, pointer)
              obj = validator.validate_default_properties(obj, pointer)
          elif self.is_string(obj):
              obj = validator.validate_max_length(obj, pointer)
              obj = validator.validate_min_length(obj, pointer)
              obj = validator.validate_pattern(obj, pointer)
              obj = validator.validate_format(obj, pointer)
  
          if validator.errors:
              raise ValidationError('multiple errors',
                                    obj,
                                    errors=validator.errors)
  
          return obj