parseUnit(EncodingErrorToken())
  skipErrorTokens(EncodingErrorToken())
  listener: beginCompilationUnit(/)
  syntheticPreviousToken(/)
  parseTopLevelDeclarationImpl(AsciiControlCharacterToken(0), Instance of 'DirectiveContext')
    parseMetadataStar(AsciiControlCharacterToken(0))
      listener: beginMetadataStar(/)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(/)
    parseInvalidTopLevelDeclaration(AsciiControlCharacterToken(0))
      reportRecoverableErrorWithToken(/, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '/'., null, {token: /}], /, /)
      listener: handleInvalidTopLevelDeclaration(/)
  listener: endTopLevelDeclaration(/)
  parseTopLevelDeclarationImpl(/, Instance of 'DirectiveContext')
    parseMetadataStar(/)
      listener: beginMetadataStar(/)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(/)
    parseInvalidTopLevelDeclaration(/)
      reportRecoverableErrorWithToken(/, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '/'., null, {token: /}], /, /)
      listener: handleInvalidTopLevelDeclaration(/)
  listener: endTopLevelDeclaration(C)
  parseTopLevelDeclarationImpl(/, Instance of 'DirectiveContext')
    parseMetadataStar(/)
      listener: beginMetadataStar(C)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(/)
      listener: beginTopLevelMember(C)
      parseFields(/, null, null, null, null, null, null, /, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
        listener: beginFields(/)
        listener: handleIdentifier(C, typeReference)
        listener: handleNoTypeArguments(o)
        listener: handleType(C, null)
        ensureIdentifierPotentiallyRecovered(C, topLevelVariableDeclaration, false)
          listener: handleIdentifier(o, topLevelVariableDeclaration)
        parseFieldInitializerOpt(o, o, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(p)
        ensureSemicolon(o)
          reportRecoverableError(o, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], o, o)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, C, ;)
  listener: endTopLevelDeclaration(p)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(p)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(p)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', y, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(p, typeReference)
        listener: handleNoTypeArguments(y)
        listener: handleType(p, null)
        ensureIdentifierPotentiallyRecovered(p, topLevelVariableDeclaration, false)
          listener: handleIdentifier(y, topLevelVariableDeclaration)
        parseFieldInitializerOpt(y, y, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(r)
        ensureSemicolon(y)
          reportRecoverableError(y, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], y, y)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, p, ;)
  listener: endTopLevelDeclaration(r)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(r)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(r)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(r, typeReference)
        listener: handleNoTypeArguments(i)
        listener: handleType(r, null)
        ensureIdentifierPotentiallyRecovered(r, topLevelVariableDeclaration, false)
          listener: handleIdentifier(i, topLevelVariableDeclaration)
        parseFieldInitializerOpt(i, i, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(g)
        ensureSemicolon(i)
          reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, r, ;)
  listener: endTopLevelDeclaration(g)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(g)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(g)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(g, typeReference)
        listener: handleNoTypeArguments(h)
        listener: handleType(g, null)
        ensureIdentifierPotentiallyRecovered(g, topLevelVariableDeclaration, false)
          listener: handleIdentifier(h, topLevelVariableDeclaration)
        parseFieldInitializerOpt(h, h, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(t)
        ensureSemicolon(h)
          reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, g, ;)
  listener: endTopLevelDeclaration(t)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(t)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(t)
      isReservedKeyword(()
      parseTopLevelMethod(;, null, ;, Instance of 'NoType', null, t, false)
        listener: beginTopLevelMethod(;, null)
        listener: handleNoType(;)
        ensureIdentifierPotentiallyRecovered(;, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(t, topLevelFunctionDeclaration)
        parseMethodTypeVar(t)
          listener: handleNoTypeVariables(()
        parseGetterOrFormalParameters(t, t, false, MemberKind.TopLevelMethod)
          parseFormalParameters(t, MemberKind.TopLevelMethod)
            parseFormalParametersRest((, MemberKind.TopLevelMethod)
              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
                parseMetadataStar(()
                  listener: beginMetadataStar(c)
                  listener: endMetadataStar(0)
                listener: beginFormalParameter(c, MemberKind.TopLevelMethod, null, null, null)
                listener: handleNoType(()
                ensureIdentifier((, formalParameterDeclaration)
                  listener: handleIdentifier(c, formalParameterDeclaration)
                listener: handleFormalParameterWithoutValue())
                listener: endFormalParameter(null, null, c, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          ensureBlock(), Instance of 'Template<(Token) => Message>', null)
            reportRecoverableError(2, Message[ExpectedFunctionBody, Expected a function body, but got '2'., null, {token: 2}])
              listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '2'., null, {token: 2}], 2, 2)
            insertBlock())
              rewriter()
              rewriter()
          listener: handleInvalidFunctionBody({)
        listener: endTopLevelMethod(t, null, })
  listener: endTopLevelDeclaration(2)
  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
    parseMetadataStar(})
      listener: beginMetadataStar(2)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(2)
    parseInvalidTopLevelDeclaration(})
      reportRecoverableErrorWithToken(2, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '2'., null, {token: 2}], 2, 2)
      listener: handleInvalidTopLevelDeclaration(2)
  listener: endTopLevelDeclaration(0)
  parseTopLevelDeclarationImpl(2, Instance of 'DirectiveContext')
    parseMetadataStar(2)
      listener: beginMetadataStar(0)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(0)
    parseInvalidTopLevelDeclaration(2)
      reportRecoverableErrorWithToken(0, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '0'., null, {token: 0}], 0, 0)
      listener: handleInvalidTopLevelDeclaration(0)
  listener: endTopLevelDeclaration(2)
  parseTopLevelDeclarationImpl(0, Instance of 'DirectiveContext')
    parseMetadataStar(0)
      listener: beginMetadataStar(2)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(2)
    parseInvalidTopLevelDeclaration(0)
      reportRecoverableErrorWithToken(2, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '2'., null, {token: 2}], 2, 2)
      listener: handleInvalidTopLevelDeclaration(2)
  listener: endTopLevelDeclaration(0)
  parseTopLevelDeclarationImpl(2, Instance of 'DirectiveContext')
    parseMetadataStar(2)
      listener: beginMetadataStar(0)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(0)
    parseInvalidTopLevelDeclaration(2)
      reportRecoverableErrorWithToken(0, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '0'., null, {token: 0}], 0, 0)
      listener: handleInvalidTopLevelDeclaration(0)
  listener: endTopLevelDeclaration(,)
  parseTopLevelDeclarationImpl(0, Instance of 'DirectiveContext')
    parseMetadataStar(0)
      listener: beginMetadataStar(,)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(,)
    parseInvalidTopLevelDeclaration(0)
      reportRecoverableErrorWithToken(,, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got ','., null, {token: ,}], ,, ,)
      listener: handleInvalidTopLevelDeclaration(,)
  listener: endTopLevelDeclaration(t)
  parseTopLevelDeclarationImpl(,, Instance of 'DirectiveContext')
    parseMetadataStar(,)
      listener: beginMetadataStar(t)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(,)
      listener: beginTopLevelMember(t)
      parseFields(,, null, null, null, null, null, null, ,, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
        listener: beginFields(,)
        listener: handleIdentifier(t, typeReference)
        listener: handleNoTypeArguments(h)
        listener: handleType(t, null)
        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
          listener: handleIdentifier(h, topLevelVariableDeclaration)
        parseFieldInitializerOpt(h, h, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(h)
          reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', D, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(D)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(D, topLevelVariableDeclaration)
        parseFieldInitializerOpt(D, D, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(a)
        ensureSemicolon(D)
          reportRecoverableError(D, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], D, D)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(a)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(a)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(a)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(a, typeReference)
        listener: handleNoTypeArguments(r)
        listener: handleType(a, null)
        ensureIdentifierPotentiallyRecovered(a, topLevelVariableDeclaration, false)
          listener: handleIdentifier(r, topLevelVariableDeclaration)
        parseFieldInitializerOpt(r, r, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(t)
        ensureSemicolon(r)
          reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
  listener: endTopLevelDeclaration(t)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(t)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(t)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', p, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(t, typeReference)
        listener: handleNoTypeArguments(p)
        listener: handleType(t, null)
        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
          listener: handleIdentifier(p, topLevelVariableDeclaration)
        parseFieldInitializerOpt(p, p, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(r)
        ensureSemicolon(p)
          reportRecoverableError(p, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], p, p)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
  listener: endTopLevelDeclaration(r)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(r)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(r)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(r, typeReference)
        listener: handleNoTypeArguments(o)
        listener: handleType(r, null)
        ensureIdentifierPotentiallyRecovered(r, topLevelVariableDeclaration, false)
          listener: handleIdentifier(o, topLevelVariableDeclaration)
        parseFieldInitializerOpt(o, o, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(j)
        ensureSemicolon(o)
          reportRecoverableError(o, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], o, o)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, r, ;)
  listener: endTopLevelDeclaration(j)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(j)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(j)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(j, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(j, null)
        ensureIdentifierPotentiallyRecovered(j, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(c)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, j, ;)
  listener: endTopLevelDeclaration(c)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(c)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(c)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(c, typeReference)
        listener: handleNoTypeArguments(t)
        listener: handleType(c, null)
        ensureIdentifierPotentiallyRecovered(c, topLevelVariableDeclaration, false)
          listener: handleIdentifier(t, topLevelVariableDeclaration)
        parseFieldInitializerOpt(t, t, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(a)
        ensureSemicolon(t)
          reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, c, ;)
  listener: endTopLevelDeclaration(a)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(a)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(a)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(a, typeReference)
        listener: handleNoTypeArguments(u)
        listener: handleType(a, null)
        ensureIdentifierPotentiallyRecovered(a, topLevelVariableDeclaration, false)
          listener: handleIdentifier(u, topLevelVariableDeclaration)
        parseFieldInitializerOpt(u, u, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(t)
        ensureSemicolon(u)
          reportRecoverableError(u, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], u, u)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
  listener: endTopLevelDeclaration(t)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(t)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(t)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(t, typeReference)
        listener: handleNoTypeArguments(h)
        listener: handleType(t, null)
        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
          listener: handleIdentifier(h, topLevelVariableDeclaration)
        parseFieldInitializerOpt(h, h, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(o)
        ensureSemicolon(h)
          reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
  listener: endTopLevelDeclaration(o)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(o)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(o)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(o, typeReference)
        listener: handleNoTypeArguments(r)
        listener: handleType(o, null)
        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
          listener: handleIdentifier(r, topLevelVariableDeclaration)
        parseFieldInitializerOpt(r, r, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(r)
          reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'PrefixedType', l, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, prefixedTypeReference)
        listener: handleIdentifier(P, typeReferenceContinuation)
        listener: handleQualified(.)
        listener: handleNoTypeArguments(l)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(P, topLevelVariableDeclaration, false)
          listener: handleIdentifier(l, topLevelVariableDeclaration)
        parseFieldInitializerOpt(l, l, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(l)
          reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(a)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(a)
          reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(t)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(t, topLevelVariableDeclaration)
        parseFieldInitializerOpt(t, t, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(h)
        ensureSemicolon(t)
          reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(h)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(h)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(h)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(h, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(h, null)
        ensureIdentifierPotentiallyRecovered(h, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(A)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, h, ;)
  listener: endTopLevelDeclaration(A)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(A)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(A)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', U, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(A, typeReference)
        listener: handleNoTypeArguments(U)
        listener: handleType(A, null)
        ensureIdentifierPotentiallyRecovered(A, topLevelVariableDeclaration, false)
          listener: handleIdentifier(U, topLevelVariableDeclaration)
        parseFieldInitializerOpt(U, U, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(T)
        ensureSemicolon(U)
          reportRecoverableError(U, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], U, U)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, A, ;)
  listener: endTopLevelDeclaration(T)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(T)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(T)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', H, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(T, typeReference)
        listener: handleNoTypeArguments(H)
        listener: handleType(T, null)
        ensureIdentifierPotentiallyRecovered(T, topLevelVariableDeclaration, false)
          listener: handleIdentifier(H, topLevelVariableDeclaration)
        parseFieldInitializerOpt(H, H, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(O)
        ensureSemicolon(H)
          reportRecoverableError(H, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], H, H)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, T, ;)
  listener: endTopLevelDeclaration(O)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(O)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(O)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', R, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(O, typeReference)
        listener: handleNoTypeArguments(R)
        listener: handleType(O, null)
        ensureIdentifierPotentiallyRecovered(O, topLevelVariableDeclaration, false)
          listener: handleIdentifier(R, topLevelVariableDeclaration)
        parseFieldInitializerOpt(R, R, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(S)
        ensureSemicolon(R)
          reportRecoverableError(R, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], R, R)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, O, ;)
  listener: endTopLevelDeclaration(S)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(S)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(S)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', f, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(S, typeReference)
        listener: handleNoTypeArguments(f)
        listener: handleType(S, null)
        ensureIdentifierPotentiallyRecovered(S, topLevelVariableDeclaration, false)
          listener: handleIdentifier(f, topLevelVariableDeclaration)
        parseFieldInitializerOpt(f, f, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(i)
        ensureSemicolon(f)
          reportRecoverableError(f, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], f, f)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, S, ;)
  listener: endTopLevelDeclaration(i)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(i)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(i)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(i, typeReference)
        listener: handleNoTypeArguments(l)
        listener: handleType(i, null)
        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
          listener: handleIdentifier(l, topLevelVariableDeclaration)
        parseFieldInitializerOpt(l, l, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(l)
          reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      isReservedKeyword(/)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'NoType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        reportRecoverableError(e, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, e, e)
        listener: handleNoType(;)
        ensureIdentifierPotentiallyRecovered(;, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(/)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(/)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(/)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(/)
    parseInvalidTopLevelDeclaration(;)
      reportRecoverableErrorWithToken(/, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '/'., null, {token: /}], /, /)
      listener: handleInvalidTopLevelDeclaration(/)
  listener: endTopLevelDeclaration(/)
  parseTopLevelDeclarationImpl(/, Instance of 'DirectiveContext')
    parseMetadataStar(/)
      listener: beginMetadataStar(/)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(/)
    parseInvalidTopLevelDeclaration(/)
      reportRecoverableErrorWithToken(/, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '/'., null, {token: /}], /, /)
      listener: handleInvalidTopLevelDeclaration(/)
  listener: endTopLevelDeclaration(f)
  parseTopLevelDeclarationImpl(/, Instance of 'DirectiveContext')
    parseMetadataStar(/)
      listener: beginMetadataStar(f)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(/)
      listener: beginTopLevelMember(f)
      parseFields(/, null, null, null, null, null, null, /, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
        listener: beginFields(/)
        listener: handleIdentifier(f, typeReference)
        listener: handleNoTypeArguments(o)
        listener: handleType(f, null)
        ensureIdentifierPotentiallyRecovered(f, topLevelVariableDeclaration, false)
          listener: handleIdentifier(o, topLevelVariableDeclaration)
        parseFieldInitializerOpt(o, o, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(r)
        ensureSemicolon(o)
          reportRecoverableError(o, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], o, o)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, f, ;)
  listener: endTopLevelDeclaration(r)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(r)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(r)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(r, typeReference)
        listener: handleNoTypeArguments(d)
        listener: handleType(r, null)
        ensureIdentifierPotentiallyRecovered(r, topLevelVariableDeclaration, false)
          listener: handleIdentifier(d, topLevelVariableDeclaration)
        parseFieldInitializerOpt(d, d, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(d)
          reportRecoverableError(d, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], d, d)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, r, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(t)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(t, topLevelVariableDeclaration)
        parseFieldInitializerOpt(t, t, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(a)
        ensureSemicolon(t)
          reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(a)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(a)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(a)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(a, typeReference)
        listener: handleNoTypeArguments(i)
        listener: handleType(a, null)
        ensureIdentifierPotentiallyRecovered(a, topLevelVariableDeclaration, false)
          listener: handleIdentifier(i, topLevelVariableDeclaration)
        parseFieldInitializerOpt(i, i, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(l)
        ensureSemicolon(i)
          reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
  listener: endTopLevelDeclaration(l)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(l)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(l)
      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, s, false)
        listener: beginTopLevelMethod(;, null)
        listener: handleIdentifier(l, typeReference)
        listener: handleNoTypeArguments(s)
        listener: handleType(l, null)
        ensureIdentifierPotentiallyRecovered(l, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(s, topLevelFunctionDeclaration)
        parseMethodTypeVar(s)
          listener: handleNoTypeVariables(.)
        parseGetterOrFormalParameters(s, s, false, MemberKind.TopLevelMethod)
          missingParameterMessage(MemberKind.TopLevelMethod)
          reportRecoverableError(s, MissingFunctionParameters)
            listener: handleRecoverableError(MissingFunctionParameters, s, s)
          rewriter()
          parseFormalParametersRest((, MemberKind.TopLevelMethod)
            listener: beginFormalParameters((, MemberKind.TopLevelMethod)
            listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          ensureBlock(), Instance of 'Template<(Token) => Message>', null)
            reportRecoverableError(., Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}])
              listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}], ., .)
            insertBlock())
              rewriter()
              rewriter()
          listener: handleInvalidFunctionBody({)
        listener: endTopLevelMethod(l, null, })
  listener: endTopLevelDeclaration(.)
  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
    parseMetadataStar(})
      listener: beginMetadataStar(.)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(.)
    parseInvalidTopLevelDeclaration(})
      reportRecoverableErrorWithToken(., Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '.'., null, {token: .}], ., .)
      listener: handleInvalidTopLevelDeclaration(.)
  listener: endTopLevelDeclaration(A)
  parseTopLevelDeclarationImpl(., Instance of 'DirectiveContext')
    parseMetadataStar(.)
      listener: beginMetadataStar(A)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(.)
      listener: beginTopLevelMember(A)
      parseFields(., null, null, null, null, null, null, ., Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
        listener: beginFields(.)
        listener: handleIdentifier(A, typeReference)
        listener: handleNoTypeArguments(l)
        listener: handleType(A, null)
        ensureIdentifierPotentiallyRecovered(A, topLevelVariableDeclaration, false)
          listener: handleIdentifier(l, topLevelVariableDeclaration)
        parseFieldInitializerOpt(l, l, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(l)
        ensureSemicolon(l)
          reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, A, ;)
  listener: endTopLevelDeclaration(l)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(l)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(l)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(l, typeReference)
        listener: handleNoTypeArguments(r)
        listener: handleType(l, null)
        ensureIdentifierPotentiallyRecovered(l, topLevelVariableDeclaration, false)
          listener: handleIdentifier(r, topLevelVariableDeclaration)
        parseFieldInitializerOpt(r, r, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(i)
        ensureSemicolon(r)
          reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, l, ;)
  listener: endTopLevelDeclaration(i)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(i)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(i)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', g, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(i, typeReference)
        listener: handleNoTypeArguments(g)
        listener: handleType(i, null)
        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
          listener: handleIdentifier(g, topLevelVariableDeclaration)
        parseFieldInitializerOpt(g, g, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(h)
        ensureSemicolon(g)
          reportRecoverableError(g, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], g, g)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
  listener: endTopLevelDeclaration(h)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(h)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(h)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(h, typeReference)
        listener: handleNoTypeArguments(t)
        listener: handleType(h, null)
        ensureIdentifierPotentiallyRecovered(h, topLevelVariableDeclaration, false)
          listener: handleIdentifier(t, topLevelVariableDeclaration)
        parseFieldInitializerOpt(t, t, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(t)
          reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, h, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(r)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(r, topLevelVariableDeclaration)
        parseFieldInitializerOpt(r, r, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(r)
          reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(s)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(s, topLevelVariableDeclaration)
        parseFieldInitializerOpt(s, s, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(s)
          reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(r)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(r, topLevelVariableDeclaration)
        parseFieldInitializerOpt(r, r, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(v)
        ensureSemicolon(r)
          reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(v)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(v)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(v)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(v, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(v, null)
        ensureIdentifierPotentiallyRecovered(v, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(d)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, v, ;)
  listener: endTopLevelDeclaration(d)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(d)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(d)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'PrefixedType', s, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(d, prefixedTypeReference)
        listener: handleIdentifier(U, typeReferenceContinuation)
        listener: handleQualified(.)
        listener: handleNoTypeArguments(s)
        listener: handleType(d, null)
        ensureIdentifierPotentiallyRecovered(U, topLevelVariableDeclaration, false)
          listener: handleIdentifier(s, topLevelVariableDeclaration)
        parseFieldInitializerOpt(s, s, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(s)
          reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, d, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', o, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(o)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(o, topLevelVariableDeclaration)
        parseFieldInitializerOpt(o, o, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(f)
        ensureSemicolon(o)
          reportRecoverableError(o, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], o, o)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(f)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(f)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(f)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(f, typeReference)
        listener: handleNoTypeArguments(t)
        listener: handleType(f, null)
        ensureIdentifierPotentiallyRecovered(f, topLevelVariableDeclaration, false)
          listener: handleIdentifier(t, topLevelVariableDeclaration)
        parseFieldInitializerOpt(t, t, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(h)
        ensureSemicolon(t)
          reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, f, ;)
  listener: endTopLevelDeclaration(h)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(h)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(h)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(h, typeReference)
        listener: handleNoTypeArguments(i)
        listener: handleType(h, null)
        ensureIdentifierPotentiallyRecovered(h, topLevelVariableDeclaration, false)
          listener: handleIdentifier(i, topLevelVariableDeclaration)
        parseFieldInitializerOpt(i, i, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(i)
          reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, h, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(s)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(s, topLevelVariableDeclaration)
        parseFieldInitializerOpt(s, s, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(o)
        ensureSemicolon(s)
          reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(o)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(o)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(o)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(o, typeReference)
        listener: handleNoTypeArguments(u)
        listener: handleType(o, null)
        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
          listener: handleIdentifier(u, topLevelVariableDeclaration)
        parseFieldInitializerOpt(u, u, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(r)
        ensureSemicolon(u)
          reportRecoverableError(u, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], u, u)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
  listener: endTopLevelDeclaration(r)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(r)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(r)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(r, typeReference)
        listener: handleNoTypeArguments(c)
        listener: handleType(r, null)
        ensureIdentifierPotentiallyRecovered(r, topLevelVariableDeclaration, false)
          listener: handleIdentifier(c, topLevelVariableDeclaration)
        parseFieldInitializerOpt(c, c, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(c)
          reportRecoverableError(c, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], c, c)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, r, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(c)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(c, topLevelVariableDeclaration)
        parseFieldInitializerOpt(c, c, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(o)
        ensureSemicolon(c)
          reportRecoverableError(c, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], c, c)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(o)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(o)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(o)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(o, typeReference)
        listener: handleNoTypeArguments(d)
        listener: handleType(o, null)
        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
          listener: handleIdentifier(d, topLevelVariableDeclaration)
        parseFieldInitializerOpt(d, d, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(d)
          reportRecoverableError(d, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], d, d)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(i)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(i, topLevelVariableDeclaration)
        parseFieldInitializerOpt(i, i, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(i)
          reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', g, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(g)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(g, topLevelVariableDeclaration)
        parseFieldInitializerOpt(g, g, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(o)
        ensureSemicolon(g)
          reportRecoverableError(g, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], g, g)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(o)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(o)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(o)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', v, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(o, typeReference)
        listener: handleNoTypeArguments(v)
        listener: handleType(o, null)
        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
          listener: handleIdentifier(v, topLevelVariableDeclaration)
        parseFieldInitializerOpt(v, v, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(v)
          reportRecoverableError(v, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], v, v)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', r, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(r)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(r, topLevelVariableDeclaration)
        parseFieldInitializerOpt(r, r, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(n)
        ensureSemicolon(r)
          reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(n)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(n)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(n)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(n, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(n, null)
        ensureIdentifierPotentiallyRecovered(n, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(d)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, n, ;)
  listener: endTopLevelDeclaration(d)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(d)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(d)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', b, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(d, typeReference)
        listener: handleNoTypeArguments(b)
        listener: handleType(d, null)
        ensureIdentifierPotentiallyRecovered(d, topLevelVariableDeclaration, false)
          listener: handleIdentifier(b, topLevelVariableDeclaration)
        parseFieldInitializerOpt(b, b, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(y)
        ensureSemicolon(b)
          reportRecoverableError(b, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], b, b)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, d, ;)
  listener: endTopLevelDeclaration(y)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(y)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(y)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(y, typeReference)
        listener: handleNoTypeArguments(a)
        listener: handleType(y, null)
        ensureIdentifierPotentiallyRecovered(y, topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(/)
        ensureSemicolon(a)
          reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, y, ;)
  listener: endTopLevelDeclaration(/)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(/)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(/)
    parseInvalidTopLevelDeclaration(;)
      reportRecoverableErrorWithToken(/, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '/'., null, {token: /}], /, /)
      listener: handleInvalidTopLevelDeclaration(/)
  listener: endTopLevelDeclaration(/)
  parseTopLevelDeclarationImpl(/, Instance of 'DirectiveContext')
    parseMetadataStar(/)
      listener: beginMetadataStar(/)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(/)
    parseInvalidTopLevelDeclaration(/)
      reportRecoverableErrorWithToken(/, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '/'., null, {token: /}], /, /)
      listener: handleInvalidTopLevelDeclaration(/)
  listener: endTopLevelDeclaration(B)
  parseTopLevelDeclarationImpl(/, Instance of 'DirectiveContext')
    parseMetadataStar(/)
      listener: beginMetadataStar(B)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(/)
      listener: beginTopLevelMember(B)
      parseFields(/, null, null, null, null, null, null, /, Instance of 'SimpleType', S, DeclarationKind.TopLevel, null, false)
        listener: beginFields(/)
        listener: handleIdentifier(B, typeReference)
        listener: handleNoTypeArguments(S)
        listener: handleType(B, null)
        ensureIdentifierPotentiallyRecovered(B, topLevelVariableDeclaration, false)
          listener: handleIdentifier(S, topLevelVariableDeclaration)
        parseFieldInitializerOpt(S, S, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(D)
        ensureSemicolon(S)
          reportRecoverableError(S, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], S, S)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, B, ;)
  listener: endTopLevelDeclaration(D)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(D)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(D)
      isReservedKeyword(-)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'NoType', D, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        reportRecoverableError(D, MissingConstFinalVarOrType)
          listener: handleRecoverableError(MissingConstFinalVarOrType, D, D)
        listener: handleNoType(;)
        ensureIdentifierPotentiallyRecovered(;, topLevelVariableDeclaration, false)
          listener: handleIdentifier(D, topLevelVariableDeclaration)
        parseFieldInitializerOpt(D, D, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(-)
        ensureSemicolon(D)
          reportRecoverableError(D, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], D, D)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, D, ;)
  listener: endTopLevelDeclaration(-)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(-)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(-)
    parseInvalidTopLevelDeclaration(;)
      reportRecoverableErrorWithToken(-, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '-'., null, {token: -}], -, -)
      listener: handleInvalidTopLevelDeclaration(-)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(-, Instance of 'DirectiveContext')
    parseMetadataStar(-)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(-)
      listener: beginTopLevelMember(s)
      parseFields(-, null, null, null, null, null, null, -, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
        listener: beginFields(-)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(t)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(t, topLevelVariableDeclaration)
        parseFieldInitializerOpt(t, t, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(y)
        ensureSemicolon(t)
          reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(y)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(y)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(y)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(y, typeReference)
        listener: handleNoTypeArguments(l)
        listener: handleType(y, null)
        ensureIdentifierPotentiallyRecovered(y, topLevelVariableDeclaration, false)
          listener: handleIdentifier(l, topLevelVariableDeclaration)
        parseFieldInitializerOpt(l, l, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(l)
          reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, y, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', l, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(l)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(l, topLevelVariableDeclaration)
        parseFieldInitializerOpt(l, l, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(i)
        ensureSemicolon(l)
          reportRecoverableError(l, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], l, l)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(i)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(i)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(i)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', c, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(i, typeReference)
        listener: handleNoTypeArguments(c)
        listener: handleType(i, null)
        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
          listener: handleIdentifier(c, topLevelVariableDeclaration)
        parseFieldInitializerOpt(c, c, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(c)
          reportRecoverableError(c, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], c, c)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', n, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(n)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(n, topLevelVariableDeclaration)
        parseFieldInitializerOpt(n, n, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(n)
          reportRecoverableError(n, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], n, n)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(t)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(t)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(t)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(t)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(t, typeReference)
        listener: handleNoTypeArguments(h)
        listener: handleType(t, null)
        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
          listener: handleIdentifier(h, topLevelVariableDeclaration)
        parseFieldInitializerOpt(h, h, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(a)
        ensureSemicolon(h)
          reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
  listener: endTopLevelDeclaration(a)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(a)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(a)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', t, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(a, typeReference)
        listener: handleNoTypeArguments(t)
        listener: handleType(a, null)
        ensureIdentifierPotentiallyRecovered(a, topLevelVariableDeclaration, false)
          listener: handleIdentifier(t, topLevelVariableDeclaration)
        parseFieldInitializerOpt(t, t, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(c)
        ensureSemicolon(t)
          reportRecoverableError(t, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], t, t)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, a, ;)
  listener: endTopLevelDeclaration(c)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(c)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(c)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(c, typeReference)
        listener: handleNoTypeArguments(a)
        listener: handleType(c, null)
        ensureIdentifierPotentiallyRecovered(c, topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(n)
        ensureSemicolon(a)
          reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, c, ;)
  listener: endTopLevelDeclaration(n)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(n)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(n)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', b, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(n, typeReference)
        listener: handleNoTypeArguments(b)
        listener: handleType(n, null)
        ensureIdentifierPotentiallyRecovered(n, topLevelVariableDeclaration, false)
          listener: handleIdentifier(b, topLevelVariableDeclaration)
        parseFieldInitializerOpt(b, b, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(b)
          reportRecoverableError(b, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], b, b)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, n, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', f, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(f)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(f, topLevelVariableDeclaration)
        parseFieldInitializerOpt(f, f, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(o)
        ensureSemicolon(f)
          reportRecoverableError(f, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], f, f)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(o)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(o)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(o)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', u, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(o, typeReference)
        listener: handleNoTypeArguments(u)
        listener: handleType(o, null)
        ensureIdentifierPotentiallyRecovered(o, topLevelVariableDeclaration, false)
          listener: handleIdentifier(u, topLevelVariableDeclaration)
        parseFieldInitializerOpt(u, u, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(n)
        ensureSemicolon(u)
          reportRecoverableError(u, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], u, u)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, o, ;)
  listener: endTopLevelDeclaration(n)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(n)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(n)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(n, typeReference)
        listener: handleNoTypeArguments(d)
        listener: handleType(n, null)
        ensureIdentifierPotentiallyRecovered(n, topLevelVariableDeclaration, false)
          listener: handleIdentifier(d, topLevelVariableDeclaration)
        parseFieldInitializerOpt(d, d, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(i)
        ensureSemicolon(d)
          reportRecoverableError(d, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], d, d)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, n, ;)
  listener: endTopLevelDeclaration(i)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(i)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(i)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', n, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(i, typeReference)
        listener: handleNoTypeArguments(n)
        listener: handleType(i, null)
        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
          listener: handleIdentifier(n, topLevelVariableDeclaration)
        parseFieldInitializerOpt(n, n, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(t)
        ensureSemicolon(n)
          reportRecoverableError(n, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], n, n)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
  listener: endTopLevelDeclaration(t)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(t)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(t)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(t, typeReference)
        listener: handleNoTypeArguments(h)
        listener: handleType(t, null)
        ensureIdentifierPotentiallyRecovered(t, topLevelVariableDeclaration, false)
          listener: handleIdentifier(h, topLevelVariableDeclaration)
        parseFieldInitializerOpt(h, h, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(e)
        ensureSemicolon(h)
          reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, t, ;)
  listener: endTopLevelDeclaration(e)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(e)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(e)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', L, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(e, typeReference)
        listener: handleNoTypeArguments(L)
        listener: handleType(e, null)
        ensureIdentifierPotentiallyRecovered(e, topLevelVariableDeclaration, false)
          listener: handleIdentifier(L, topLevelVariableDeclaration)
        parseFieldInitializerOpt(L, L, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(I)
        ensureSemicolon(L)
          reportRecoverableError(L, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], L, L)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, e, ;)
  listener: endTopLevelDeclaration(I)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(I)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(I)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', C, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(I, typeReference)
        listener: handleNoTypeArguments(C)
        listener: handleType(I, null)
        ensureIdentifierPotentiallyRecovered(I, topLevelVariableDeclaration, false)
          listener: handleIdentifier(C, topLevelVariableDeclaration)
        parseFieldInitializerOpt(C, C, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(E)
        ensureSemicolon(C)
          reportRecoverableError(C, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], C, C)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, I, ;)
  listener: endTopLevelDeclaration(E)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(E)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(E)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', N, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(E, typeReference)
        listener: handleNoTypeArguments(N)
        listener: handleType(E, null)
        ensureIdentifierPotentiallyRecovered(E, topLevelVariableDeclaration, false)
          listener: handleIdentifier(N, topLevelVariableDeclaration)
        parseFieldInitializerOpt(N, N, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(S)
        ensureSemicolon(N)
          reportRecoverableError(N, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], N, N)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, E, ;)
  listener: endTopLevelDeclaration(S)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(S)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(S)
      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, E, false)
        listener: beginTopLevelMethod(;, null)
        listener: handleIdentifier(S, typeReference)
        listener: handleNoTypeArguments(E)
        listener: handleType(S, null)
        ensureIdentifierPotentiallyRecovered(S, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(E, topLevelFunctionDeclaration)
        parseMethodTypeVar(E)
          listener: handleNoTypeVariables(.)
        parseGetterOrFormalParameters(E, E, false, MemberKind.TopLevelMethod)
          missingParameterMessage(MemberKind.TopLevelMethod)
          reportRecoverableError(E, MissingFunctionParameters)
            listener: handleRecoverableError(MissingFunctionParameters, E, E)
          rewriter()
          parseFormalParametersRest((, MemberKind.TopLevelMethod)
            listener: beginFormalParameters((, MemberKind.TopLevelMethod)
            listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          ensureBlock(), Instance of 'Template<(Token) => Message>', null)
            reportRecoverableError(., Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}])
              listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}], ., .)
            insertBlock())
              rewriter()
              rewriter()
          listener: handleInvalidFunctionBody({)
        listener: endTopLevelMethod(S, null, })
  listener: endTopLevelDeclaration(.)
  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
    parseMetadataStar(})
      listener: beginMetadataStar(.)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(.)
    parseInvalidTopLevelDeclaration(})
      reportRecoverableErrorWithToken(., Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '.'., null, {token: .}], ., .)
      listener: handleInvalidTopLevelDeclaration(.)
  listener: endTopLevelDeclaration(m)
  parseTopLevelDeclarationImpl(., Instance of 'DirectiveContext')
    parseMetadataStar(.)
      listener: beginMetadataStar(m)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(.)
      listener: beginTopLevelMember(m)
      parseFields(., null, null, null, null, null, null, ., Instance of 'SimpleType', d, DeclarationKind.TopLevel, null, false)
        listener: beginFields(.)
        listener: handleIdentifier(m, typeReference)
        listener: handleNoTypeArguments(d)
        listener: handleType(m, null)
        ensureIdentifierPotentiallyRecovered(m, topLevelVariableDeclaration, false)
          listener: handleIdentifier(d, topLevelVariableDeclaration)
        parseFieldInitializerOpt(d, d, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(f)
        ensureSemicolon(d)
          reportRecoverableError(d, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], d, d)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, m, ;)
  listener: endTopLevelDeclaration(f)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(f)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(f)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(f, typeReference)
        listener: handleNoTypeArguments(i)
        listener: handleType(f, null)
        ensureIdentifierPotentiallyRecovered(f, topLevelVariableDeclaration, false)
          listener: handleIdentifier(i, topLevelVariableDeclaration)
        parseFieldInitializerOpt(i, i, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(l)
        ensureSemicolon(i)
          reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, f, ;)
  listener: endTopLevelDeclaration(l)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(l)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(l)
      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, e, false)
        listener: beginTopLevelMethod(;, null)
        listener: handleIdentifier(l, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(l, null)
        ensureIdentifierPotentiallyRecovered(l, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(e, topLevelFunctionDeclaration)
        parseMethodTypeVar(e)
          listener: handleNoTypeVariables(.)
        parseGetterOrFormalParameters(e, e, false, MemberKind.TopLevelMethod)
          missingParameterMessage(MemberKind.TopLevelMethod)
          reportRecoverableError(e, MissingFunctionParameters)
            listener: handleRecoverableError(MissingFunctionParameters, e, e)
          rewriter()
          parseFormalParametersRest((, MemberKind.TopLevelMethod)
            listener: beginFormalParameters((, MemberKind.TopLevelMethod)
            listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          ensureBlock(), Instance of 'Template<(Token) => Message>', null)
            reportRecoverableError(., Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}])
              listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}], ., .)
            insertBlock())
              rewriter()
              rewriter()
          listener: handleInvalidFunctionBody({)
        listener: endTopLevelMethod(l, null, })
  listener: endTopLevelDeclaration(.)
  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
    parseMetadataStar(})
      listener: beginMetadataStar(.)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(.)
    parseInvalidTopLevelDeclaration(})
      reportRecoverableErrorWithToken(., Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '.'., null, {token: .}], ., .)
      listener: handleInvalidTopLevelDeclaration(.)
  listener: endTopLevelDeclaration(/)
  parseTopLevelDeclarationImpl(., Instance of 'DirectiveContext')
    parseMetadataStar(.)
      listener: beginMetadataStar(/)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(/)
    parseInvalidTopLevelDeclaration(.)
      reportRecoverableErrorWithToken(/, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '/'., null, {token: /}], /, /)
      listener: handleInvalidTopLevelDeclaration(/)
  listener: endTopLevelDeclaration(/)
  parseTopLevelDeclarationImpl(/, Instance of 'DirectiveContext')
    parseMetadataStar(/)
      listener: beginMetadataStar(/)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(/)
    parseInvalidTopLevelDeclaration(/)
      reportRecoverableErrorWithToken(/, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '/'., null, {token: /}], /, /)
      listener: handleInvalidTopLevelDeclaration(/)
  listener: endTopLevelDeclaration(T)
  parseTopLevelDeclarationImpl(/, Instance of 'DirectiveContext')
    parseMetadataStar(/)
      listener: beginMetadataStar(T)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(/)
      listener: beginTopLevelMember(T)
      parseFields(/, null, null, null, null, null, null, /, Instance of 'SimpleType', h, DeclarationKind.TopLevel, null, false)
        listener: beginFields(/)
        listener: handleIdentifier(T, typeReference)
        listener: handleNoTypeArguments(h)
        listener: handleType(T, null)
        ensureIdentifierPotentiallyRecovered(T, topLevelVariableDeclaration, false)
          listener: handleIdentifier(h, topLevelVariableDeclaration)
        parseFieldInitializerOpt(h, h, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(i)
        ensureSemicolon(h)
          reportRecoverableError(h, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], h, h)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, T, ;)
  listener: endTopLevelDeclaration(i)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(i)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(i)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(i, typeReference)
        listener: handleNoTypeArguments(s)
        listener: handleType(i, null)
        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
          listener: handleIdentifier(s, topLevelVariableDeclaration)
        parseFieldInitializerOpt(s, s, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(f)
        ensureSemicolon(s)
          reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
  listener: endTopLevelDeclaration(f)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(f)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(f)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', i, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(f, typeReference)
        listener: handleNoTypeArguments(i)
        listener: handleType(f, null)
        ensureIdentifierPotentiallyRecovered(f, topLevelVariableDeclaration, false)
          listener: handleIdentifier(i, topLevelVariableDeclaration)
        parseFieldInitializerOpt(i, i, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(l)
        ensureSemicolon(i)
          reportRecoverableError(i, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], i, i)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, f, ;)
  listener: endTopLevelDeclaration(l)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(l)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(l)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(l, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(l, null)
        ensureIdentifierPotentiallyRecovered(l, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(i)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, l, ;)
  listener: endTopLevelDeclaration(i)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(i)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(i)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', s, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(i, typeReference)
        listener: handleNoTypeArguments(s)
        listener: handleType(i, null)
        ensureIdentifierPotentiallyRecovered(i, topLevelVariableDeclaration, false)
          listener: handleIdentifier(s, topLevelVariableDeclaration)
        parseFieldInitializerOpt(s, s, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(s)
          reportRecoverableError(s, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], s, s)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, i, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(a)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(v)
        ensureSemicolon(a)
          reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(v)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(v)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(v)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', e, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(v, typeReference)
        listener: handleNoTypeArguments(e)
        listener: handleType(v, null)
        ensureIdentifierPotentiallyRecovered(v, topLevelVariableDeclaration, false)
          listener: handleIdentifier(e, topLevelVariableDeclaration)
        parseFieldInitializerOpt(e, e, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(d)
        ensureSemicolon(e)
          reportRecoverableError(e, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], e, e)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, v, ;)
  listener: endTopLevelDeclaration(d)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(d)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(d)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(d, typeReference)
        listener: handleNoTypeArguments(a)
        listener: handleType(d, null)
        ensureIdentifierPotentiallyRecovered(d, topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(s)
        ensureSemicolon(a)
          reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, d, ;)
  listener: endTopLevelDeclaration(s)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(s)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(s)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', U, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(s, typeReference)
        listener: handleNoTypeArguments(U)
        listener: handleType(s, null)
        ensureIdentifierPotentiallyRecovered(s, topLevelVariableDeclaration, false)
          listener: handleIdentifier(U, topLevelVariableDeclaration)
        parseFieldInitializerOpt(U, U, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(T)
        ensureSemicolon(U)
          reportRecoverableError(U, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], U, U)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, s, ;)
  listener: endTopLevelDeclaration(T)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(T)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(T)
      parseFields(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', F, DeclarationKind.TopLevel, null, false)
        listener: beginFields(;)
        listener: handleIdentifier(T, typeReference)
        listener: handleNoTypeArguments(F)
        listener: handleType(T, null)
        ensureIdentifierPotentiallyRecovered(T, topLevelVariableDeclaration, false)
          listener: handleIdentifier(F, topLevelVariableDeclaration)
        parseFieldInitializerOpt(F, F, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(-)
        ensureSemicolon(F)
          reportRecoverableError(F, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], F, F)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, T, ;)
  listener: endTopLevelDeclaration(-)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(-)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(-)
    parseInvalidTopLevelDeclaration(;)
      reportRecoverableErrorWithToken(-, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '-'., null, {token: -}], -, -)
      listener: handleInvalidTopLevelDeclaration(-)
  listener: endTopLevelDeclaration(1)
  parseTopLevelDeclarationImpl(-, Instance of 'DirectiveContext')
    parseMetadataStar(-)
      listener: beginMetadataStar(1)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(1)
    parseInvalidTopLevelDeclaration(-)
      reportRecoverableErrorWithToken(1, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '1'., null, {token: 1}], 1, 1)
      listener: handleInvalidTopLevelDeclaration(1)
  listener: endTopLevelDeclaration(6)
  parseTopLevelDeclarationImpl(1, Instance of 'DirectiveContext')
    parseMetadataStar(1)
      listener: beginMetadataStar(6)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(6)
    parseInvalidTopLevelDeclaration(1)
      reportRecoverableErrorWithToken(6, Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '6'., null, {token: 6}], 6, 6)
      listener: handleInvalidTopLevelDeclaration(6)
  listener: endTopLevelDeclaration(L)
  parseTopLevelDeclarationImpl(6, Instance of 'DirectiveContext')
    parseMetadataStar(6)
      listener: beginMetadataStar(L)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(6)
      listener: beginTopLevelMember(L)
      parseTopLevelMethod(6, null, 6, Instance of 'SimpleType', null, E, false)
        listener: beginTopLevelMethod(6, null)
        listener: handleIdentifier(L, typeReference)
        listener: handleNoTypeArguments(E)
        listener: handleType(L, null)
        ensureIdentifierPotentiallyRecovered(L, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(E, topLevelFunctionDeclaration)
        parseMethodTypeVar(E)
          listener: handleNoTypeVariables(.)
        parseGetterOrFormalParameters(E, E, false, MemberKind.TopLevelMethod)
          missingParameterMessage(MemberKind.TopLevelMethod)
          reportRecoverableError(E, MissingFunctionParameters)
            listener: handleRecoverableError(MissingFunctionParameters, E, E)
          rewriter()
          parseFormalParametersRest((, MemberKind.TopLevelMethod)
            listener: beginFormalParameters((, MemberKind.TopLevelMethod)
            listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          ensureBlock(), Instance of 'Template<(Token) => Message>', null)
            reportRecoverableError(., Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}])
              listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got '.'., null, {token: .}], ., .)
            insertBlock())
              rewriter()
              rewriter()
          listener: handleInvalidFunctionBody({)
        listener: endTopLevelMethod(L, null, })
  listener: endTopLevelDeclaration(.)
  parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
    parseMetadataStar(})
      listener: beginMetadataStar(.)
      listener: endMetadataStar(0)
    listener: beginTopLevelMember(.)
    parseInvalidTopLevelDeclaration(})
      reportRecoverableErrorWithToken(., Instance of 'Template<(Token) => Message>')
        listener: handleRecoverableError(Message[ExpectedDeclaration, Expected a declaration, but got '.'., null, {token: .}], ., .)
      listener: handleInvalidTopLevelDeclaration(.)
  listener: endTopLevelDeclaration(m)
  parseTopLevelDeclarationImpl(., Instance of 'DirectiveContext')
    parseMetadataStar(.)
      listener: beginMetadataStar(m)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(.)
      listener: beginTopLevelMember(m)
      parseFields(., null, null, null, null, null, null, ., Instance of 'SimpleType', a, DeclarationKind.TopLevel, null, false)
        listener: beginFields(.)
        listener: handleIdentifier(m, typeReference)
        listener: handleNoTypeArguments(a)
        listener: handleType(m, null)
        ensureIdentifierPotentiallyRecovered(m, topLevelVariableDeclaration, false)
          listener: handleIdentifier(a, topLevelVariableDeclaration)
        parseFieldInitializerOpt(a, a, null, null, null, null, DeclarationKind.TopLevel, null)
          listener: handleNoFieldInitializer(i)
        ensureSemicolon(a)
          reportRecoverableError(a, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
            listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], a, a)
          rewriter()
        listener: endTopLevelFields(null, null, null, null, null, 1, m, ;)
  listener: endTopLevelDeclaration(i)
  parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
    parseMetadataStar(;)
      listener: beginMetadataStar(i)
      listener: endMetadataStar(0)
    parseTopLevelMemberImpl(;)
      listener: beginTopLevelMember(i)
      parseTopLevelMethod(;, null, ;, Instance of 'SimpleType', null, n, false)
        listener: beginTopLevelMethod(;, null)
        listener: handleIdentifier(i, typeReference)
        listener: handleNoTypeArguments(n)
        listener: handleType(i, null)
        ensureIdentifierPotentiallyRecovered(i, topLevelFunctionDeclaration, false)
          listener: handleIdentifier(n, topLevelFunctionDeclaration)
        parseMethodTypeVar(n)
          listener: handleNoTypeVariables(()
        parseGetterOrFormalParameters(n, n, false, MemberKind.TopLevelMethod)
          parseFormalParameters(n, MemberKind.TopLevelMethod)
            parseFormalParametersRest((, MemberKind.TopLevelMethod)
              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
              listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
        parseAsyncModifierOpt())
          listener: handleAsyncModifier(null, null)
          inPlainSync()
        parseFunctionBody(), false, false)
          listener: beginBlockFunctionBody({)
          notEofOrValue(}, p)
          parseStatement({)
            parseStatementX({)
              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
                looksLikeLocalFunction(r)
                listener: beginMetadataStar(p)
                listener: endMetadataStar(0)
                listener: handleIdentifier(p, typeReference)
                listener: handleNoTypeArguments(r)
                listener: handleType(p, null)
                listener: beginVariablesDeclaration(r, null, null)
                parseVariablesDeclarationRest(p, true)
                  parseOptionallyInitializedIdentifier(p)
                    ensureIdentifier(p, localVariableDeclaration)
                      listener: handleIdentifier(r, localVariableDeclaration)
                    listener: beginInitializedIdentifier(r)
                    parseVariableInitializerOpt(r)
                      listener: handleNoVariableInitializer(r)
                    listener: endInitializedIdentifier(r)
                  ensureSemicolon(r)
                    reportRecoverableError(r, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], r, r)
                    rewriter()
                  listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, i)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
                looksLikeLocalFunction(n)
                listener: beginMetadataStar(i)
                listener: endMetadataStar(0)
                listener: handleIdentifier(i, typeReference)
                listener: handleNoTypeArguments(n)
                listener: handleType(i, null)
                listener: beginVariablesDeclaration(n, null, null)
                parseVariablesDeclarationRest(i, true)
                  parseOptionallyInitializedIdentifier(i)
                    ensureIdentifier(i, localVariableDeclaration)
                      listener: handleIdentifier(n, localVariableDeclaration)
                    listener: beginInitializedIdentifier(n)
                    parseVariableInitializerOpt(n)
                      listener: handleNoVariableInitializer(n)
                    listener: endInitializedIdentifier(n)
                  ensureSemicolon(n)
                    reportRecoverableError(n, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
                      listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], n, n)
                    rewriter()
                  listener: endVariablesDeclaration(1, ;)
          notEofOrValue(}, t)
          parseStatement(;)
            parseStatementX(;)
              parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
                looksLikeLocalFunction(t)
                parseExpressionStatement(;)
                  parseExpression(;)
                    parsePrecedenceExpression(;, 1, true)
                      parseUnaryExpression(;, true)
                        parsePrimary(;, expression)
                          parseSendOrFunctionLiteral(;, expression)
                            looksLikeFunctionBody(;)
                            parseSend(;, expression)
                              ensureIdentifier(;, expression)
                                listener: handleIdentifier(t, expression)
                              listener: handleNoTypeArguments(()
                              parseArgumentsOpt(t)
                                parseArguments(t)
                                  parseArgumentsRest(()
                                    listener: beginArguments(()
                                    parseExpression(()
                                      parsePrecedenceExpression((, 1, true)
                                        parseUnaryExpression((, true)
                                          parsePrimary((, expression)
                                            parseLiteralString(()
                                              parseSingleLiteralString(()
                                                listener: beginLiteralString("")
                                                listener: endLiteralString(0, H)
                                    rewriteAndRecover("", Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(H, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], H, H)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(H, expression)
                                                listener: handleNoTypeArguments(e)
                                                parseArgumentsOpt(H)
                                                  listener: handleNoArguments(e)
                                                listener: handleSend(H, e)
                                    rewriteAndRecover(H, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(e, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], e, e)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(e, expression)
                                                listener: handleNoTypeArguments(l)
                                                parseArgumentsOpt(e)
                                                  listener: handleNoArguments(l)
                                                listener: handleSend(e, l)
                                    rewriteAndRecover(e, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(l, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], l, l)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(l, expression)
                                                listener: handleNoTypeArguments(l)
                                                parseArgumentsOpt(l)
                                                  listener: handleNoArguments(l)
                                                listener: handleSend(l, l)
                                    rewriteAndRecover(l, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(l, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], l, l)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(l, expression)
                                                listener: handleNoTypeArguments(o)
                                                parseArgumentsOpt(l)
                                                  listener: handleNoArguments(o)
                                                listener: handleSend(l, o)
                                    rewriteAndRecover(l, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(o, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], o, o)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(o, expression)
                                                listener: handleNoTypeArguments(,)
                                                parseArgumentsOpt(o)
                                                  listener: handleNoArguments(,)
                                                listener: handleSend(o, ,)
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(w, expression)
                                                listener: handleNoTypeArguments(o)
                                                parseArgumentsOpt(w)
                                                  listener: handleNoArguments(o)
                                                listener: handleSend(w, o)
                                    rewriteAndRecover(w, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(o, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], o, o)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(o, expression)
                                                listener: handleNoTypeArguments(r)
                                                parseArgumentsOpt(o)
                                                  listener: handleNoArguments(r)
                                                listener: handleSend(o, r)
                                    rewriteAndRecover(o, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(r, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], r, r)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(r, expression)
                                                listener: handleNoTypeArguments(l)
                                                parseArgumentsOpt(r)
                                                  listener: handleNoArguments(l)
                                                listener: handleSend(r, l)
                                    rewriteAndRecover(r, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(l, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], l, l)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(l, expression)
                                                listener: handleNoTypeArguments(d)
                                                parseArgumentsOpt(l)
                                                  listener: handleNoArguments(d)
                                                listener: handleSend(l, d)
                                    rewriteAndRecover(l, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError(d, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], d, d)
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseSendOrFunctionLiteral(,, expression)
                                              parseSend(,, expression)
                                                ensureIdentifier(,, expression)
                                                  listener: handleIdentifier(d, expression)
                                                listener: handleNoTypeArguments(!)
                                                parseArgumentsOpt(d)
                                                  listener: handleNoArguments(!)
                                                listener: handleSend(d, !)
                                        listener: handleNonNullAssertExpression(!)
                                    rewriteAndRecover(!, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
                                      reportRecoverableError("", Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
                                        listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], "", "")
                                      rewriter()
                                    parseExpression(,)
                                      parsePrecedenceExpression(,, 1, true)
                                        parseUnaryExpression(,, true)
                                          parsePrimary(,, expression)
                                            parseLiteralString(,)
                                              parseSingleLiteralString(,)
                                                listener: beginLiteralString("")
                                                listener: endLiteralString(0, ))
                                    listener: endArguments(12, (, ))
                              listener: handleSend(t, ;)
                  ensureSemicolon())
                  listener: handleExpressionStatement(;)
          notEofOrValue(}, })
          listener: endBlockFunctionBody(3, {, })
        listener: endTopLevelMethod(i, null, })
  listener: endTopLevelDeclaration()
  reportAllErrorTokens(EncodingErrorToken())
    listener: handleErrorToken(EncodingErrorToken())
    listener: handleRecoverableError(Encoding, EncodingErrorToken(), EncodingErrorToken())
    listener: handleErrorToken(EncodingErrorToken())
    listener: handleRecoverableError(Encoding, EncodingErrorToken(), EncodingErrorToken())
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(UnterminatedString("))
    listener: handleRecoverableError(Message[UnterminatedString, String starting with " must end with "., null, {string: ", string2: "}], UnterminatedString("), UnterminatedString("))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(UnterminatedString("))
    listener: handleRecoverableError(Message[UnterminatedString, String starting with " must end with "., null, {string: ", string2: "}], UnterminatedString("), UnterminatedString("))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
    listener: handleErrorToken(AsciiControlCharacterToken(0))
    listener: handleRecoverableError(Message[AsciiControlCharacter, The control character U+0000 can only be used in strings and comments., null, {codePoint: 0}], AsciiControlCharacterToken(0), AsciiControlCharacterToken(0))
  listener: endCompilationUnit(114, )
