private int addValue(final List<AbstractToken> tokens,
                             final StringBuilder value,
                             final int start) {
            for (int i = start; i < tokens.size(); i++) {
                final AbstractToken token = tokens.get(i);
                if (TokenType.BETWEEN_AND.equals(token.getTokenType())) {
                    final String val = parseValueTokens(tokens.subList(start, i));
                    if (val != null) {
                        value.append(val);
                    }
                    return i;
                }
            }

            final String val = parseValueTokens(tokens.subList(start, tokens.size()));
            if (val != null) {
                value.append(val);
            }
            return tokens.size();
        }
@param isLenient Ignores any additional child tokens found. This is to support getting just
                 the data source from a partially written query, which is likely to not be
                 a valid query. For example, you may type
                 <pre>{@code from View sel}</pre> and at this point do code completion on 'sel'
                 so if this method is called it will treat 'sel as an extra child.
stroom-query/stroom-query-common/src/main/java/stroom/query/language/SearchRequestFactory.java