Item applyFilter(Item root, String filter, Language queryLanguage, IndexFacts.Session indexFacts) {
        setState(queryLanguage, indexFacts, null);
        tokenize(filter, null, indexFacts, queryLanguage);
        return filterItems(root);
    }
Returns the top level item resulting from combining the given top
level item and the new item. This implements most of the weird transformation
rules of the parser.
container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java