Problems reported:

parser/error_recovery/issue_42229_prime.crash:1:16: Expected an identifier, but got ''.
Stream<List<> >
               ^...

WARNING: Reporting at eof --- see below for details.

parser/error_recovery/issue_42229_prime.crash:1:13: Expected a type, but got '>'.
Stream<List<> >
            ^

parser/error_recovery/issue_42229_prime.crash:1:16: Expected ';' after this.
Stream<List<> >
               ^...

WARNING: Reporting at eof --- see below for details.

beginCompilationUnit(Stream)
  beginMetadataStar(Stream)
  endMetadataStar(0)
  beginTopLevelMember(Stream)
    handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
    // WARNING: Reporting at eof for .
    beginFields()
      handleIdentifier(Stream, typeReference)
      beginTypeArguments(<)
        handleIdentifier(List, typeReference)
        beginTypeArguments(<)
          handleRecoverableError(Message[ExpectedType, Expected a type, but got '>'., null, {lexeme: >}], >, >)
          handleIdentifier(, typeReference)
          handleNoTypeArguments(>)
          handleType(, null)
        endTypeArguments(1, <, >)
        handleType(List, null)
      endTypeArguments(1, <, >)
      handleType(Stream, null)
      handleIdentifier(, topLevelVariableDeclaration)
      handleNoFieldInitializer()
      handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], , )
      // WARNING: Reporting at eof for .
    endTopLevelFields(null, null, null, null, null, 1, Stream, ;)
  endTopLevelDeclaration()
endCompilationUnit(1, )
