public static function createWithField(
        $field,
        ServiceQueryBuilder $queryBuilder
    ) {
        $validationResult = QueryValidator::validateFieldName($field);
        if ($validationResult->isFailed()) {
            throw new InvalidArgumentException(
                'The field name for building the WHERE clause is invalid.' .
                ' Validation fail reason: ' .
                $validationResult->getFailReason()
            );
        }
        return new self($queryBuilder, new ExpressionBuilder($field));
    }