beginCompilationUnit(class)
  beginMetadataStar(class)
  endMetadataStar(0)
  beginClassOrNamedMixinApplicationPrelude(class)
    handleIdentifier(X, classOrMixinDeclaration)
    handleNoTypeVariables({)
    beginClassDeclaration(class, null, X)
      handleNoType(X)
      handleClassExtends(null, 1)
      handleClassNoWithClause()
      handleClassOrMixinImplements(null, 0)
      handleClassHeader(class, class, null)
      beginClassOrMixinBody(DeclarationKind.Class, {)
        beginMetadataStar(var)
        endMetadataStar(0)
        beginMember()
          handleNoType(var)
          handleIdentifier(x1, fieldDeclaration)
          handleNoFieldInitializer(;)
        endClassFields(null, null, null, null, null, var, 1, var, ;)
      endMember()
      beginMetadataStar(static)
      endMetadataStar(0)
      beginMember()
        handleNoType(var)
        handleIdentifier(x2, fieldDeclaration)
        handleNoFieldInitializer(;)
      endClassFields(null, null, static, null, null, var, 1, static, ;)
    endMember()
    beginMetadataStar(covariant)
    endMetadataStar(0)
    beginMember()
      handleNoType(var)
      handleIdentifier(x3, fieldDeclaration)
      handleNoFieldInitializer(;)
    endClassFields(null, null, null, covariant, null, var, 1, covariant, ;)
  endMember()
  beginMetadataStar(var)
  endMetadataStar(0)
  beginMember()
    handleNoType(var)
    handleIdentifier(x4, fieldDeclaration)
    beginFieldInitializer(=)
      handleLiteralInt(0)
    endFieldInitializer(=, ;)
  endClassFields(null, null, null, null, null, var, 1, var, ;)
endMember()
beginMetadataStar(static)
endMetadataStar(0)
beginMember()
  handleNoType(var)
  handleIdentifier(x5, fieldDeclaration)
  beginFieldInitializer(=)
    handleLiteralInt(0)
  endFieldInitializer(=, ;)
endClassFields(null, null, static, null, null, var, 1, static, ;)
endMember()
beginMetadataStar(covariant)
endMetadataStar(0)
beginMember()
handleNoType(var)
handleIdentifier(x6, fieldDeclaration)
beginFieldInitializer(=)
  handleLiteralInt(0)
endFieldInitializer(=, ;)
endClassFields(null, null, null, covariant, null, var, 1, covariant, ;)
endMember()
endClassOrMixinBody(DeclarationKind.Class, 6, {, })
endClassDeclaration(class, })
endTopLevelDeclaration()
endCompilationUnit(1, )
