@uml Return an {@link Interval} indicating the index in the {@link TokenStream} of the first and last token associated with this subtree. If this node is a leaf, then the interval represents a single token and has interval i..i for token index i.
@uml The parent of this node. If the return value is null, then this node is the root of the tree.
@uml This method returns whatever object represents the data at this note. For example, for parse trees, the payload can be a {@link Token} representing a leaf node or a {@link RuleContext} object representing a rule invocation. For abstract syntax trees (ASTs), this is a {@link Token} object.
@uml If there are children, get the {@code i}th value indexed from 0.
@uml How many children are there? If there is none, then this node represents a leaf node.
@uml Print out a whole tree, not just a node, in LISP format {@code (root child1 .. childN)}. Print just a node if this is a leaf.
TODO add interface description @uml A tree that knows about an interval in a token stream is some kind of syntax tree. Subinterfaces distinguish between parse trees and other kinds of syntax trees we might want to create.