reset method
Implementation
void reset([bool resetInput = false]) {
  // wacky Lexer state variables
  if (resetInput) {
    _input.seek(0); // rewind the input
  }
  _token = null;
  type = Token.INVALID_TYPE;
  channel = Token.DEFAULT_CHANNEL;
  tokenStartCharIndex = -1;
  tokenStartCharPositionInLine = -1;
  tokenStartLine = -1;
  _text = null;
  _hitEOF = false;
  mode_ = Lexer.DEFAULT_MODE;
  _modeStack.clear();
  interpreter?.reset();
}