if (!utils.isObject(relation)) {
          throw new errors.IllegalArgumentError(errorPrefix + modelName + '.relations.hasOne.' + relationModelName + ': Must be an object!', { actual: typeof relation, expected: 'object' });
        } else if ('localField' in relation && !utils.isString(relation.localField)) {
          throw new errors.IllegalArgumentError(errorPrefix + modelName + '.relations.hasOne.' + relationModelName + '.localField: Must be a string!', { actual: typeof relation.localField, expected: 'string' });
        } else if ('foreignKey' in relation && !utils.isString(relation.foreignKey)) {