Problems reported:

parser/error_recovery/issue_43090_prime_02.crash:1:11: Expected an identifier, but got '>='.
typedef A<>= void Function();
          ^^

beginCompilationUnit(typedef)
  beginMetadataStar(typedef)
  endMetadataStar(0)
  beginUncategorizedTopLevelDeclaration(typedef)
    beginFunctionTypeAlias(typedef)
      handleIdentifier(A, typedefDeclaration)
      beginTypeVariables(<)
        beginMetadataStar(>=)
        endMetadataStar(0)
        handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '>='., Try inserting an identifier before '>='., {lexeme: >=}], >=, >=)
        handleIdentifier(, typeVariableDeclaration)
        beginTypeVariable()
          handleTypeVariablesDefined(, 1)
          handleNoType()
        endTypeVariable(>=, 0, null, null)
      endTypeVariables(<, >)
      beginFunctionType(void)
        handleNoTypeVariables(()
        handleVoidKeyword(void)
        beginFormalParameters((, MemberKind.GeneralizedFunctionType)
        endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
      endFunctionType(Function, null)
    endFunctionTypeAlias(typedef, =, ;)
  endTopLevelDeclaration()
endCompilationUnit(1, )
