'Tell the stream to start buffering if it hasn\'t already.  Return
current input position, index(), or some other marker so that
when passed to rewind() you get back to the same spot.
rewind(mark()) should not affect the input cursor.  The Lexer
track line/col info as well as input index so its markers are
not pure input indexes.  Same for tree node streams.'

def mark(self):

    raise NotImplementedError
