docs: def validate(self, value, validator):
          """Validates and returns the value.
  
          If the value does not validate against the schema, SchemaValidationError
          will be raised.
  
          :param value: A value to validate (usually a dict).
          :param validator: An instance of a jsonschema validator class, as
              created by Schema.get_validator().
          :returns: the passed value.
          :raises SchemaValidationError:
          :raises Exception:
          """
          try:
              validator.validate(value)
          except Exception as e:
              logging.debug(e, exc_info=e)
              if isinstance(e, DoctorError):
                  raise
              else:
                  # Gather all the validation errors
                  validation_errors = sorted(
                      validator.iter_errors(value), key=lambda e: e.path)
                  errors = {}
                  for error in validation_errors:
                      try:
                          key = error.path[0]
                      except IndexError:
                          key = '_other'
                      errors[key] = error.args[0]
                  raise SchemaValidationError(e.args[0], errors=errors)
          return value