private String resolveParam(final FunctionGroup functionGroup) {
            if (functionGroup.getChildren().isEmpty()) {
                throw new TokenException(functionGroup, "Expected param name");
            } else if (functionGroup.getChildren().size() > 1) {
                throw new TokenException(functionGroup.getChildren().get(1), "Unexpected token");
            } else {
                final AbstractToken child = functionGroup.getChildren().getFirst();
                if (!TokenType.STRING.equals(child.getTokenType())) {
                    throw new TokenException(child, "Expected param name");
                }
                return paramMap.get(child.getUnescapedText());
            }
        }
@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