beginCompilationUnit(class)
  beginMetadataStar(class)
  endMetadataStar(0)
  beginClassOrNamedMixinApplicationPrelude(class)
    handleIdentifier(WrapperClass, classOrMixinDeclaration)
    handleNoTypeVariables({)
    beginClassDeclaration(class, null, WrapperClass)
      handleNoType(WrapperClass)
      handleClassExtends(null)
      handleClassNoWithClause()
      handleClassOrMixinImplements(null, 0)
      handleClassHeader(class, class, null)
      beginClassOrMixinBody(DeclarationKind.Class, {)
        beginMetadataStar(int)
        endMetadataStar(0)
        beginMember()
          handleIdentifier(int, typeReference)
          handleNoTypeArguments(abstract)
          handleType(int, null)
          handleIdentifier(abstract, fieldDeclaration)
          beginFieldInitializer(=)
            handleLiteralInt(42)
          endFieldInitializer(=, ;)
        endClassFields(null, null, null, null, 1, int, ;)
      endMember()
      beginMetadataStar(int)
      endMetadataStar(0)
      beginMember()
        handleIdentifier(int, typeReference)
        handleNoTypeArguments(as)
        handleType(int, null)
        handleIdentifier(as, fieldDeclaration)
        beginFieldInitializer(=)
          handleLiteralInt(42)
        endFieldInitializer(=, ;)
      endClassFields(null, null, null, null, 1, int, ;)
    endMember()
    beginMetadataStar(int)
    endMetadataStar(0)
    beginMember()
      handleIdentifier(int, typeReference)
      handleNoTypeArguments(covariant)
      handleType(int, null)
      handleIdentifier(covariant, fieldDeclaration)
      beginFieldInitializer(=)
        handleLiteralInt(42)
      endFieldInitializer(=, ;)
    endClassFields(null, null, null, null, 1, int, ;)
  endMember()
  beginMetadataStar(int)
  endMetadataStar(0)
  beginMember()
    handleIdentifier(int, typeReference)
    handleNoTypeArguments(deferred)
    handleType(int, null)
    handleIdentifier(deferred, fieldDeclaration)
    beginFieldInitializer(=)
      handleLiteralInt(42)
    endFieldInitializer(=, ;)
  endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
  handleIdentifier(int, typeReference)
  handleNoTypeArguments(dynamic)
  handleType(int, null)
  handleIdentifier(dynamic, fieldDeclaration)
  beginFieldInitializer(=)
    handleLiteralInt(42)
  endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(export)
handleType(int, null)
handleIdentifier(export, fieldDeclaration)
beginFieldInitializer(=)
  handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(external)
handleType(int, null)
handleIdentifier(external, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(factory)
handleType(int, null)
handleIdentifier(factory, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(Function)
handleType(int, null)
handleIdentifier(Function, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(get)
handleType(int, null)
handleIdentifier(get, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(implements)
handleType(int, null)
handleIdentifier(implements, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(import)
handleType(int, null)
handleIdentifier(import, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(interface)
handleType(int, null)
handleIdentifier(interface, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(library)
handleType(int, null)
handleIdentifier(library, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(operator)
handleType(int, null)
handleIdentifier(operator, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(mixin)
handleType(int, null)
handleIdentifier(mixin, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(part)
handleType(int, null)
handleIdentifier(part, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(set)
handleType(int, null)
handleIdentifier(set, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(static)
handleType(int, null)
handleIdentifier(static, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
beginMetadataStar(int)
endMetadataStar(0)
beginMember()
handleIdentifier(int, typeReference)
handleNoTypeArguments(typedef)
handleType(int, null)
handleIdentifier(typedef, fieldDeclaration)
beginFieldInitializer(=)
handleLiteralInt(42)
endFieldInitializer(=, ;)
endClassFields(null, null, null, null, 1, int, ;)
endMember()
endClassOrMixinBody(DeclarationKind.Class, 20, {, })
endClassDeclaration(class, })
endTopLevelDeclaration()
endCompilationUnit(1, )
