private Column createColumn(final String id,
                                    final Expression expression,
                                    final String columnName,
                                    final Map<String, Sort> sortMap,
                                    final Map<String, Integer> groupMap,
                                    final Map<String, IncludeExcludeFilter> filterMap) {
            addedFields.add(columnName);
            final String expressionString = expression.toString();
            return Column.builder()
                    .id(id)
                    .name(columnName)
                    .expression(expressionString)
                    .sort(sortMap.get(columnName))
                    .group(groupMap.get(columnName))
                    .filter(filterMap.get(columnName))
                    .visible(true)
                    .special(false)
                    .build();
        }
@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