final class sun.font.GlyphLayout$SDCache
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.font.GlyphLayout$SDCache
  super_class: java.lang.Object
{
  public java.awt.Font key_font;
    descriptor: Ljava/awt/Font;
    flags: (0x0001) ACC_PUBLIC

  public java.awt.font.FontRenderContext key_frc;
    descriptor: Ljava/awt/font/FontRenderContext;
    flags: (0x0001) ACC_PUBLIC

  public java.awt.geom.AffineTransform dtx;
    descriptor: Ljava/awt/geom/AffineTransform;
    flags: (0x0001) ACC_PUBLIC

  public java.awt.geom.AffineTransform gtx;
    descriptor: Ljava/awt/geom/AffineTransform;
    flags: (0x0001) ACC_PUBLIC

  public java.awt.geom.Point2D$Float delta;
    descriptor: Ljava/awt/geom/Point2D$Float;
    flags: (0x0001) ACC_PUBLIC

  public sun.font.FontStrikeDesc sd;
    descriptor: Lsun/font/FontStrikeDesc;
    flags: (0x0001) ACC_PUBLIC

  private static final java.awt.geom.Point2D$Float ZERO_DELTA;
    descriptor: Ljava/awt/geom/Point2D$Float;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static java.lang.ref.SoftReference<java.util.concurrent.ConcurrentHashMap<sun.font.GlyphLayout$SDCache$SDKey, sun.font.GlyphLayout$SDCache>> cacheRef;
    descriptor: Ljava/lang/ref/SoftReference;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/lang/ref/SoftReference<Ljava/util/concurrent/ConcurrentHashMap<Lsun/font/GlyphLayout$SDCache$SDKey;Lsun/font/GlyphLayout$SDCache;>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 261
            new java.awt.geom.Point2D$Float
            dup
            invokespecial java.awt.geom.Point2D$Float.<init>:()V
            putstatic sun.font.GlyphLayout$SDCache.ZERO_DELTA:Ljava/awt/geom/Point2D$Float;
         1: .line 264
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(java.awt.Font, java.awt.font.FontRenderContext);
    descriptor: (Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=13, locals=6, args_size=3
        start local 0 // sun.font.GlyphLayout$SDCache this
        start local 1 // java.awt.Font font
        start local 2 // java.awt.font.FontRenderContext frc
         0: .line 220
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 221
            aload 0 /* this */
            aload 1 /* font */
            putfield sun.font.GlyphLayout$SDCache.key_font:Ljava/awt/Font;
         2: .line 222
            aload 0 /* this */
            aload 2 /* frc */
            putfield sun.font.GlyphLayout$SDCache.key_frc:Ljava/awt/font/FontRenderContext;
         3: .line 227
            aload 0 /* this */
            aload 2 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getTransform:()Ljava/awt/geom/AffineTransform;
            putfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
         4: .line 228
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getScaleX:()D
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getShearY:()D
         5: .line 229
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getShearX:()D
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getScaleY:()D
         6: .line 230
            dconst_0
            dconst_0
         7: .line 228
            invokevirtual java.awt.geom.AffineTransform.setTransform:(DDDDDD)V
         8: .line 232
            aload 1 /* font */
            invokevirtual java.awt.Font.getSize2D:()F
            fstore 3 /* ptSize */
        start local 3 // float ptSize
         9: .line 233
            aload 1 /* font */
            invokevirtual java.awt.Font.isTransformed:()Z
            ifeq 21
        10: .line 234
            aload 0 /* this */
            aload 1 /* font */
            invokevirtual java.awt.Font.getTransform:()Ljava/awt/geom/AffineTransform;
            putfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
        11: .line 235
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            fload 3 /* ptSize */
            f2d
            fload 3 /* ptSize */
            f2d
            invokevirtual java.awt.geom.AffineTransform.scale:(DD)V
        12: .line 236
            aload 0 /* this */
            new java.awt.geom.Point2D$Float
            dup
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getTranslateX:()D
            d2f
        13: .line 237
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getTranslateY:()D
            d2f
            invokespecial java.awt.geom.Point2D$Float.<init>:(FF)V
        14: .line 236
            putfield sun.font.GlyphLayout$SDCache.delta:Ljava/awt/geom/Point2D$Float;
        15: .line 238
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getScaleX:()D
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getShearY:()D
        16: .line 239
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getShearX:()D
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.getScaleY:()D
        17: .line 240
            dconst_0
            dconst_0
        18: .line 238
            invokevirtual java.awt.geom.AffineTransform.setTransform:(DDDDDD)V
        19: .line 241
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.preConcatenate:(Ljava/awt/geom/AffineTransform;)V
        20: .line 242
            goto 24
        21: .line 243
      StackMap locals: sun.font.GlyphLayout$SDCache java.awt.Font java.awt.font.FontRenderContext float
      StackMap stack:
            aload 0 /* this */
            getstatic sun.font.GlyphLayout$SDCache.ZERO_DELTA:Ljava/awt/geom/Point2D$Float;
            putfield sun.font.GlyphLayout$SDCache.delta:Ljava/awt/geom/Point2D$Float;
        22: .line 244
            aload 0 /* this */
            new java.awt.geom.AffineTransform
            dup
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            invokespecial java.awt.geom.AffineTransform.<init>:(Ljava/awt/geom/AffineTransform;)V
            putfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
        23: .line 245
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            fload 3 /* ptSize */
            f2d
            fload 3 /* ptSize */
            f2d
            invokevirtual java.awt.geom.AffineTransform.scale:(DD)V
        24: .line 253
      StackMap locals:
      StackMap stack:
            aload 2 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getAntiAliasingHint:()Ljava/lang/Object;
        25: .line 254
            aload 1 /* font */
            invokestatic sun.font.FontUtilities.getFont2D:(Ljava/awt/Font;)Lsun/font/Font2D;
        26: .line 255
            fload 3 /* ptSize */
            invokestatic java.lang.Math.abs:(F)F
            f2i
        27: .line 253
            invokestatic sun.font.FontStrikeDesc.getAAHintIntVal:(Ljava/lang/Object;Lsun/font/Font2D;I)I
        28: .line 252
            istore 4 /* aa */
        start local 4 // int aa
        29: .line 257
            aload 2 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getFractionalMetricsHint:()Ljava/lang/Object;
        30: .line 256
            invokestatic sun.font.FontStrikeDesc.getFMHintIntVal:(Ljava/lang/Object;)I
            istore 5 /* fm */
        start local 5 // int fm
        31: .line 258
            aload 0 /* this */
            new sun.font.FontStrikeDesc
            dup
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.gtx:Ljava/awt/geom/AffineTransform;
            aload 1 /* font */
            invokevirtual java.awt.Font.getStyle:()I
            iload 4 /* aa */
            iload 5 /* fm */
            invokespecial sun.font.FontStrikeDesc.<init>:(Ljava/awt/geom/AffineTransform;Ljava/awt/geom/AffineTransform;III)V
            putfield sun.font.GlyphLayout$SDCache.sd:Lsun/font/FontStrikeDesc;
        32: .line 259
            return
        end local 5 // int fm
        end local 4 // int aa
        end local 3 // float ptSize
        end local 2 // java.awt.font.FontRenderContext frc
        end local 1 // java.awt.Font font
        end local 0 // sun.font.GlyphLayout$SDCache this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   33     0    this  Lsun/font/GlyphLayout$SDCache;
            0   33     1    font  Ljava/awt/Font;
            0   33     2     frc  Ljava/awt/font/FontRenderContext;
            9   33     3  ptSize  F
           29   33     4      aa  I
           31   33     5      fm  I
    MethodParameters:
      Name  Flags
      font  
      frc   

  public static sun.font.GlyphLayout$SDCache get(java.awt.Font, java.awt.font.FontRenderContext);
    descriptor: (Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)Lsun/font/GlyphLayout$SDCache;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=14, locals=5, args_size=2
        start local 0 // java.awt.Font font
        start local 1 // java.awt.font.FontRenderContext frc
         0: .line 302
            aload 1 /* frc */
            invokevirtual java.awt.font.FontRenderContext.isTransformed:()Z
            ifeq 14
         1: .line 303
            aload 1 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getTransform:()Ljava/awt/geom/AffineTransform;
            astore 2 /* transform */
        start local 2 // java.awt.geom.AffineTransform transform
         2: .line 304
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getTranslateX:()D
            dconst_0
            dcmpl
            ifne 4
         3: .line 305
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getTranslateY:()D
            dconst_0
            dcmpl
            ifeq 14
         4: .line 306
      StackMap locals: java.awt.geom.AffineTransform
      StackMap stack:
            new java.awt.geom.AffineTransform
            dup
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getScaleX:()D
         5: .line 307
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getShearY:()D
         6: .line 308
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getShearX:()D
         7: .line 309
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getScaleY:()D
         8: .line 310
            dconst_0
            dconst_0
         9: .line 306
            invokespecial java.awt.geom.AffineTransform.<init>:(DDDDDD)V
            astore 2 /* transform */
        10: .line 311
            new java.awt.font.FontRenderContext
            dup
            aload 2 /* transform */
        11: .line 312
            aload 1 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getAntiAliasingHint:()Ljava/lang/Object;
        12: .line 313
            aload 1 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getFractionalMetricsHint:()Ljava/lang/Object;
        13: .line 311
            invokespecial java.awt.font.FontRenderContext.<init>:(Ljava/awt/geom/AffineTransform;Ljava/lang/Object;Ljava/lang/Object;)V
            astore 1 /* frc */
        end local 2 // java.awt.geom.AffineTransform transform
        14: .line 318
      StackMap locals:
      StackMap stack:
            new sun.font.GlyphLayout$SDCache$SDKey
            dup
            aload 0 /* font */
            aload 1 /* frc */
            invokespecial sun.font.GlyphLayout$SDCache$SDKey.<init>:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
            astore 2 /* key */
        start local 2 // sun.font.GlyphLayout$SDCache$SDKey key
        15: .line 319
            aconst_null
            astore 3 /* cache */
        start local 3 // java.util.concurrent.ConcurrentHashMap cache
        16: .line 320
            aconst_null
            astore 4 /* res */
        start local 4 // sun.font.GlyphLayout$SDCache res
        17: .line 321
            getstatic sun.font.GlyphLayout$SDCache.cacheRef:Ljava/lang/ref/SoftReference;
            ifnull 21
        18: .line 322
            getstatic sun.font.GlyphLayout$SDCache.cacheRef:Ljava/lang/ref/SoftReference;
            invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
            checkcast java.util.concurrent.ConcurrentHashMap
            astore 3 /* cache */
        19: .line 323
            aload 3 /* cache */
            ifnull 21
        20: .line 324
            aload 3 /* cache */
            aload 2 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.font.GlyphLayout$SDCache
            astore 4 /* res */
        21: .line 327
      StackMap locals: sun.font.GlyphLayout$SDCache$SDKey java.util.concurrent.ConcurrentHashMap sun.font.GlyphLayout$SDCache
      StackMap stack:
            aload 4 /* res */
            ifnonnull 31
        22: .line 328
            new sun.font.GlyphLayout$SDCache
            dup
            aload 0 /* font */
            aload 1 /* frc */
            invokespecial sun.font.GlyphLayout$SDCache.<init>:(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V
            astore 4 /* res */
        23: .line 329
            aload 3 /* cache */
            ifnonnull 28
        24: .line 330
            new java.util.concurrent.ConcurrentHashMap
            dup
            bipush 10
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            astore 3 /* cache */
        25: .line 332
            new java.lang.ref.SoftReference
            dup
            aload 3 /* cache */
        26: .line 331
            invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
            putstatic sun.font.GlyphLayout$SDCache.cacheRef:Ljava/lang/ref/SoftReference;
        27: .line 333
            goto 30
      StackMap locals:
      StackMap stack:
        28: aload 3 /* cache */
            invokevirtual java.util.concurrent.ConcurrentHashMap.size:()I
            sipush 512
            if_icmplt 30
        29: .line 334
            aload 3 /* cache */
            invokevirtual java.util.concurrent.ConcurrentHashMap.clear:()V
        30: .line 336
      StackMap locals:
      StackMap stack:
            aload 3 /* cache */
            aload 2 /* key */
            aload 4 /* res */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        31: .line 338
      StackMap locals:
      StackMap stack:
            aload 4 /* res */
            areturn
        end local 4 // sun.font.GlyphLayout$SDCache res
        end local 3 // java.util.concurrent.ConcurrentHashMap cache
        end local 2 // sun.font.GlyphLayout$SDCache$SDKey key
        end local 1 // java.awt.font.FontRenderContext frc
        end local 0 // java.awt.Font font
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   32     0       font  Ljava/awt/Font;
            0   32     1        frc  Ljava/awt/font/FontRenderContext;
            2   14     2  transform  Ljava/awt/geom/AffineTransform;
           15   32     2        key  Lsun/font/GlyphLayout$SDCache$SDKey;
           16   32     3      cache  Ljava/util/concurrent/ConcurrentHashMap<Lsun/font/GlyphLayout$SDCache$SDKey;Lsun/font/GlyphLayout$SDCache;>;
           17   32     4        res  Lsun/font/GlyphLayout$SDCache;
    MethodParameters:
      Name  Flags
      font  
      frc   
}
SourceFile: "GlyphLayout.java"
NestHost: sun.font.GlyphLayout
InnerClasses:
  public Float = java.awt.geom.Point2D$Float of java.awt.geom.Point2D
  private final SDCache = sun.font.GlyphLayout$SDCache of sun.font.GlyphLayout
  private final SDKey = sun.font.GlyphLayout$SDCache$SDKey of sun.font.GlyphLayout$SDCache