Problems reported:

parser/nnbd/issue_40805_03:3:3: Members can't be declared to be both 'final' and 'covariant'.
  covariant final int x = 42;
  ^^^^^^^^^

beginCompilationUnit(class)
  beginMetadataStar(class)
  endMetadataStar(0)
  beginClassOrNamedMixinApplicationPrelude(class)
    handleIdentifier(C, classOrMixinDeclaration)
    handleNoTypeVariables({)
    beginClassDeclaration(class, null, C)
      handleNoType(C)
      handleClassExtends(null, 1)
      handleClassNoWithClause()
      handleClassOrMixinImplements(null, 0)
      handleClassHeader(class, class, null)
      beginClassOrMixinBody(DeclarationKind.Class, {)
        beginMetadataStar(covariant)
        endMetadataStar(0)
        beginMember()
          beginFields({)
            handleRecoverableError(FinalAndCovariant, covariant, covariant)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(x)
            handleType(int, null)
            handleIdentifier(x, fieldDeclaration)
            beginFieldInitializer(=)
              handleLiteralInt(42)
            endFieldInitializer(=, ;)
          endClassFields(null, null, null, null, null, final, 1, covariant, ;)
        endMember()
      endClassOrMixinBody(DeclarationKind.Class, 1, {, })
    endClassDeclaration(class, })
  endTopLevelDeclaration()
endCompilationUnit(1, )
