class com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper
  super_class: java.lang.Object
{
  private final java.util.Map<java.lang.Object, java.lang.Integer> keysToPos;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Integer;>;

  final com.sun.tools.javac.util.ByteBuffer poolbuf;
    descriptor: Lcom/sun/tools/javac/util/ByteBuffer;
    flags: (0x0010) ACC_FINAL

  int currentIndex;
    descriptor: I
    flags: (0x0000) 

  java.util.ArrayDeque<com.sun.tools.javac.jvm.PoolConstant> todo;
    descriptor: Ljava/util/ArrayDeque;
    flags: (0x0000) 
    Signature: Ljava/util/ArrayDeque<Lcom/sun/tools/javac/jvm/PoolConstant;>;

  java.lang.String overflowString;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  final com.sun.tools.javac.jvm.PoolWriter this$0;
    descriptor: Lcom/sun/tools/javac/jvm/PoolWriter;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.sun.tools.javac.jvm.PoolWriter);
    descriptor: (Lcom/sun/tools/javac/jvm/PoolWriter;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper this
         0: .line 331
            aload 0 /* this */
            aload 1
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 334
            aload 0 /* this */
            new java.util.HashMap
            dup
            bipush 64
            invokespecial java.util.HashMap.<init>:(I)V
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.keysToPos:Ljava/util/Map;
         2: .line 336
            aload 0 /* this */
            new com.sun.tools.javac.util.ByteBuffer
            dup
            sipush 32767
            invokespecial com.sun.tools.javac.util.ByteBuffer.<init>:(I)V
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
         3: .line 338
            aload 0 /* this */
            iconst_1
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.currentIndex:I
         4: .line 340
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.todo:Ljava/util/ArrayDeque;
         5: .line 342
            aload 0 /* this */
            aconst_null
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.overflowString:Ljava/lang/String;
         6: .line 331
            return
        end local 0 // com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/sun/tools/javac/jvm/PoolWriter$WriteablePoolHelper;
    MethodParameters:
        Name  Flags
      this$0  final

  private <P extends com.sun.tools.javac.jvm.PoolConstant> int writeIfNeeded();
    descriptor: (Lcom/sun/tools/javac/jvm/PoolConstant;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper this
        start local 1 // com.sun.tools.javac.jvm.PoolConstant p
         0: .line 345
            aload 1 /* p */
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            getfield com.sun.tools.javac.jvm.PoolWriter.types:Lcom/sun/tools/javac/code/Types;
            invokeinterface com.sun.tools.javac.jvm.PoolConstant.poolKey:(Lcom/sun/tools/javac/code/Types;)Ljava/lang/Object;
            astore 2 /* key */
        start local 2 // java.lang.Object key
         1: .line 346
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.keysToPos:Ljava/util/Map;
            aload 2 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 3 /* index */
        start local 3 // java.lang.Integer index
         2: .line 347
            aload 3 /* index */
            ifnonnull 11
         3: .line 348
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.keysToPos:Ljava/util/Map;
            aload 2 /* key */
            aload 0 /* this */
            dup
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.currentIndex:I
            dup_x1
            iconst_1
            iadd
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.currentIndex:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            dup
            astore 3 /* index */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 349
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.todo:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.isEmpty:()Z
            istore 4 /* first */
        start local 4 // boolean first
         5: .line 350
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.todo:Ljava/util/ArrayDeque;
            aload 1 /* p */
            invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
         6: .line 351
            iload 4 /* first */
            ifeq 11
         7: .line 352
            goto 10
         8: .line 353
      StackMap locals: java.lang.Object java.lang.Integer int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.todo:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.peekFirst:()Ljava/lang/Object;
            checkcast com.sun.tools.javac.jvm.PoolConstant
            invokevirtual com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.writeConstant:(Lcom/sun/tools/javac/jvm/PoolConstant;)V
         9: .line 354
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.todo:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.removeFirst:()Ljava/lang/Object;
            pop
        10: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.todo:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.isEmpty:()Z
            ifeq 8
        end local 4 // boolean first
        11: .line 358
      StackMap locals:
      StackMap stack:
            aload 3 /* index */
            invokevirtual java.lang.Integer.intValue:()I
            ireturn
        end local 3 // java.lang.Integer index
        end local 2 // java.lang.Object key
        end local 1 // com.sun.tools.javac.jvm.PoolConstant p
        end local 0 // com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Lcom/sun/tools/javac/jvm/PoolWriter$WriteablePoolHelper;
            0   12     1      p  TP;
            1   12     2    key  Ljava/lang/Object;
            2   12     3  index  Ljava/lang/Integer;
            5   11     4  first  Z
    Signature: <P::Lcom/sun/tools/javac/jvm/PoolConstant;>(TP;)I
    MethodParameters:
      Name  Flags
      p     

  void writeConstant(com.sun.tools.javac.jvm.PoolConstant);
    descriptor: (Lcom/sun/tools/javac/jvm/PoolConstant;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper this
        start local 1 // com.sun.tools.javac.jvm.PoolConstant c
         0: .line 362
            aload 1 /* c */
            invokeinterface com.sun.tools.javac.jvm.PoolConstant.poolTag:()I
            istore 2 /* tag */
        start local 2 // int tag
         1: .line 363
            iload 2 /* tag */
            tableswitch { // 1 - 20
                    1: 12
                    2: 77
                    3: 35
                    4: 38
                    5: 41
                    6: 45
                    7: 2
                    8: 58
                    9: 20
                   10: 20
                   11: 20
                   12: 62
                   13: 77
                   14: 77
                   15: 49
                   16: 54
                   17: 72
                   18: 67
                   19: 30
                   20: 25
              default: 77
          }
         2: .line 365
      StackMap locals: int
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.code.Type
            astore 3 /* ct */
        start local 3 // com.sun.tools.javac.code.Type ct
         3: .line 366
            aload 3 /* ct */
            getstatic com.sun.tools.javac.code.TypeTag.ARRAY:Lcom/sun/tools/javac/code/TypeTag;
            invokevirtual com.sun.tools.javac.code.Type.hasTag:(Lcom/sun/tools/javac/code/TypeTag;)Z
            ifeq 5
         4: .line 367
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* ct */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.typeSig:(Lcom/sun/tools/javac/code/Type;)Lcom/sun/tools/javac/util/Name;
            goto 6
         5: .line 368
      StackMap locals: com.sun.tools.javac.code.Type
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            getfield com.sun.tools.javac.jvm.PoolWriter.names:Lcom/sun/tools/javac/util/Names;
            aload 3 /* ct */
            getfield com.sun.tools.javac.code.Type.tsym:Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
            invokevirtual com.sun.tools.javac.code.Symbol$TypeSymbol.flatName:()Lcom/sun/tools/javac/util/Name;
            invokestatic com.sun.tools.javac.jvm.ClassFile.externalize:(Lcom/sun/tools/javac/util/Name;)[B
            invokevirtual com.sun.tools.javac.util.Names.fromUtf:([B)Lcom/sun/tools/javac/util/Name;
         6: .line 366
      StackMap locals:
      StackMap stack: com.sun.tools.javac.util.Name
            astore 4 /* name */
        start local 4 // com.sun.tools.javac.util.Name name
         7: .line 369
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
         8: .line 370
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 4 /* name */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putName:(Lcom/sun/tools/javac/util/Name;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
         9: .line 371
            aload 3 /* ct */
            getstatic com.sun.tools.javac.code.TypeTag.CLASS:Lcom/sun/tools/javac/code/TypeTag;
            invokevirtual com.sun.tools.javac.code.Type.hasTag:(Lcom/sun/tools/javac/code/TypeTag;)Z
            ifeq 78
        10: .line 372
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* ct */
            getfield com.sun.tools.javac.code.Type.tsym:Lcom/sun/tools/javac/code/Symbol$TypeSymbol;
            checkcast com.sun.tools.javac.code.Symbol$ClassSymbol
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.enterInner:(Lcom/sun/tools/javac/code/Symbol$ClassSymbol;)V
        11: .line 374
            goto 78
        end local 4 // com.sun.tools.javac.util.Name name
        end local 3 // com.sun.tools.javac.code.Type ct
        12: .line 377
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.util.Name
            astore 3 /* name */
        start local 3 // com.sun.tools.javac.util.Name name
        13: .line 378
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        14: .line 379
            aload 3 /* name */
            invokevirtual com.sun.tools.javac.util.Name.toUtf:()[B
            astore 4 /* bs */
        start local 4 // byte[] bs
        15: .line 380
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 4 /* bs */
            arraylength
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        16: .line 381
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 4 /* bs */
            iconst_0
            aload 4 /* bs */
            arraylength
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendBytes:([BII)V
        17: .line 382
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.overflowString:Ljava/lang/String;
            ifnonnull 78
            aload 4 /* bs */
            arraylength
            ldc 65535
            if_icmple 78
        18: .line 384
            aload 0 /* this */
            new java.lang.String
            dup
            aload 4 /* bs */
            invokespecial java.lang.String.<init>:([B)V
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.overflowString:Ljava/lang/String;
        19: .line 386
            goto 78
        end local 4 // byte[] bs
        end local 3 // com.sun.tools.javac.util.Name name
        20: .line 391
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.code.Symbol
            astore 3 /* sym */
        start local 3 // com.sun.tools.javac.code.Symbol sym
        21: .line 392
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        22: .line 393
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* sym */
            getfield com.sun.tools.javac.code.Symbol.owner:Lcom/sun/tools/javac/code/Symbol;
            checkcast com.sun.tools.javac.code.Symbol$ClassSymbol
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putClass:(Lcom/sun/tools/javac/code/Symbol$ClassSymbol;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        23: .line 394
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* sym */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putNameAndType:(Lcom/sun/tools/javac/code/Symbol;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        24: .line 395
            goto 78
        end local 3 // com.sun.tools.javac.code.Symbol sym
        25: .line 398
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.code.Symbol$PackageSymbol
            astore 3 /* pkg */
        start local 3 // com.sun.tools.javac.code.Symbol$PackageSymbol pkg
        26: .line 399
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            getfield com.sun.tools.javac.jvm.PoolWriter.names:Lcom/sun/tools/javac/util/Names;
            aload 3 /* pkg */
            invokevirtual com.sun.tools.javac.code.Symbol$PackageSymbol.flatName:()Lcom/sun/tools/javac/util/Name;
            invokestatic com.sun.tools.javac.jvm.ClassFile.externalize:(Lcom/sun/tools/javac/util/Name;)[B
            invokevirtual com.sun.tools.javac.util.Names.fromUtf:([B)Lcom/sun/tools/javac/util/Name;
            astore 4 /* pkgName */
        start local 4 // com.sun.tools.javac.util.Name pkgName
        27: .line 400
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        28: .line 401
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 4 /* pkgName */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putName:(Lcom/sun/tools/javac/util/Name;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        29: .line 402
            goto 78
        end local 4 // com.sun.tools.javac.util.Name pkgName
        end local 3 // com.sun.tools.javac.code.Symbol$PackageSymbol pkg
        30: .line 405
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.code.Symbol$ModuleSymbol
            astore 3 /* mod */
        start local 3 // com.sun.tools.javac.code.Symbol$ModuleSymbol mod
        31: .line 406
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* mod */
            getfield com.sun.tools.javac.code.Symbol$ModuleSymbol.name:Lcom/sun/tools/javac/util/Name;
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putName:(Lcom/sun/tools/javac/util/Name;)I
            istore 4 /* modName */
        start local 4 // int modName
        32: .line 407
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 3 /* mod */
            invokevirtual com.sun.tools.javac.code.Symbol$ModuleSymbol.poolTag:()I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        33: .line 408
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 4 /* modName */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        34: .line 409
            goto 78
        end local 4 // int modName
        end local 3 // com.sun.tools.javac.code.Symbol$ModuleSymbol mod
        35: .line 412
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        36: .line 413
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 1 /* c */
            checkcast com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant
            getfield com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant.data:Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendInt:(I)V
        37: .line 414
            goto 78
        38: .line 416
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        39: .line 417
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 1 /* c */
            checkcast com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant
            getfield com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant.data:Ljava/lang/Object;
            checkcast java.lang.Float
            invokevirtual java.lang.Float.floatValue:()F
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendFloat:(F)V
        40: .line 418
            goto 78
        41: .line 420
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.currentIndex:I
            iconst_1
            iadd
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.currentIndex:I
        42: .line 421
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        43: .line 422
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 1 /* c */
            checkcast com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant
            getfield com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant.data:Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendLong:(J)V
        44: .line 423
            goto 78
        45: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.currentIndex:I
            iconst_1
            iadd
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.currentIndex:I
        46: .line 426
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        47: .line 427
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 1 /* c */
            checkcast com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant
            getfield com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant.data:Ljava/lang/Object;
            checkcast java.lang.Double
            invokevirtual java.lang.Double.doubleValue:()D
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendDouble:(D)V
        48: .line 428
            goto 78
        49: .line 430
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.code.Symbol$MethodHandleSymbol
            astore 3 /* h */
        start local 3 // com.sun.tools.javac.code.Symbol$MethodHandleSymbol h
        50: .line 431
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        51: .line 432
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 3 /* h */
            invokevirtual com.sun.tools.javac.code.Symbol$MethodHandleSymbol.referenceKind:()I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        52: .line 433
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* h */
            invokevirtual com.sun.tools.javac.code.Symbol$MethodHandleSymbol.baseSymbol:()Lcom/sun/tools/javac/code/Symbol;
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putMember:(Lcom/sun/tools/javac/code/Symbol;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        53: .line 434
            goto 78
        end local 3 // com.sun.tools.javac.code.Symbol$MethodHandleSymbol h
        54: .line 437
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.code.Type$MethodType
            astore 3 /* mt */
        start local 3 // com.sun.tools.javac.code.Type$MethodType mt
        55: .line 438
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        56: .line 439
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* mt */
            invokevirtual com.sun.tools.javac.code.Type$MethodType.baseType:()Lcom/sun/tools/javac/code/Type;
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putDescriptor:(Lcom/sun/tools/javac/code/Type;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        57: .line 440
            goto 78
        end local 3 // com.sun.tools.javac.code.Type$MethodType mt
        58: .line 443
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            getfield com.sun.tools.javac.jvm.PoolWriter.names:Lcom/sun/tools/javac/util/Names;
            aload 1 /* c */
            checkcast com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant
            getfield com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant.data:Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual com.sun.tools.javac.util.Names.fromString:(Ljava/lang/String;)Lcom/sun/tools/javac/util/Name;
            astore 3 /* utf */
        start local 3 // com.sun.tools.javac.util.Name utf
        59: .line 444
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        60: .line 445
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* utf */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putName:(Lcom/sun/tools/javac/util/Name;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        61: .line 446
            goto 78
        end local 3 // com.sun.tools.javac.util.Name utf
        62: .line 449
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.jvm.PoolConstant$NameAndType
            astore 3 /* nt */
        start local 3 // com.sun.tools.javac.jvm.PoolConstant$NameAndType nt
        63: .line 450
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        64: .line 451
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* nt */
            getfield com.sun.tools.javac.jvm.PoolConstant$NameAndType.name:Lcom/sun/tools/javac/util/Name;
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putName:(Lcom/sun/tools/javac/util/Name;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        65: .line 452
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* nt */
            getfield com.sun.tools.javac.jvm.PoolConstant$NameAndType.type:Lcom/sun/tools/javac/code/Type;
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putDescriptor:(Lcom/sun/tools/javac/code/Type;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        66: .line 453
            goto 78
        end local 3 // com.sun.tools.javac.jvm.PoolConstant$NameAndType nt
        67: .line 456
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.code.Symbol$DynamicMethodSymbol
            astore 3 /* d */
        start local 3 // com.sun.tools.javac.code.Symbol$DynamicMethodSymbol d
        68: .line 457
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        69: .line 458
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* d */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.makeBootstrapEntry:(Lcom/sun/tools/javac/jvm/PoolConstant$Dynamic;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        70: .line 459
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* d */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putNameAndType:(Lcom/sun/tools/javac/code/Symbol;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        71: .line 460
            goto 78
        end local 3 // com.sun.tools.javac.code.Symbol$DynamicMethodSymbol d
        72: .line 463
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            checkcast com.sun.tools.javac.code.Symbol$DynamicVarSymbol
            astore 3 /* d */
        start local 3 // com.sun.tools.javac.code.Symbol$DynamicVarSymbol d
        73: .line 464
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            iload 2 /* tag */
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendByte:(I)V
        74: .line 465
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* d */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.makeBootstrapEntry:(Lcom/sun/tools/javac/jvm/PoolConstant$Dynamic;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        75: .line 466
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.this$0:Lcom/sun/tools/javac/jvm/PoolWriter;
            aload 3 /* d */
            invokevirtual com.sun.tools.javac.jvm.PoolWriter.putNameAndType:(Lcom/sun/tools/javac/code/Symbol;)I
            invokevirtual com.sun.tools.javac.util.ByteBuffer.appendChar:(I)V
        76: .line 467
            goto 78
        end local 3 // com.sun.tools.javac.code.Symbol$DynamicVarSymbol d
        77: .line 470
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unexpected constant tag: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* tag */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        78: .line 472
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int tag
        end local 1 // com.sun.tools.javac.jvm.PoolConstant c
        end local 0 // com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   79     0     this  Lcom/sun/tools/javac/jvm/PoolWriter$WriteablePoolHelper;
            0   79     1        c  Lcom/sun/tools/javac/jvm/PoolConstant;
            1   79     2      tag  I
            3   12     3       ct  Lcom/sun/tools/javac/code/Type;
            7   12     4     name  Lcom/sun/tools/javac/util/Name;
           13   20     3     name  Lcom/sun/tools/javac/util/Name;
           15   20     4       bs  [B
           21   25     3      sym  Lcom/sun/tools/javac/code/Symbol;
           26   30     3      pkg  Lcom/sun/tools/javac/code/Symbol$PackageSymbol;
           27   30     4  pkgName  Lcom/sun/tools/javac/util/Name;
           31   35     3      mod  Lcom/sun/tools/javac/code/Symbol$ModuleSymbol;
           32   35     4  modName  I
           50   54     3        h  Lcom/sun/tools/javac/code/Symbol$MethodHandleSymbol;
           55   58     3       mt  Lcom/sun/tools/javac/code/Type$MethodType;
           59   62     3      utf  Lcom/sun/tools/javac/util/Name;
           63   67     3       nt  Lcom/sun/tools/javac/jvm/PoolConstant$NameAndType;
           68   72     3        d  Lcom/sun/tools/javac/code/Symbol$DynamicMethodSymbol;
           73   77     3        d  Lcom/sun/tools/javac/code/Symbol$DynamicVarSymbol;
    MethodParameters:
      Name  Flags
      c     

  void reset();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper this
         0: .line 475
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.keysToPos:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         1: .line 476
            aload 0 /* this */
            iconst_1
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.currentIndex:I
         2: .line 477
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.todo:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.clear:()V
         3: .line 478
            aload 0 /* this */
            aconst_null
            putfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.overflowString:Ljava/lang/String;
         4: .line 479
            aload 0 /* this */
            getfield com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper.poolbuf:Lcom/sun/tools/javac/util/ByteBuffer;
            invokevirtual com.sun.tools.javac.util.ByteBuffer.reset:()V
         5: .line 480
            return
        end local 0 // com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/sun/tools/javac/jvm/PoolWriter$WriteablePoolHelper;
}
SourceFile: "PoolWriter.java"
NestHost: com.sun.tools.javac.jvm.PoolWriter
InnerClasses:
  public ClassSymbol = com.sun.tools.javac.code.Symbol$ClassSymbol of com.sun.tools.javac.code.Symbol
  public DynamicMethodSymbol = com.sun.tools.javac.code.Symbol$DynamicMethodSymbol of com.sun.tools.javac.code.Symbol
  public DynamicVarSymbol = com.sun.tools.javac.code.Symbol$DynamicVarSymbol of com.sun.tools.javac.code.Symbol
  public MethodHandleSymbol = com.sun.tools.javac.code.Symbol$MethodHandleSymbol of com.sun.tools.javac.code.Symbol
  public ModuleSymbol = com.sun.tools.javac.code.Symbol$ModuleSymbol of com.sun.tools.javac.code.Symbol
  public PackageSymbol = com.sun.tools.javac.code.Symbol$PackageSymbol of com.sun.tools.javac.code.Symbol
  public abstract TypeSymbol = com.sun.tools.javac.code.Symbol$TypeSymbol of com.sun.tools.javac.code.Symbol
  public MethodType = com.sun.tools.javac.code.Type$MethodType of com.sun.tools.javac.code.Type
  public abstract Dynamic = com.sun.tools.javac.jvm.PoolConstant$Dynamic of com.sun.tools.javac.jvm.PoolConstant
  public abstract LoadableConstant = com.sun.tools.javac.jvm.PoolConstant$LoadableConstant of com.sun.tools.javac.jvm.PoolConstant
  public BasicConstant = com.sun.tools.javac.jvm.PoolConstant$LoadableConstant$BasicConstant of com.sun.tools.javac.jvm.PoolConstant$LoadableConstant
  public final NameAndType = com.sun.tools.javac.jvm.PoolConstant$NameAndType of com.sun.tools.javac.jvm.PoolConstant
  WriteablePoolHelper = com.sun.tools.javac.jvm.PoolWriter$WriteablePoolHelper of com.sun.tools.javac.jvm.PoolWriter