Problems reported:

parser/error_recovery/issue_42229.crash:1:34: Expected an identifier, but got ''.
Stream<List<>> /* nothing here */
                                 ^...

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

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

parser/error_recovery/issue_42229.crash:1:34: Expected an identifier, but got ''.
Stream<List<>> /* nothing here */
                                 ^...

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

parser/error_recovery/issue_42229.crash:1:34: Expected ';' after this.
Stream<List<>> /* nothing here */
                                 ^...

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)
      handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
      // WARNING: Reporting at eof for .
      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, )
