Tree(nodes: MutableList<Node>, treeGenerator: TreeGenerator)
Represents a program as a tree of nodes.
Internally, we keep a simple list of nodes that is the "program".