def add_entity_errors(
        self,
        property_name,
        direct_errors=None,
        schema_errors=None
    ):
        if direct_errors is None and schema_errors is None:
            return self
        if direct_errors is not None:
            if property_name not in self.errors:
                self.errors[property_name] = dict()
            if 'direct' not in self.errors[property_name]:
                self.errors[property_name]['direct'] = []
            if type(direct_errors) is not list:
                direct_errors = [direct_errors]
            for error in direct_errors:
                if not isinstance(error, Error):
                    err = 'Error must be of type {}'
                    raise x.InvalidErrorType(err.format(Error))
                self.errors[property_name]['direct'].append(error)
        if schema_errors is not None:
            if isinstance(schema_errors, Result):
                schema_errors = schema_errors.errors
            if not schema_errors:
                return self
            if property_name not in self.errors:
                self.errors[property_name] = dict()
            if 'schema' not in self.errors[property_name]:
                self.errors[property_name]['schema'] = schema_errors
            else:
                self.errors[property_name]['schema'] = self.merge_errors(
                    self.errors[property_name]['schema'],
                    schema_errors
                )
        return self