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