docs: def run(self, value, model=None, context=None):
          """
          Run validation
          Wraps concrete implementation to ensure custom validators return
          proper type of result.
  
          :param value:               a value to validate
          :param model:               parent model of the property
          :param context:             parent model or custom context
          :return:                    shiftschema.result.Error
          """
          res = self.validate(value, model, context)
          if not isinstance(res, Error):
              err = 'Validator "{}" result must be of type "{}", got "{}"'
              raise InvalidErrorType(err.format(
                  self.__class__.__name__,
                  Error,
                  type(res))
              )
  
          return res