public class org.eclipse.jgit.util.SimpleLruCache<K, V>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jgit.util.SimpleLruCache
  super_class: java.lang.Object
{
  private java.util.concurrent.locks.Lock lock;
    descriptor: Ljava/util/concurrent/locks/Lock;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Map<K, org.eclipse.jgit.util.SimpleLruCache$Entry<K, V>> map;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<TK;Lorg/eclipse/jgit/util/SimpleLruCache$Entry<TK;TV;>;>;

  private volatile int maximumSize;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private int purgeSize;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private volatile long time;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static void checkPurgeFactor(float);
    descriptor: (F)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // float purgeFactor
         0: .line 113
            fload 0 /* purgeFactor */
            fconst_0
            fcmpg
            ifle 1
            fload 0 /* purgeFactor */
            fconst_1
            fcmpl
            iflt 6
         1: .line 114
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
         2: .line 115
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.invalidPurgeFactor:Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 116
            fload 0 /* purgeFactor */
            invokestatic java.lang.Float.valueOf:(F)Ljava/lang/Float;
            aastore
         4: .line 115
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         5: .line 114
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 118
      StackMap locals:
      StackMap stack:
            return
        end local 0 // float purgeFactor
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0  purgeFactor  F
    MethodParameters:
             Name  Flags
      purgeFactor  

  private static int purgeSize(int, float);
    descriptor: (IF)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // int maxSize
        start local 1 // float purgeFactor
         0: .line 121
            fconst_1
            fload 1 /* purgeFactor */
            fsub
            iload 0 /* maxSize */
            i2f
            fmul
            f2i
            ireturn
        end local 1 // float purgeFactor
        end local 0 // int maxSize
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0      maxSize  I
            0    1     1  purgeFactor  F
    MethodParameters:
             Name  Flags
      maxSize      
      purgeFactor  

  public void <init>(int, float);
    descriptor: (IF)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.eclipse.jgit.util.SimpleLruCache this
        start local 1 // int maxSize
        start local 2 // float purgeFactor
         0: .line 138
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 101
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield org.eclipse.jgit.util.SimpleLruCache.lock:Ljava/util/concurrent/locks/Lock;
         2: .line 103
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.eclipse.jgit.util.SimpleLruCache.map:Ljava/util/Map;
         3: .line 110
            aload 0 /* this */
            lconst_0
            putfield org.eclipse.jgit.util.SimpleLruCache.time:J
         4: .line 139
            fload 2 /* purgeFactor */
            invokestatic org.eclipse.jgit.util.SimpleLruCache.checkPurgeFactor:(F)V
         5: .line 140
            aload 0 /* this */
            iload 1 /* maxSize */
            putfield org.eclipse.jgit.util.SimpleLruCache.maximumSize:I
         6: .line 141
            aload 0 /* this */
            iload 1 /* maxSize */
            fload 2 /* purgeFactor */
            invokestatic org.eclipse.jgit.util.SimpleLruCache.purgeSize:(IF)I
            putfield org.eclipse.jgit.util.SimpleLruCache.purgeSize:I
         7: .line 142
            return
        end local 2 // float purgeFactor
        end local 1 // int maxSize
        end local 0 // org.eclipse.jgit.util.SimpleLruCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lorg/eclipse/jgit/util/SimpleLruCache<TK;TV;>;
            0    8     1      maxSize  I
            0    8     2  purgeFactor  F
    MethodParameters:
             Name  Flags
      maxSize      
      purgeFactor  

  public V get();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.eclipse.jgit.util.SimpleLruCache this
        start local 1 // java.lang.Object key
         0: .line 164
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.map:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.eclipse.jgit.util.SimpleLruCache$Entry
            astore 2 /* entry */
        start local 2 // org.eclipse.jgit.util.SimpleLruCache$Entry entry
         1: .line 165
            aload 2 /* entry */
            ifnull 4
         2: .line 166
            aload 2 /* entry */
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.SimpleLruCache.tick:()J
            putfield org.eclipse.jgit.util.SimpleLruCache$Entry.lastAccessed:J
         3: .line 167
            aload 2 /* entry */
            getfield org.eclipse.jgit.util.SimpleLruCache$Entry.value:Ljava/lang/Object;
            areturn
         4: .line 169
      StackMap locals: org.eclipse.jgit.util.SimpleLruCache$Entry
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.eclipse.jgit.util.SimpleLruCache$Entry entry
        end local 1 // java.lang.Object key
        end local 0 // org.eclipse.jgit.util.SimpleLruCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/eclipse/jgit/util/SimpleLruCache<TK;TV;>;
            0    5     1    key  Ljava/lang/Object;
            1    5     2  entry  Lorg/eclipse/jgit/util/SimpleLruCache$Entry<TK;TV;>;
    Signature: (Ljava/lang/Object;)TV;
    MethodParameters:
      Name  Flags
      key   

  public V put(K, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // org.eclipse.jgit.util.SimpleLruCache this
        start local 1 // java.lang.Object key
        start local 2 // java.lang.Object value
         0: .line 191
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.map:Ljava/util/Map;
            aload 1 /* key */
            new org.eclipse.jgit.util.SimpleLruCache$Entry
            dup
            aload 1 /* key */
            aload 2 /* value */
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.SimpleLruCache.tick:()J
            invokespecial org.eclipse.jgit.util.SimpleLruCache$Entry.<init>:(Ljava/lang/Object;Ljava/lang/Object;J)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 192
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.map:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.maximumSize:I
            if_icmple 3
         2: .line 193
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.SimpleLruCache.purge:()V
         3: .line 195
      StackMap locals:
      StackMap stack:
            aload 2 /* value */
            areturn
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // org.eclipse.jgit.util.SimpleLruCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/eclipse/jgit/util/SimpleLruCache<TK;TV;>;
            0    4     1    key  TK;
            0    4     2  value  TV;
    Signature: (TK;TV;)TV;
    RuntimeInvisibleParameterAnnotations: 
      0:
        org.eclipse.jgit.annotations.NonNull()
      1:
        org.eclipse.jgit.annotations.NonNull()
    MethodParameters:
       Name  Flags
      key    
      value  

  private long tick();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.util.SimpleLruCache this
         0: .line 200
            aload 0 /* this */
            dup
            getfield org.eclipse.jgit.util.SimpleLruCache.time:J
            lconst_1
            ladd
            dup2_x1
            putfield org.eclipse.jgit.util.SimpleLruCache.time:J
            lreturn
        end local 0 // org.eclipse.jgit.util.SimpleLruCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/SimpleLruCache<TK;TV;>;

  public int size();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.util.SimpleLruCache this
         0: .line 209
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.map:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            ireturn
        end local 0 // org.eclipse.jgit.util.SimpleLruCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/SimpleLruCache<TK;TV;>;

  public void configure(int, float);
    descriptor: (IF)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.eclipse.jgit.util.SimpleLruCache this
        start local 1 // int maxSize
        start local 2 // float purgeFactor
         0: .line 226
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.lock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
         1: .line 228
            fload 2 /* purgeFactor */
            invokestatic org.eclipse.jgit.util.SimpleLruCache.checkPurgeFactor:(F)V
         2: .line 229
            aload 0 /* this */
            iload 1 /* maxSize */
            putfield org.eclipse.jgit.util.SimpleLruCache.maximumSize:I
         3: .line 230
            aload 0 /* this */
            iload 1 /* maxSize */
            fload 2 /* purgeFactor */
            invokestatic org.eclipse.jgit.util.SimpleLruCache.purgeSize:(IF)I
            putfield org.eclipse.jgit.util.SimpleLruCache.purgeSize:I
         4: .line 231
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.map:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.maximumSize:I
            if_icmplt 10
         5: .line 232
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.SimpleLruCache.purge:()V
         6: .line 234
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 3
         8: .line 235
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.lock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
         9: .line 236
            aload 3
            athrow
        10: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.lock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        11: .line 237
            return
        end local 2 // float purgeFactor
        end local 1 // int maxSize
        end local 0 // org.eclipse.jgit.util.SimpleLruCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lorg/eclipse/jgit/util/SimpleLruCache<TK;TV;>;
            0   12     1      maxSize  I
            0   12     2  purgeFactor  F
      Exception table:
        from    to  target  type
           1     7       7  any
    MethodParameters:
             Name  Flags
      maxSize      
      purgeFactor  

  private void purge();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // org.eclipse.jgit.util.SimpleLruCache this
         0: .line 241
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.lock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.tryLock:()Z
            ifeq 21
         1: .line 243
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.map:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 1 /* entriesToPurge */
        start local 1 // java.util.List entriesToPurge
         2: .line 246
            aload 1 /* entriesToPurge */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.eclipse.jgit.util.SimpleLruCache java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.eclipse.jgit.util.SimpleLruCache$Entry
            astore 2 /* e */
        start local 2 // org.eclipse.jgit.util.SimpleLruCache$Entry e
         4: .line 247
            aload 2 /* e */
            invokevirtual org.eclipse.jgit.util.SimpleLruCache$Entry.copyAccessTime:()V
        end local 2 // org.eclipse.jgit.util.SimpleLruCache$Entry e
         5: .line 246
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 249
            aload 1 /* entriesToPurge */
         7: .line 250
            invokedynamic applyAsLong()Ljava/util/function/ToLongFunction;
              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;)J
                  org/eclipse/jgit/util/SimpleLruCache.lambda$0(Lorg/eclipse/jgit/util/SimpleLruCache$Entry;)J (6)
                  (Lorg/eclipse/jgit/util/SimpleLruCache$Entry;)J
            invokestatic java.util.Comparator.comparingLong:(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
         8: .line 249
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
         9: .line 251
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.purgeSize:I
            istore 2 /* index */
        start local 2 // int index
        10: goto 13
        11: .line 253
      StackMap locals: org.eclipse.jgit.util.SimpleLruCache java.util.List int
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.map:Ljava/util/Map;
            aload 1 /* entriesToPurge */
            iload 2 /* index */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.eclipse.jgit.util.SimpleLruCache$Entry
            getfield org.eclipse.jgit.util.SimpleLruCache$Entry.key:Ljava/lang/Object;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 252
            iinc 2 /* index */ 1
        13: .line 251
      StackMap locals:
      StackMap stack:
            iload 2 /* index */
            aload 1 /* entriesToPurge */
        14: .line 252
            invokeinterface java.util.List.size:()I
        15: .line 251
            if_icmplt 11
        end local 2 // int index
        end local 1 // java.util.List entriesToPurge
        16: .line 255
            goto 20
      StackMap locals: org.eclipse.jgit.util.SimpleLruCache
      StackMap stack: java.lang.Throwable
        17: astore 4
        18: .line 256
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.lock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        19: .line 257
            aload 4
            athrow
        20: .line 256
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jgit.util.SimpleLruCache.lock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        21: .line 259
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.eclipse.jgit.util.SimpleLruCache this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   22     0            this  Lorg/eclipse/jgit/util/SimpleLruCache<TK;TV;>;
            2   16     1  entriesToPurge  Ljava/util/List<Lorg/eclipse/jgit/util/SimpleLruCache$Entry;>;
            4    5     2               e  Lorg/eclipse/jgit/util/SimpleLruCache$Entry;
           10   16     2           index  I
      Exception table:
        from    to  target  type
           1    17      17  any

  private static long lambda$0(org.eclipse.jgit.util.SimpleLruCache$Entry);
    descriptor: (Lorg/eclipse/jgit/util/SimpleLruCache$Entry;)J
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.util.SimpleLruCache$Entry o
         0: .line 250
            aload 0 /* o */
            getfield org.eclipse.jgit.util.SimpleLruCache$Entry.lastAccessedSorting:J
            lneg
            lreturn
        end local 0 // org.eclipse.jgit.util.SimpleLruCache$Entry o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     o  Lorg/eclipse/jgit/util/SimpleLruCache$Entry;
}
Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "SimpleLruCache.java"
NestMembers:
  org.eclipse.jgit.util.SimpleLruCache$Entry
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private Entry = org.eclipse.jgit.util.SimpleLruCache$Entry of org.eclipse.jgit.util.SimpleLruCache