Problems reported:

parser/error_recovery/comment_on_non_ascii_identifier:4:7: The non-ASCII character 'æ' (U+00E6) can't be used in identifiers, only in strings and comments.
  int æFoo = 42;
      ^

parser/error_recovery/comment_on_non_ascii_identifier:6:10: The non-ASCII character 'Æ' (U+00C6) can't be used in identifiers, only in strings and comments.
  int fooÆ = 42;
         ^

parser/error_recovery/comment_on_non_ascii_identifier:9:23: The non-ASCII character 'æ' (U+00E6) can't be used in identifiers, only in strings and comments.
  print(/* comment */ æFoo);
                      ^

parser/error_recovery/comment_on_non_ascii_identifier:10:26: The non-ASCII character 'Æ' (U+00C6) can't be used in identifiers, only in strings and comments.
  print(/* comment */ fooÆ);
                         ^

beginCompilationUnit(main)
  beginMetadataStar(main)
  endMetadataStar(0)
  beginTopLevelMember(main)
    beginTopLevelMethod(NonAsciiIdentifierToken(198), null)
      handleNoType(NonAsciiIdentifierToken(198))
      handleIdentifier(main, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        beginMetadataStar(int)
        endMetadataStar(0)
        handleIdentifier(int, typeReference)
        handleNoTypeArguments(æFoo)
        handleType(int, null)
        beginVariablesDeclaration(æFoo, null, null)
          handleIdentifier(æFoo, localVariableDeclaration)
          beginInitializedIdentifier(æFoo)
            beginVariableInitializer(=)
              handleLiteralInt(42)
            endVariableInitializer(=)
          endInitializedIdentifier(æFoo)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(int)
        endMetadataStar(0)
        handleIdentifier(int, typeReference)
        handleNoTypeArguments(fooÆ)
        handleType(int, null)
        beginVariablesDeclaration(fooÆ, null, null)
          handleIdentifier(fooÆ, localVariableDeclaration)
          beginInitializedIdentifier(fooÆ)
            beginVariableInitializer(=)
              handleLiteralInt(42)
            endVariableInitializer(=)
          endInitializedIdentifier(fooÆ)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(int)
        endMetadataStar(0)
        handleIdentifier(int, typeReference)
        handleNoTypeArguments(foo)
        handleType(int, null)
        beginVariablesDeclaration(foo, null, null)
          handleIdentifier(foo, localVariableDeclaration)
          beginInitializedIdentifier(foo)
            beginVariableInitializer(=)
              handleLiteralInt(42)
            endVariableInitializer(=)
          endInitializedIdentifier(foo)
        endVariablesDeclaration(1, ;)
        handleIdentifier(print, expression)
        handleNoTypeArguments(()
        beginArguments(()
          handleIdentifier(æFoo, expression)
          handleNoTypeArguments())
          handleNoArguments())
          handleSend(æFoo, ))
        endArguments(1, (, ))
        handleSend(print, ;)
        handleExpressionStatement(;)
        handleIdentifier(print, expression)
        handleNoTypeArguments(()
        beginArguments(()
          handleIdentifier(fooÆ, expression)
          handleNoTypeArguments())
          handleNoArguments())
          handleSend(fooÆ, ))
        endArguments(1, (, ))
        handleSend(print, ;)
        handleExpressionStatement(;)
        handleIdentifier(print, expression)
        handleNoTypeArguments(()
        beginArguments(()
          handleIdentifier(foo, expression)
          handleNoTypeArguments())
          handleNoArguments())
          handleSend(foo, ))
        endArguments(1, (, ))
        handleSend(print, ;)
        handleExpressionStatement(;)
      endBlockFunctionBody(6, {, })
    endTopLevelMethod(main, null, })
  endTopLevelDeclaration()
  handleErrorToken(NonAsciiIdentifierToken(230))
  handleRecoverableError(Message[NonAsciiIdentifier, The non-ASCII character 'æ' (U+00E6) can't be used in identifiers, only in strings and comments., Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a dollar sign)., {character: æ, unicode: 230}], NonAsciiIdentifierToken(230), NonAsciiIdentifierToken(230))
  handleErrorToken(NonAsciiIdentifierToken(198))
  handleRecoverableError(Message[NonAsciiIdentifier, The non-ASCII character 'Æ' (U+00C6) can't be used in identifiers, only in strings and comments., Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a dollar sign)., {character: Æ, unicode: 198}], NonAsciiIdentifierToken(198), NonAsciiIdentifierToken(198))
  handleErrorToken(NonAsciiIdentifierToken(230))
  handleRecoverableError(Message[NonAsciiIdentifier, The non-ASCII character 'æ' (U+00E6) can't be used in identifiers, only in strings and comments., Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a dollar sign)., {character: æ, unicode: 230}], NonAsciiIdentifierToken(230), NonAsciiIdentifierToken(230))
  handleErrorToken(NonAsciiIdentifierToken(198))
  handleRecoverableError(Message[NonAsciiIdentifier, The non-ASCII character 'Æ' (U+00C6) can't be used in identifiers, only in strings and comments., Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a dollar sign)., {character: Æ, unicode: 198}], NonAsciiIdentifierToken(198), NonAsciiIdentifierToken(198))
endCompilationUnit(1, )
