public final class sun.font.StrikeCache
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: sun.font.StrikeCache
  super_class: java.lang.Object
{
  static final sun.misc.Unsafe unsafe;
    descriptor: Lsun/misc/Unsafe;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static java.lang.ref.ReferenceQueue refQueue;
    descriptor: Ljava/lang/ref/ReferenceQueue;
    flags: (0x0008) ACC_STATIC

  static java.util.ArrayList<sun.font.GlyphDisposedListener> disposeListeners;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0008) ACC_STATIC
    Signature: Ljava/util/ArrayList<Lsun/font/GlyphDisposedListener;>;

  static int MINSTRIKES;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int recentStrikeIndex;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static sun.font.FontStrike[] recentStrikes;
    descriptor: [Lsun/font/FontStrike;
    flags: (0x0008) ACC_STATIC

  static boolean cacheRefTypeWeak;
    descriptor: Z
    flags: (0x0008) ACC_STATIC

  static int nativeAddressSize;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int glyphInfoSize;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int xAdvanceOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int yAdvanceOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int boundsOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int widthOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int heightOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int rowBytesOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int topLeftXOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int topLeftYOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int pixelDataOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int cacheCellOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static int managedOffset;
    descriptor: I
    flags: (0x0008) ACC_STATIC

  static long invisibleGlyphPtr;
    descriptor: J
    flags: (0x0008) ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=0
         0: .line 66
            invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
            putstatic sun.font.StrikeCache.unsafe:Lsun/misc/Unsafe;
         1: .line 68
            invokestatic sun.java2d.Disposer.getQueue:()Ljava/lang/ref/ReferenceQueue;
            putstatic sun.font.StrikeCache.refQueue:Ljava/lang/ref/ReferenceQueue;
         2: .line 70
            new java.util.ArrayList
            dup
            iconst_1
            invokespecial java.util.ArrayList.<init>:(I)V
            putstatic sun.font.StrikeCache.disposeListeners:Ljava/util/ArrayList;
         3: .line 95
            bipush 8
            putstatic sun.font.StrikeCache.MINSTRIKES:I
         4: .line 96
            iconst_0
            putstatic sun.font.StrikeCache.recentStrikeIndex:I
         5: .line 138
            bipush 13
            newarray 11
            astore 0 /* nativeInfo */
        start local 0 // long[] nativeInfo
         6: .line 139
            aload 0 /* nativeInfo */
            invokestatic sun.font.StrikeCache.getGlyphCacheDescription:([J)V
         7: .line 142
            aload 0 /* nativeInfo */
            iconst_0
            laload
            l2i
            putstatic sun.font.StrikeCache.nativeAddressSize:I
         8: .line 143
            aload 0 /* nativeInfo */
            iconst_1
            laload
            l2i
            putstatic sun.font.StrikeCache.glyphInfoSize:I
         9: .line 144
            aload 0 /* nativeInfo */
            iconst_2
            laload
            l2i
            putstatic sun.font.StrikeCache.xAdvanceOffset:I
        10: .line 145
            aload 0 /* nativeInfo */
            iconst_3
            laload
            l2i
            putstatic sun.font.StrikeCache.yAdvanceOffset:I
        11: .line 146
            aload 0 /* nativeInfo */
            iconst_4
            laload
            l2i
            putstatic sun.font.StrikeCache.widthOffset:I
        12: .line 147
            aload 0 /* nativeInfo */
            iconst_5
            laload
            l2i
            putstatic sun.font.StrikeCache.heightOffset:I
        13: .line 148
            aload 0 /* nativeInfo */
            bipush 6
            laload
            l2i
            putstatic sun.font.StrikeCache.rowBytesOffset:I
        14: .line 149
            aload 0 /* nativeInfo */
            bipush 7
            laload
            l2i
            putstatic sun.font.StrikeCache.topLeftXOffset:I
        15: .line 150
            aload 0 /* nativeInfo */
            bipush 8
            laload
            l2i
            putstatic sun.font.StrikeCache.topLeftYOffset:I
        16: .line 151
            aload 0 /* nativeInfo */
            bipush 9
            laload
            l2i
            putstatic sun.font.StrikeCache.pixelDataOffset:I
        17: .line 152
            aload 0 /* nativeInfo */
            bipush 10
            laload
            putstatic sun.font.StrikeCache.invisibleGlyphPtr:J
        18: .line 153
            aload 0 /* nativeInfo */
            bipush 11
            laload
            l2i
            putstatic sun.font.StrikeCache.cacheCellOffset:I
        19: .line 154
            aload 0 /* nativeInfo */
            bipush 12
            laload
            l2i
            putstatic sun.font.StrikeCache.managedOffset:I
        20: .line 156
            getstatic sun.font.StrikeCache.nativeAddressSize:I
            iconst_4
            if_icmpge 24
        21: .line 157
            new java.lang.InternalError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unexpected address size for font data: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        22: .line 158
            getstatic sun.font.StrikeCache.nativeAddressSize:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 157
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        24: .line 162
      StackMap locals: long[]
      StackMap stack:
            new sun.font.StrikeCache$1
            dup
            invokespecial sun.font.StrikeCache$1.<init>:()V
        25: .line 161
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
        end local 0 // long[] nativeInfo
        26: .line 192
            return
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            6   26     0  nativeInfo  [J

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.font.StrikeCache this
         0: .line 64
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.font.StrikeCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/font/StrikeCache;

  static native void getGlyphCacheDescription(long[]);
    descriptor: ([J)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    MethodParameters:
           Name  Flags
      infoArray  

  static void refStrike(sun.font.FontStrike);
    descriptor: (Lsun/font/FontStrike;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.font.FontStrike strike
         0: .line 196
            getstatic sun.font.StrikeCache.recentStrikeIndex:I
            istore 1 /* index */
        start local 1 // int index
         1: .line 197
            getstatic sun.font.StrikeCache.recentStrikes:[Lsun/font/FontStrike;
            iload 1 /* index */
            aload 0 /* strike */
            aastore
         2: .line 198
            iinc 1 /* index */ 1
         3: .line 199
            iload 1 /* index */
            getstatic sun.font.StrikeCache.MINSTRIKES:I
            if_icmpne 5
         4: .line 200
            iconst_0
            istore 1 /* index */
         5: .line 202
      StackMap locals: int
      StackMap stack:
            iload 1 /* index */
            putstatic sun.font.StrikeCache.recentStrikeIndex:I
         6: .line 203
            return
        end local 1 // int index
        end local 0 // sun.font.FontStrike strike
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  strike  Lsun/font/FontStrike;
            1    7     1   index  I
    MethodParameters:
        Name  Flags
      strike  

  private static final void doDispose(sun.font.FontStrikeDisposer);
    descriptor: (Lsun/font/FontStrikeDisposer;)V
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.font.FontStrikeDisposer disposer
         0: .line 206
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.intGlyphImages:[I
            ifnull 5
         1: .line 207
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.intGlyphImages:[I
         2: .line 208
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
         3: .line 207
            invokestatic sun.font.StrikeCache.freeCachedIntMemory:([IJ)V
         4: .line 209
            goto 43
      StackMap locals:
      StackMap stack:
         5: aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.longGlyphImages:[J
            ifnull 10
         6: .line 210
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.longGlyphImages:[J
         7: .line 211
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
         8: .line 210
            invokestatic sun.font.StrikeCache.freeCachedLongMemory:([JJ)V
         9: .line 212
            goto 43
      StackMap locals:
      StackMap stack:
        10: aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            ifnull 24
        11: .line 217
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        12: goto 20
        13: .line 218
      StackMap locals: int
      StackMap stack:
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            iload 1 /* i */
            aaload
            ifnull 19
        14: .line 219
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            iload 1 /* i */
            aaload
        15: .line 220
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
        16: .line 219
            invokestatic sun.font.StrikeCache.freeCachedIntMemory:([IJ)V
        17: .line 222
            aload 0 /* disposer */
            lconst_0
            putfield sun.font.FontStrikeDisposer.pScalerContext:J
        18: .line 223
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            iload 1 /* i */
            aconst_null
            aastore
        19: .line 217
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 1 /* i */
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segIntGlyphImages:[[I
            arraylength
            if_icmplt 13
        end local 1 // int i
        21: .line 229
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            lconst_0
            lcmp
            ifeq 43
        22: .line 230
            iconst_0
            newarray 10
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            invokestatic sun.font.StrikeCache.freeCachedIntMemory:([IJ)V
        23: .line 232
            goto 43
      StackMap locals:
      StackMap stack:
        24: aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            ifnull 38
        25: .line 233
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        26: goto 34
        27: .line 234
      StackMap locals: int
      StackMap stack:
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            iload 1 /* i */
            aaload
            ifnull 33
        28: .line 235
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            iload 1 /* i */
            aaload
        29: .line 236
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
        30: .line 235
            invokestatic sun.font.StrikeCache.freeCachedLongMemory:([JJ)V
        31: .line 237
            aload 0 /* disposer */
            lconst_0
            putfield sun.font.FontStrikeDisposer.pScalerContext:J
        32: .line 238
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            iload 1 /* i */
            aconst_null
            aastore
        33: .line 233
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        34: iload 1 /* i */
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.segLongGlyphImages:[[J
            arraylength
            if_icmplt 27
        end local 1 // int i
        35: .line 241
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            lconst_0
            lcmp
            ifeq 43
        36: .line 242
            iconst_0
            newarray 11
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            invokestatic sun.font.StrikeCache.freeCachedLongMemory:([JJ)V
        37: .line 244
            goto 43
      StackMap locals:
      StackMap stack:
        38: aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            lconst_0
            lcmp
            ifeq 43
        39: .line 249
            invokestatic sun.font.StrikeCache.longAddresses:()Z
            ifeq 42
        40: .line 250
            iconst_0
            newarray 11
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            invokestatic sun.font.StrikeCache.freeCachedLongMemory:([JJ)V
        41: .line 251
            goto 43
        42: .line 252
      StackMap locals:
      StackMap stack:
            iconst_0
            newarray 10
            aload 0 /* disposer */
            getfield sun.font.FontStrikeDisposer.pScalerContext:J
            invokestatic sun.font.StrikeCache.freeCachedIntMemory:([IJ)V
        43: .line 255
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.font.FontStrikeDisposer disposer
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   44     0  disposer  Lsun/font/FontStrikeDisposer;
           12   21     1         i  I
           26   35     1         i  I
    MethodParameters:
          Name  Flags
      disposer  

  private static boolean longAddresses();
    descriptor: ()Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 258
            getstatic sun.font.StrikeCache.nativeAddressSize:I
            bipush 8
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void disposeStrike(sun.font.FontStrikeDisposer);
    descriptor: (Lsun/font/FontStrikeDisposer;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // sun.font.FontStrikeDisposer disposer
         0: .line 275
            getstatic sun.java2d.Disposer.pollingQueue:Z
            ifeq 3
         1: .line 276
            aload 0 /* disposer */
            invokestatic sun.font.StrikeCache.doDispose:(Lsun/font/FontStrikeDisposer;)V
         2: .line 277
            return
         3: .line 280
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 1 /* rq */
        start local 1 // sun.java2d.pipe.RenderQueue rq
         4: .line 282
            invokestatic java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment:()Ljava/awt/GraphicsEnvironment;
         5: .line 281
            astore 2 /* ge */
        start local 2 // java.awt.GraphicsEnvironment ge
         6: .line 283
            invokestatic java.awt.GraphicsEnvironment.isHeadless:()Z
            ifne 14
         7: .line 285
            aload 2 /* ge */
            invokevirtual java.awt.GraphicsEnvironment.getDefaultScreenDevice:()Ljava/awt/GraphicsDevice;
            invokevirtual java.awt.GraphicsDevice.getDefaultConfiguration:()Ljava/awt/GraphicsConfiguration;
         8: .line 284
            astore 3 /* gc */
        start local 3 // java.awt.GraphicsConfiguration gc
         9: .line 286
            aload 3 /* gc */
            instanceof sun.java2d.pipe.hw.AccelGraphicsConfig
            ifeq 14
        10: .line 287
            aload 3 /* gc */
            checkcast sun.java2d.pipe.hw.AccelGraphicsConfig
            astore 4 /* agc */
        start local 4 // sun.java2d.pipe.hw.AccelGraphicsConfig agc
        11: .line 288
            aload 4 /* agc */
            invokeinterface sun.java2d.pipe.hw.AccelGraphicsConfig.getContext:()Lsun/java2d/pipe/BufferedContext;
            astore 5 /* bc */
        start local 5 // sun.java2d.pipe.BufferedContext bc
        12: .line 289
            aload 5 /* bc */
            ifnull 14
        13: .line 290
            aload 5 /* bc */
            invokevirtual sun.java2d.pipe.BufferedContext.getRenderQueue:()Lsun/java2d/pipe/RenderQueue;
            astore 1 /* rq */
        end local 5 // sun.java2d.pipe.BufferedContext bc
        end local 4 // sun.java2d.pipe.hw.AccelGraphicsConfig agc
        end local 3 // java.awt.GraphicsConfiguration gc
        14: .line 294
      StackMap locals: sun.java2d.pipe.RenderQueue java.awt.GraphicsEnvironment
      StackMap stack:
            aload 1 /* rq */
            ifnull 23
        15: .line 295
            aload 1 /* rq */
            invokevirtual sun.java2d.pipe.RenderQueue.lock:()V
        16: .line 297
            aload 1 /* rq */
            new sun.font.StrikeCache$2
            dup
            aload 0 /* disposer */
            invokespecial sun.font.StrikeCache$2.<init>:(Lsun/font/FontStrikeDisposer;)V
            invokevirtual sun.java2d.pipe.RenderQueue.flushAndInvokeNow:(Ljava/lang/Runnable;)V
        17: .line 303
            goto 21
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: astore 3
        19: .line 304
            aload 1 /* rq */
            invokevirtual sun.java2d.pipe.RenderQueue.unlock:()V
        20: .line 305
            aload 3
            athrow
        21: .line 304
      StackMap locals:
      StackMap stack:
            aload 1 /* rq */
            invokevirtual sun.java2d.pipe.RenderQueue.unlock:()V
        22: .line 306
            goto 24
        23: .line 307
      StackMap locals:
      StackMap stack:
            aload 0 /* disposer */
            invokestatic sun.font.StrikeCache.doDispose:(Lsun/font/FontStrikeDisposer;)V
        24: .line 309
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.awt.GraphicsEnvironment ge
        end local 1 // sun.java2d.pipe.RenderQueue rq
        end local 0 // sun.font.FontStrikeDisposer disposer
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0  disposer  Lsun/font/FontStrikeDisposer;
            4   25     1        rq  Lsun/java2d/pipe/RenderQueue;
            6   25     2        ge  Ljava/awt/GraphicsEnvironment;
            9   14     3        gc  Ljava/awt/GraphicsConfiguration;
           11   14     4       agc  Lsun/java2d/pipe/hw/AccelGraphicsConfig;
           12   14     5        bc  Lsun/java2d/pipe/BufferedContext;
      Exception table:
        from    to  target  type
          16    18      18  any
    MethodParameters:
          Name  Flags
      disposer  final

  static native void freeIntPointer(int);
    descriptor: (I)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    MethodParameters:
      Name  Flags
      ptr   

  static native void freeLongPointer(long);
    descriptor: (J)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    MethodParameters:
      Name  Flags
      ptr   

  private static native void freeIntMemory(int[], long);
    descriptor: ([IJ)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
           Name  Flags
      glyphPtrs  
      pContext   

  private static native void freeLongMemory(long[], long);
    descriptor: ([JJ)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
           Name  Flags
      glyphPtrs  
      pContext   

  private static void freeCachedIntMemory(int[], long);
    descriptor: ([IJ)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // int[] glyphPtrs
        start local 1 // long pContext
         0: .line 317
            getstatic sun.font.StrikeCache.disposeListeners:Ljava/util/ArrayList;
            dup
            astore 3
            monitorenter
         1: .line 318
            getstatic sun.font.StrikeCache.disposeListeners:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            ifle 13
         2: .line 319
            aconst_null
            astore 4 /* gids */
        start local 4 // java.util.ArrayList gids
         3: .line 321
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 10
         5: .line 322
      StackMap locals: java.util.ArrayList java.util.ArrayList int
      StackMap stack:
            aload 0 /* glyphPtrs */
            iload 5 /* i */
            iaload
            ifeq 9
            getstatic sun.font.StrikeCache.unsafe:Lsun/misc/Unsafe;
            aload 0 /* glyphPtrs */
            iload 5 /* i */
            iaload
            getstatic sun.font.StrikeCache.managedOffset:I
            iadd
            i2l
            invokevirtual sun.misc.Unsafe.getByte:(J)B
            ifne 9
         6: .line 324
            aload 4 /* gids */
            ifnonnull 8
         7: .line 325
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* gids */
         8: .line 327
      StackMap locals:
      StackMap stack:
            aload 4 /* gids */
            aload 0 /* glyphPtrs */
            iload 5 /* i */
            iaload
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         9: .line 321
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* i */
            aload 0 /* glyphPtrs */
            arraylength
            if_icmplt 5
        end local 5 // int i
        11: .line 331
            aload 4 /* gids */
            ifnull 13
        12: .line 334
            aload 4 /* gids */
            invokestatic sun.font.StrikeCache.notifyDisposeListeners:(Ljava/util/ArrayList;)V
        end local 4 // java.util.ArrayList gids
        13: .line 317
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 3
            monitorexit
        16: athrow
        17: .line 339
      StackMap locals:
      StackMap stack:
            aload 0 /* glyphPtrs */
            lload 1 /* pContext */
            invokestatic sun.font.StrikeCache.freeIntMemory:([IJ)V
        18: .line 340
            return
        end local 1 // long pContext
        end local 0 // int[] glyphPtrs
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0  glyphPtrs  [I
            0   19     1   pContext  J
            3   13     4       gids  Ljava/util/ArrayList<Ljava/lang/Long;>;
            4   11     5          i  I
      Exception table:
        from    to  target  type
           1    14      15  any
          15    16      15  any
    MethodParameters:
           Name  Flags
      glyphPtrs  
      pContext   

  private static void freeCachedLongMemory(long[], long);
    descriptor: ([JJ)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // long[] glyphPtrs
        start local 1 // long pContext
         0: .line 343
            getstatic sun.font.StrikeCache.disposeListeners:Ljava/util/ArrayList;
            dup
            astore 3
            monitorenter
         1: .line 344
            getstatic sun.font.StrikeCache.disposeListeners:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            ifle 14
         2: .line 345
            aconst_null
            astore 4 /* gids */
        start local 4 // java.util.ArrayList gids
         3: .line 347
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 11
         5: .line 348
      StackMap locals: java.util.ArrayList java.util.ArrayList int
      StackMap stack:
            aload 0 /* glyphPtrs */
            iload 5 /* i */
            laload
            lconst_0
            lcmp
            ifeq 10
         6: .line 349
            getstatic sun.font.StrikeCache.unsafe:Lsun/misc/Unsafe;
            aload 0 /* glyphPtrs */
            iload 5 /* i */
            laload
            getstatic sun.font.StrikeCache.managedOffset:I
            i2l
            ladd
            invokevirtual sun.misc.Unsafe.getByte:(J)B
            ifne 10
         7: .line 351
            aload 4 /* gids */
            ifnonnull 9
         8: .line 352
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* gids */
         9: .line 354
      StackMap locals:
      StackMap stack:
            aload 4 /* gids */
            aload 0 /* glyphPtrs */
            iload 5 /* i */
            laload
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        10: .line 347
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* i */
            aload 0 /* glyphPtrs */
            arraylength
            if_icmplt 5
        end local 5 // int i
        12: .line 358
            aload 4 /* gids */
            ifnull 14
        13: .line 361
            aload 4 /* gids */
            invokestatic sun.font.StrikeCache.notifyDisposeListeners:(Ljava/util/ArrayList;)V
        end local 4 // java.util.ArrayList gids
        14: .line 343
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        15: goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 3
            monitorexit
        17: athrow
        18: .line 366
      StackMap locals:
      StackMap stack:
            aload 0 /* glyphPtrs */
            lload 1 /* pContext */
            invokestatic sun.font.StrikeCache.freeLongMemory:([JJ)V
        19: .line 367
            return
        end local 1 // long pContext
        end local 0 // long[] glyphPtrs
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0  glyphPtrs  [J
            0   20     1   pContext  J
            3   14     4       gids  Ljava/util/ArrayList<Ljava/lang/Long;>;
            4   12     5          i  I
      Exception table:
        from    to  target  type
           1    15      16  any
          16    17      16  any
    MethodParameters:
           Name  Flags
      glyphPtrs  
      pContext   

  public static void addGlyphDisposedListener(sun.font.GlyphDisposedListener);
    descriptor: (Lsun/font/GlyphDisposedListener;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.font.GlyphDisposedListener listener
         0: .line 370
            getstatic sun.font.StrikeCache.disposeListeners:Ljava/util/ArrayList;
            dup
            astore 1
            monitorenter
         1: .line 371
            getstatic sun.font.StrikeCache.disposeListeners:Ljava/util/ArrayList;
            aload 0 /* listener */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         2: .line 370
            aload 1
            monitorexit
         3: goto 6
      StackMap locals: sun.font.GlyphDisposedListener java.util.ArrayList
      StackMap stack: java.lang.Throwable
         4: aload 1
            monitorexit
         5: athrow
         6: .line 373
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.font.GlyphDisposedListener listener
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0  listener  Lsun/font/GlyphDisposedListener;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    MethodParameters:
          Name  Flags
      listener  

  private static void notifyDisposeListeners(java.util.ArrayList<java.lang.Long>);
    descriptor: (Ljava/util/ArrayList;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.util.ArrayList glyphs
         0: .line 376
            getstatic sun.font.StrikeCache.disposeListeners:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 2
            goto 3
      StackMap locals: java.util.ArrayList top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.font.GlyphDisposedListener
            astore 1 /* listener */
        start local 1 // sun.font.GlyphDisposedListener listener
         2: .line 377
            aload 1 /* listener */
            aload 0 /* glyphs */
            invokeinterface sun.font.GlyphDisposedListener.glyphDisposed:(Ljava/util/ArrayList;)V
        end local 1 // sun.font.GlyphDisposedListener listener
         3: .line 376
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 379
            return
        end local 0 // java.util.ArrayList glyphs
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0    glyphs  Ljava/util/ArrayList<Ljava/lang/Long;>;
            2    3     1  listener  Lsun/font/GlyphDisposedListener;
    Signature: (Ljava/util/ArrayList<Ljava/lang/Long;>;)V
    MethodParameters:
        Name  Flags
      glyphs  

  public static java.lang.ref.Reference getStrikeRef(sun.font.FontStrike);
    descriptor: (Lsun/font/FontStrike;)Ljava/lang/ref/Reference;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.font.FontStrike strike
         0: .line 382
            aload 0 /* strike */
            getstatic sun.font.StrikeCache.cacheRefTypeWeak:Z
            invokestatic sun.font.StrikeCache.getStrikeRef:(Lsun/font/FontStrike;Z)Ljava/lang/ref/Reference;
            areturn
        end local 0 // sun.font.FontStrike strike
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  strike  Lsun/font/FontStrike;
    MethodParameters:
        Name  Flags
      strike  

  public static java.lang.ref.Reference getStrikeRef(sun.font.FontStrike, boolean);
    descriptor: (Lsun/font/FontStrike;Z)Ljava/lang/ref/Reference;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.font.FontStrike strike
        start local 1 // boolean weak
         0: .line 393
            aload 0 /* strike */
            getfield sun.font.FontStrike.disposer:Lsun/font/FontStrikeDisposer;
            ifnonnull 4
         1: .line 394
            iload 1 /* weak */
            ifeq 3
         2: .line 395
            new java.lang.ref.WeakReference
            dup
            aload 0 /* strike */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            areturn
         3: .line 397
      StackMap locals:
      StackMap stack:
            new java.lang.ref.SoftReference
            dup
            aload 0 /* strike */
            invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
            areturn
         4: .line 401
      StackMap locals:
      StackMap stack:
            iload 1 /* weak */
            ifeq 6
         5: .line 402
            new sun.font.StrikeCache$WeakDisposerRef
            dup
            aload 0 /* strike */
            invokespecial sun.font.StrikeCache$WeakDisposerRef.<init>:(Lsun/font/FontStrike;)V
            areturn
         6: .line 404
      StackMap locals:
      StackMap stack:
            new sun.font.StrikeCache$SoftDisposerRef
            dup
            aload 0 /* strike */
            invokespecial sun.font.StrikeCache$SoftDisposerRef.<init>:(Lsun/font/FontStrike;)V
            areturn
        end local 1 // boolean weak
        end local 0 // sun.font.FontStrike strike
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  strike  Lsun/font/FontStrike;
            0    7     1    weak  Z
    MethodParameters:
        Name  Flags
      strike  
      weak    
}
SourceFile: "StrikeCache.java"
NestMembers:
  sun.font.StrikeCache$1  sun.font.StrikeCache$2  sun.font.StrikeCache$DisposableStrike  sun.font.StrikeCache$SoftDisposerRef  sun.font.StrikeCache$WeakDisposerRef
InnerClasses:
  sun.font.StrikeCache$1
  sun.font.StrikeCache$2
  abstract DisposableStrike = sun.font.StrikeCache$DisposableStrike of sun.font.StrikeCache
  SoftDisposerRef = sun.font.StrikeCache$SoftDisposerRef of sun.font.StrikeCache
  WeakDisposerRef = sun.font.StrikeCache$WeakDisposerRef of sun.font.StrikeCache