'Reset the stream so that next call to index would return marker.
The marker will usually be index() but it doesn\'t have to be.  It\'s
just a marker to indicate what state the stream was in.  This is
essentially calling release() and seek().  If there are markers
created after this marker argument, this routine must unroll them
like a stack.  Assume the state the stream was in when this marker
was created.
If marker is None:
Rewind to the input position of the last marker.
Used currently only after a cyclic DFA and just
before starting a sem/syn predicate to get the
input position back to the start of the decision.
Do not "pop" the marker off the state.  mark(i)
and rewind(i) should balance still. It is
like invoking rewind(last marker) but it should not "pop"
the marker off.  It\'s like seek(last marker\'s input position).'

def rewind(self, marker=None):

    raise NotImplementedError
