class sun.font.CStrike$GlyphInfoCache extends sun.font.CStrikeDisposer
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.font.CStrike$GlyphInfoCache
  super_class: sun.font.CStrikeDisposer
{
  private static final int FIRST_LAYER_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 256

  private static final int SECOND_LAYER_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 16384

  private boolean disposed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private final long[] firstLayerCache;
    descriptor: [J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private sun.font.CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray secondLayerCache;
    descriptor: Lsun/font/CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray;
    flags: (0x0002) ACC_PRIVATE

  private java.util.HashMap<java.lang.Integer, java.lang.Long> generalCache;
    descriptor: Ljava/util/HashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Long;>;

  void <init>(sun.font.Font2D, sun.font.FontStrikeDesc);
    descriptor: (Lsun/font/Font2D;Lsun/font/FontStrikeDesc;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // sun.font.CStrike$GlyphInfoCache this
        start local 1 // sun.font.Font2D nativeFont
        start local 2 // sun.font.FontStrikeDesc desc
         0: .line 366
            aload 0 /* this */
            aload 1 /* nativeFont */
            aload 2 /* desc */
            invokespecial sun.font.CStrikeDisposer.<init>:(Lsun/font/Font2D;Lsun/font/FontStrikeDesc;)V
         1: .line 359
            aload 0 /* this */
            iconst_0
            putfield sun.font.CStrike$GlyphInfoCache.disposed:Z
         2: .line 367
            aload 0 /* this */
            sipush 256
            newarray 11
            putfield sun.font.CStrike$GlyphInfoCache.firstLayerCache:[J
         3: .line 368
            return
        end local 2 // sun.font.FontStrikeDesc desc
        end local 1 // sun.font.Font2D nativeFont
        end local 0 // sun.font.CStrike$GlyphInfoCache this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lsun/font/CStrike$GlyphInfoCache;
            0    4     1  nativeFont  Lsun/font/Font2D;
            0    4     2        desc  Lsun/font/FontStrikeDesc;
    MethodParameters:
            Name  Flags
      nativeFont  final
      desc        final

  public synchronized long get(int);
    descriptor: (I)J
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // sun.font.CStrike$GlyphInfoCache this
        start local 1 // int index
         0: .line 371
            iload 1 /* index */
            ifge 5
         1: .line 372
            iload 1 /* index */
            ineg
            sipush 16384
            if_icmpge 7
         2: .line 374
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.secondLayerCache:Lsun/font/CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray;
            ifnonnull 4
         3: .line 375
            lconst_0
            lreturn
         4: .line 377
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.secondLayerCache:Lsun/font/CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray;
            iload 1 /* index */
            ineg
            invokevirtual sun.font.CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray.get:(I)J
            lreturn
         5: .line 380
      StackMap locals:
      StackMap stack:
            iload 1 /* index */
            sipush 256
            if_icmpge 7
         6: .line 382
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.firstLayerCache:[J
            iload 1 /* index */
            laload
            lreturn
         7: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.generalCache:Ljava/util/HashMap;
            ifnonnull 9
         8: .line 387
            lconst_0
            lreturn
         9: .line 389
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.generalCache:Ljava/util/HashMap;
            new java.lang.Integer
            dup
            iload 1 /* index */
            invokespecial java.lang.Integer.<init>:(I)V
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Long
            astore 2 /* value */
        start local 2 // java.lang.Long value
        10: .line 390
            aload 2 /* value */
            ifnonnull 12
        11: .line 391
            lconst_0
            lreturn
        12: .line 393
      StackMap locals: java.lang.Long
      StackMap stack:
            aload 2 /* value */
            invokevirtual java.lang.Long.longValue:()J
            lreturn
        end local 2 // java.lang.Long value
        end local 1 // int index
        end local 0 // sun.font.CStrike$GlyphInfoCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Lsun/font/CStrike$GlyphInfoCache;
            0   13     1  index  I
           10   13     2  value  Ljava/lang/Long;
    MethodParameters:
       Name  Flags
      index  final

  public synchronized void put(int, long);
    descriptor: (IJ)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // sun.font.CStrike$GlyphInfoCache this
        start local 1 // int index
        start local 2 // long value
         0: .line 397
            iload 1 /* index */
            ifge 6
         1: .line 398
            iload 1 /* index */
            ineg
            sipush 16384
            if_icmpge 9
         2: .line 400
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.secondLayerCache:Lsun/font/CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray;
            ifnonnull 4
         3: .line 401
            aload 0 /* this */
            new sun.font.CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray
            dup
            sipush 16384
            bipush 7
            invokespecial sun.font.CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray.<init>:(II)V
            putfield sun.font.CStrike$GlyphInfoCache.secondLayerCache:Lsun/font/CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray;
         4: .line 403
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.secondLayerCache:Lsun/font/CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray;
            iload 1 /* index */
            ineg
            lload 2 /* value */
            invokevirtual sun.font.CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray.put:(IJ)V
         5: .line 404
            return
         6: .line 407
      StackMap locals:
      StackMap stack:
            iload 1 /* index */
            sipush 256
            if_icmpge 9
         7: .line 409
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.firstLayerCache:[J
            iload 1 /* index */
            lload 2 /* value */
            lastore
         8: .line 410
            return
         9: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.generalCache:Ljava/util/HashMap;
            ifnonnull 11
        10: .line 415
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield sun.font.CStrike$GlyphInfoCache.generalCache:Ljava/util/HashMap;
        11: .line 418
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.generalCache:Ljava/util/HashMap;
            new java.lang.Integer
            dup
            iload 1 /* index */
            invokespecial java.lang.Integer.<init>:(I)V
            new java.lang.Long
            dup
            lload 2 /* value */
            invokespecial java.lang.Long.<init>:(J)V
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 419
            return
        end local 2 // long value
        end local 1 // int index
        end local 0 // sun.font.CStrike$GlyphInfoCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Lsun/font/CStrike$GlyphInfoCache;
            0   13     1  index  I
            0   13     2  value  J
    MethodParameters:
       Name  Flags
      index  final
      value  final

  public synchronized void dispose();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // sun.font.CStrike$GlyphInfoCache this
         0: .line 426
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.disposed:Z
            ifeq 2
         1: .line 427
            return
         2: .line 430
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial sun.font.CStrikeDisposer.dispose:()V
         3: .line 433
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.firstLayerCache:[J
            invokestatic sun.font.CStrike$GlyphInfoCache.disposeLongArray:([J)V
         4: .line 436
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.secondLayerCache:Lsun/font/CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray;
            ifnull 12
         5: .line 437
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.secondLayerCache:Lsun/font/CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray;
            getfield sun.font.CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray.cache:[[J
            astore 1 /* secondLayerLongArrayArray */
        start local 1 // long[][] secondLayerLongArrayArray
         6: .line 438
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         7: goto 11
         8: .line 439
      StackMap locals: long[][] int
      StackMap stack:
            aload 1 /* secondLayerLongArrayArray */
            iload 2 /* i */
            aaload
            astore 3 /* longArray */
        start local 3 // long[] longArray
         9: .line 440
            aload 3 /* longArray */
            ifnull 10
            aload 3 /* longArray */
            invokestatic sun.font.CStrike$GlyphInfoCache.disposeLongArray:([J)V
        end local 3 // long[] longArray
        10: .line 438
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 2 /* i */
            aload 1 /* secondLayerLongArrayArray */
            arraylength
            if_icmplt 8
        end local 2 // int i
        end local 1 // long[][] secondLayerLongArrayArray
        12: .line 445
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.generalCache:Ljava/util/HashMap;
            ifnull 20
        13: .line 446
            aload 0 /* this */
            getfield sun.font.CStrike$GlyphInfoCache.generalCache:Ljava/util/HashMap;
            invokevirtual java.util.HashMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 1 /* i */
        start local 1 // java.util.Iterator i
        14: .line 447
            goto 19
        15: .line 448
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 1 /* i */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            lstore 2 /* longValue */
        start local 2 // long longValue
        16: .line 449
            lload 2 /* longValue */
            ldc -1
            lcmp
            ifeq 19
            lload 2 /* longValue */
            lconst_0
            lcmp
            ifeq 19
        17: .line 450
            lload 2 /* longValue */
            invokestatic sun.font.CStrike$GlyphInfoCache.removeGlyphInfoFromCache:(J)V
        18: .line 451
            lload 2 /* longValue */
            invokestatic sun.font.StrikeCache.freeLongPointer:(J)V
        end local 2 // long longValue
        19: .line 447
      StackMap locals:
      StackMap stack:
            aload 1 /* i */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        end local 1 // java.util.Iterator i
        20: .line 458
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.font.CStrike$GlyphInfoCache.disposed:Z
        21: .line 459
            return
        end local 0 // sun.font.CStrike$GlyphInfoCache this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   22     0                       this  Lsun/font/CStrike$GlyphInfoCache;
            6   12     1  secondLayerLongArrayArray  [[J
            7   12     2                          i  I
            9   10     3                  longArray  [J
           14   20     1                          i  Ljava/util/Iterator<Ljava/lang/Long;>;
           16   19     2                  longValue  J

  private static void disposeLongArray(long[]);
    descriptor: ([J)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // long[] longArray
         0: .line 462
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 7
         2: .line 463
      StackMap locals: int
      StackMap stack:
            aload 0 /* longArray */
            iload 1 /* i */
            laload
            lstore 2 /* ptr */
        start local 2 // long ptr
         3: .line 464
            lload 2 /* ptr */
            lconst_0
            lcmp
            ifeq 6
            lload 2 /* ptr */
            ldc -1
            lcmp
            ifeq 6
         4: .line 465
            lload 2 /* ptr */
            invokestatic sun.font.CStrike$GlyphInfoCache.removeGlyphInfoFromCache:(J)V
         5: .line 466
            lload 2 /* ptr */
            invokestatic sun.font.StrikeCache.freeLongPointer:(J)V
        end local 2 // long ptr
         6: .line 462
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 1 /* i */
            aload 0 /* longArray */
            arraylength
            if_icmplt 2
        end local 1 // int i
         8: .line 469
            return
        end local 0 // long[] longArray
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  longArray  [J
            1    8     1          i  I
            3    6     2        ptr  J
    MethodParameters:
           Name  Flags
      longArray  final
}
SourceFile: "CStrike.java"
NestHost: sun.font.CStrike
InnerClasses:
  private GlyphInfoCache = sun.font.CStrike$GlyphInfoCache of sun.font.CStrike
  private SparseBitShiftingTwoLayerArray = sun.font.CStrike$GlyphInfoCache$SparseBitShiftingTwoLayerArray of sun.font.CStrike$GlyphInfoCache