default boolean operateOnZOrderedSubtree(Point p, SubtreeOp op, boolean consumed) {
        Point screenPoint = convertParentPointToScreen(p);
        for (RedUINode n : getZOrderedSubtree(n -> true, false)) {
            Point relativePoint = n.convertScreenPointToParent(screenPoint); // Push point into n's parent's coordinate system
            consumed |= op.operate(n, relativePoint, consumed);
        }

        return consumed;
    }
Runs all nodes in the subtree through a given operation in descending Z order, prioritizing
nodes further from the root for equal Z positions. If order of operation is not important,
use {@link RedUINode#operateOnSubtree(Point, SubtreeOp, boolean)} to avoid unnecessary sorting.

@param p        The starting point, in this node's parent's coordinate space. This is converted to keep
                it relative to the node's parent that is being operated on
@param op       The function to operate on each node
@param consumed Initial consumed state. This is given to the operation function and will stay false
                until one of the operations returns true, at which point it will stay true for all subsequent nodes.
@return True if any operation has consumed this event (or if it was initially true to begin with)
core/src/main/java/mrtjp/projectred/redui/RedUINode.java