public static void optimizeAndNot(Query query) {
        Item root = query.getModel().getQueryTree().getRoot();
        Item possibleNewRoot = optimizeAndNot(root);
        if (root != possibleNewRoot) {
            query.getModel().getQueryTree().setRoot(possibleNewRoot);
        }
    }
Optimize multiple NotItems under and or by collapsing them in to one and leaving
the positive ones behind in its place and moving itself with the original and as its positive item
and the union of all the negative items of all the original NotItems as its negative items.
container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java