@Override
    public Object evaluate(Context context) {
        Deque<ValueItem> buf = new ArrayDeque<>();
        for (NodeItem item : items) {
            if ( buf.size() > 1) {
                while ((buf.peek().getOperator() >= item.operator)) {
                    combineValues(buf);
                }
            }
            buf.push(new LazyValueItem(item, context));
        }
        while (buf.size() > 1) {
            combineValues(buf);
        }
        return buf.pop().getResult();
    }
Combines the top two items of the given stack using the operator of the second.

@param buf The stack of bucket items.
document/src/main/java/com/yahoo/document/select/rule/LogicNode.java