@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.
The parent of this node. If the return value is null, then this node is the root of the tree.
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.
If there are children, get the {@code i}th value indexed from 0.
How many children are there? If there is none, then this node represents a leaf node.
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.