code: def validate(self, model=None, context=None):
          
  
          # inject with settings
          result = Result(translator=self.translator, locale=self.locale)
  
          # validate state
          state_result = self.validate_state(model, context=context)
          result.merge(state_result)
  
          # validate simple properties
          props_result = self.validate_properties(model, context=context)
          result.merge(props_result)
  
          # validate nested entity properties
          entities_result = self.validate_entities(model, context=context)
          result.merge(entities_result)
  
          # validate collection properties
          collections_result = self.validate_collections(model, context=context)
          result.merge(collections_result)
  
          # and return
          return result
docs: Validate model and return validation result object
          :param model:  object or dict
          :param context: object, dict or None
          :return: shiftschema.result.Result