Superclass of the various types of pattern element, and of
ConstraintGroup. Inherits from Matcher, providing matches and reset.
Provides access to the annotations that are cached by subclasses, and
multilevel rollback of those caches. Stores the match history.
Match history stack, for use in rollback. In BasicPatternElements
the objects on the stack are Integers giving the number of annots that
were cached at that point in the history. In ComplexPatternElements
the objects are Integers giving the number of times the component
ConstraintGroup was successfully matched. In ConstraintGroups the
elements are arrays representing conjunctions of PatternElement that
succeeded at that point in the history.
Cloning for processing of macro references. Note that it doesn't
really clone the match history, just set it to a new Stack. This is
because a) JGL doesn't have real clone methods and b) we don't
actually need it anywhere but during parsing the .jape, where there
is no match history yet.