public static FilterTermsTree convertExpresionItemsTree(final ExpressionOperator rootItem,
                                                            final Set<String> blackListedFieldNames) {
        final PrintableNode newRootNode = convertNode(rootItem, blackListedFieldNames);

        // we may have black listed all our terms and been left with a null root
        // node so handle that
        return newRootNode != null
                ? new FilterTermsTree(newRootNode)
                : FilterTermsTree.emptyTree();
    }
Converts a tree of {@link ExpressionItem} objects into a
{@link FilterTermsTree}. Conversion is not exact as some features of the
{@link ExpressionItem} tree are not supported so it may throw a
{@link RuntimeException}.

@param rootItem The {@link ExpressionItem} object that is the root of the tree
@return A {@link FilterTermsTree} object containing a tree of
{@link PrintableNode} objects
stroom-statistics/stroom-statistics-impl-sql/src/main/java/stroom/statistics/impl/sql/search/FilterTermsTreeBuilder.java