class NodeOperationTree {

    private final Collection<NodeOperation> nodeOperations;
    private final ExecutionPhase leaf;

    public NodeOperationTree(Collection<NodeOperation> nodeOperations, ExecutionPhase leaf) {
        this.nodeOperations = nodeOperations;
        this.leaf = leaf;
    }

    /**
     * all NodeOperations (leaf is not included)
     */
    public Collection<NodeOperation> nodeOperations() {
        return nodeOperations;
    }

    /**
     * the final executionPhase which will provide the final result.
     */
    public ExecutionPhase leaf() {
        return leaf;
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}
}

        return "NodeOperationTree{" +
               "nodeOperations=" + nodeOperations +
               ", leaf=" + leaf +
               '}';
    
<no_super_class>