class javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache
  super_class: java.lang.Object
{
  java.util.Map<javafx.scene.shape.Shape3D$Key, java.lang.ref.SoftReference<javafx.scene.shape.TriangleMesh>> cache;
    descriptor: Ljava/util/Map;
    flags: (0x0000) 
    Signature: Ljava/util/Map<Ljavafx/scene/shape/Shape3D$Key;Ljava/lang/ref/SoftReference<Ljavafx/scene/shape/TriangleMesh;>;>;

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
         0: .line 37
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 38
            aload 0 /* this */
            new java.util.HashMap
            dup
            bipush 17
            ldc 0.75
            invokespecial java.util.HashMap.<init>:(IF)V
            putfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
         2: .line 37
            return
        end local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljavafx/scene/shape/PredefinedMeshManager$TriangleMeshCache;

  private javafx.scene.shape.TriangleMesh get(javafx.scene.shape.Shape3D$Key);
    descriptor: (Ljavafx/scene/shape/Shape3D$Key;)Ljavafx/scene/shape/TriangleMesh;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
        start local 1 // javafx.scene.shape.Shape3D$Key key
         0: .line 41
            aload 0 /* this */
            invokevirtual javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cleanCache:()V
         1: .line 42
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 2
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ref.SoftReference
            invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
            checkcast javafx.scene.shape.TriangleMesh
            goto 3
      StackMap locals:
      StackMap stack:
         2: aconst_null
      StackMap locals:
      StackMap stack: javafx.scene.shape.TriangleMesh
         3: areturn
        end local 1 // javafx.scene.shape.Shape3D$Key key
        end local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljavafx/scene/shape/PredefinedMeshManager$TriangleMeshCache;
            0    4     1   key  Ljavafx/scene/shape/Shape3D$Key;
    MethodParameters:
      Name  Flags
      key   

  private void put(javafx.scene.shape.Shape3D$Key, javafx.scene.shape.TriangleMesh);
    descriptor: (Ljavafx/scene/shape/Shape3D$Key;Ljavafx/scene/shape/TriangleMesh;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
        start local 1 // javafx.scene.shape.Shape3D$Key key
        start local 2 // javafx.scene.shape.TriangleMesh mesh
         0: .line 46
            aload 0 /* this */
            invokevirtual javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cleanCache:()V
         1: .line 47
            aload 2 /* mesh */
            ifnull 3
         2: .line 48
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            aload 1 /* key */
            new java.lang.ref.SoftReference
            dup
            aload 2 /* mesh */
            invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 50
      StackMap locals:
      StackMap stack:
            return
        end local 2 // javafx.scene.shape.TriangleMesh mesh
        end local 1 // javafx.scene.shape.Shape3D$Key key
        end local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljavafx/scene/shape/PredefinedMeshManager$TriangleMeshCache;
            0    4     1   key  Ljavafx/scene/shape/Shape3D$Key;
            0    4     2  mesh  Ljavafx/scene/shape/TriangleMesh;
    MethodParameters:
      Name  Flags
      key   
      mesh  

  private void cleanCache();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
         0: .line 53
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  javafx/scene/shape/PredefinedMeshManager$TriangleMeshCache.lambda$0(Ljava/lang/ref/SoftReference;)Z (6)
                  (Ljava/lang/ref/SoftReference;)Z
            invokeinterface java.util.Collection.removeIf:(Ljava/util/function/Predicate;)Z
            pop
         1: .line 54
            return
        end local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljavafx/scene/shape/PredefinedMeshManager$TriangleMeshCache;

  private void clear();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
         0: .line 57
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         1: .line 58
            return
        end local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljavafx/scene/shape/PredefinedMeshManager$TriangleMeshCache;

  private int size();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
         0: .line 61
            aload 0 /* this */
            invokevirtual javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cleanCache:()V
         1: .line 62
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            ireturn
        end local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljavafx/scene/shape/PredefinedMeshManager$TriangleMeshCache;

  private void printStats(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
        start local 1 // java.lang.String name
         0: .line 67
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 1 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " size:    "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 68
            return
        end local 1 // java.lang.String name
        end local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljavafx/scene/shape/PredefinedMeshManager$TriangleMeshCache;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  private void invalidateMesh(javafx.scene.shape.Shape3D$Key);
    descriptor: (Ljavafx/scene/shape/Shape3D$Key;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
        start local 1 // javafx.scene.shape.Shape3D$Key key
         0: .line 71
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 9
         1: .line 72
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ref.SoftReference
            invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
            checkcast javafx.scene.shape.TriangleMesh
            astore 2 /* mesh */
        start local 2 // javafx.scene.shape.TriangleMesh mesh
         2: .line 73
            aload 2 /* mesh */
            ifnull 8
         3: .line 74
            aload 2 /* mesh */
            invokevirtual javafx.scene.shape.TriangleMesh.decRef:()V
         4: .line 75
            aload 2 /* mesh */
            invokevirtual javafx.scene.shape.TriangleMesh.getRefCount:()I
            istore 3 /* count */
        start local 3 // int count
         5: .line 76
            iload 3 /* count */
            ifne 9
         6: .line 77
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // int count
         7: .line 79
            goto 9
         8: .line 80
      StackMap locals: javafx.scene.shape.TriangleMesh
      StackMap stack:
            aload 0 /* this */
            getfield javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache.cache:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // javafx.scene.shape.TriangleMesh mesh
         9: .line 83
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javafx.scene.shape.Shape3D$Key key
        end local 0 // javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Ljavafx/scene/shape/PredefinedMeshManager$TriangleMeshCache;
            0   10     1    key  Ljavafx/scene/shape/Shape3D$Key;
            2    9     2   mesh  Ljavafx/scene/shape/TriangleMesh;
            5    7     3  count  I
    MethodParameters:
      Name  Flags
      key   

  private static boolean lambda$0(java.lang.ref.SoftReference);
    descriptor: (Ljava/lang/ref/SoftReference;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.ref.SoftReference ref
         0: .line 53
            aload 0 /* ref */
            invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
            ifnonnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.lang.ref.SoftReference ref
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0   ref  Ljava/lang/ref/SoftReference<Ljavafx/scene/shape/TriangleMesh;>;
}
SourceFile: "PredefinedMeshManager.java"
NestHost: javafx.scene.shape.PredefinedMeshManager
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private TriangleMeshCache = javafx.scene.shape.PredefinedMeshManager$TriangleMeshCache of javafx.scene.shape.PredefinedMeshManager
  abstract Key = javafx.scene.shape.Shape3D$Key of javafx.scene.shape.Shape3D