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 invdtx;
    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 270
            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 273
            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 221
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 222
            aload 0 /* this */
            aload 1 /* font */
            putfield sun.font.GlyphLayout$SDCache.key_font:Ljava/awt/Font;
         2: .line 223
            aload 0 /* this */
            aload 2 /* frc */
            putfield sun.font.GlyphLayout$SDCache.key_frc:Ljava/awt/font/FontRenderContext;
         3: .line 228
            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 229
            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 230
            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 231
            dconst_0
            dconst_0
         7: .line 229
            invokevirtual java.awt.geom.AffineTransform.setTransform:(DDDDDD)V
         8: .line 232
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.isIdentity:()Z
            ifne 13
         9: .line 234
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.font.GlyphLayout$SDCache.dtx:Ljava/awt/geom/AffineTransform;
            invokevirtual java.awt.geom.AffineTransform.createInverse:()Ljava/awt/geom/AffineTransform;
            putfield sun.font.GlyphLayout$SDCache.invdtx:Ljava/awt/geom/AffineTransform;
        10: .line 235
            goto 13
        11: .line 236
      StackMap locals: sun.font.GlyphLayout$SDCache java.awt.Font java.awt.font.FontRenderContext
      StackMap stack: java.awt.geom.NoninvertibleTransformException
            astore 3 /* e */
        start local 3 // java.awt.geom.NoninvertibleTransformException e
        12: .line 237
            new java.lang.InternalError
            dup
            aload 3 /* e */
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.awt.geom.NoninvertibleTransformException e
        13: .line 241
      StackMap locals:
      StackMap stack:
            aload 1 /* font */
            invokevirtual java.awt.Font.getSize2D:()F
            fstore 3 /* ptSize */
        start local 3 // float ptSize
        14: .line 242
            aload 1 /* font */
            invokevirtual java.awt.Font.isTransformed:()Z
            ifeq 26
        15: .line 243
            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;
        16: .line 244
            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
        17: .line 245
            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
        18: .line 246
            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
        19: .line 245
            putfield sun.font.GlyphLayout$SDCache.delta:Ljava/awt/geom/Point2D$Float;
        20: .line 247
            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
        21: .line 248
            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
        22: .line 249
            dconst_0
            dconst_0
        23: .line 247
            invokevirtual java.awt.geom.AffineTransform.setTransform:(DDDDDD)V
        24: .line 250
            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
        25: .line 251
            goto 29
        26: .line 252
      StackMap locals: 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;
        27: .line 253
            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;
        28: .line 254
            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
        29: .line 262
      StackMap locals:
      StackMap stack:
            aload 2 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getAntiAliasingHint:()Ljava/lang/Object;
        30: .line 263
            aload 1 /* font */
            invokestatic sun.font.FontUtilities.getFont2D:(Ljava/awt/Font;)Lsun/font/Font2D;
        31: .line 264
            fload 3 /* ptSize */
            invokestatic java.lang.Math.abs:(F)F
            f2i
        32: .line 262
            invokestatic sun.font.FontStrikeDesc.getAAHintIntVal:(Ljava/lang/Object;Lsun/font/Font2D;I)I
        33: .line 261
            istore 4 /* aa */
        start local 4 // int aa
        34: .line 266
            aload 2 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getFractionalMetricsHint:()Ljava/lang/Object;
        35: .line 265
            invokestatic sun.font.FontStrikeDesc.getFMHintIntVal:(Ljava/lang/Object;)I
            istore 5 /* fm */
        start local 5 // int fm
        36: .line 267
            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;
        37: .line 268
            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   38     0    this  Lsun/font/GlyphLayout$SDCache;
            0   38     1    font  Ljava/awt/Font;
            0   38     2     frc  Ljava/awt/font/FontRenderContext;
           12   13     3       e  Ljava/awt/geom/NoninvertibleTransformException;
           14   38     3  ptSize  F
           34   38     4      aa  I
           36   38     5      fm  I
      Exception table:
        from    to  target  type
           9    10      11  Class java.awt.geom.NoninvertibleTransformException
    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 311
            aload 1 /* frc */
            invokevirtual java.awt.font.FontRenderContext.isTransformed:()Z
            ifeq 14
         1: .line 312
            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 313
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getTranslateX:()D
            dconst_0
            dcmpl
            ifne 4
         3: .line 314
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getTranslateY:()D
            dconst_0
            dcmpl
            ifeq 14
         4: .line 315
      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 316
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getShearY:()D
         6: .line 317
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getShearX:()D
         7: .line 318
            aload 2 /* transform */
            invokevirtual java.awt.geom.AffineTransform.getScaleY:()D
         8: .line 319
            dconst_0
            dconst_0
         9: .line 315
            invokespecial java.awt.geom.AffineTransform.<init>:(DDDDDD)V
            astore 2 /* transform */
        10: .line 320
            new java.awt.font.FontRenderContext
            dup
            aload 2 /* transform */
        11: .line 321
            aload 1 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getAntiAliasingHint:()Ljava/lang/Object;
        12: .line 322
            aload 1 /* frc */
            invokevirtual java.awt.font.FontRenderContext.getFractionalMetricsHint:()Ljava/lang/Object;
        13: .line 320
            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 327
      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 328
            aconst_null
            astore 3 /* cache */
        start local 3 // java.util.concurrent.ConcurrentHashMap cache
        16: .line 329
            aconst_null
            astore 4 /* res */
        start local 4 // sun.font.GlyphLayout$SDCache res
        17: .line 330
            getstatic sun.font.GlyphLayout$SDCache.cacheRef:Ljava/lang/ref/SoftReference;
            ifnull 21
        18: .line 331
            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 332
            aload 3 /* cache */
            ifnull 21
        20: .line 333
            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 336
      StackMap locals: sun.font.GlyphLayout$SDCache$SDKey java.util.concurrent.ConcurrentHashMap sun.font.GlyphLayout$SDCache
      StackMap stack:
            aload 4 /* res */
            ifnonnull 31
        22: .line 337
            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 338
            aload 3 /* cache */
            ifnonnull 28
        24: .line 339
            new java.util.concurrent.ConcurrentHashMap
            dup
            bipush 10
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            astore 3 /* cache */
        25: .line 341
            new java.lang.ref.SoftReference
            dup
            aload 3 /* cache */
        26: .line 340
            invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
            putstatic sun.font.GlyphLayout$SDCache.cacheRef:Ljava/lang/ref/SoftReference;
        27: .line 342
            goto 30
      StackMap locals:
      StackMap stack:
        28: aload 3 /* cache */
            invokevirtual java.util.concurrent.ConcurrentHashMap.size:()I
            sipush 512
            if_icmplt 30
        29: .line 343
            aload 3 /* cache */
            invokevirtual java.util.concurrent.ConcurrentHashMap.clear:()V
        30: .line 345
      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 347
      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