public class org.eclipse.jdt.internal.core.ElementCache<K extends org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.IOpenable> extends org.eclipse.jdt.internal.core.OverflowingLRUCache<K, org.eclipse.jdt.internal.core.JavaElementInfo>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jdt.internal.core.ElementCache
  super_class: org.eclipse.jdt.internal.core.OverflowingLRUCache
{
  org.eclipse.jdt.core.IJavaElement spaceLimitParent;
    descriptor: Lorg/eclipse/jdt/core/IJavaElement;
    flags: (0x0000) 

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.core.ElementCache this
        start local 1 // int size
         0: .line 31
            aload 0 /* this */
            iload 1 /* size */
            invokespecial org.eclipse.jdt.internal.core.OverflowingLRUCache.<init>:(I)V
         1: .line 25
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.core.ElementCache.spaceLimitParent:Lorg/eclipse/jdt/core/IJavaElement;
         2: .line 31
            return
        end local 1 // int size
        end local 0 // org.eclipse.jdt.internal.core.ElementCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/eclipse/jdt/internal/core/ElementCache<TK;>;
            0    3     1  size  I
    MethodParameters:
      Name  Flags
      size  

  public void <init>(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.eclipse.jdt.internal.core.ElementCache this
        start local 1 // int size
        start local 2 // int overflow
         0: .line 37
            aload 0 /* this */
            iload 1 /* size */
            iload 2 /* overflow */
            invokespecial org.eclipse.jdt.internal.core.OverflowingLRUCache.<init>:(II)V
         1: .line 25
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.core.ElementCache.spaceLimitParent:Lorg/eclipse/jdt/core/IJavaElement;
         2: .line 37
            return
        end local 2 // int overflow
        end local 1 // int size
        end local 0 // org.eclipse.jdt.internal.core.ElementCache this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/eclipse/jdt/internal/core/ElementCache<TK;>;
            0    3     1      size  I
            0    3     2  overflow  I
    MethodParameters:
          Name  Flags
      size      
      overflow  

  protected boolean close(org.eclipse.jdt.internal.core.util.LRUCache$LRUCacheEntry<K, org.eclipse.jdt.internal.core.JavaElementInfo>);
    descriptor: (Lorg/eclipse/jdt/internal/core/util/LRUCache$LRUCacheEntry;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.eclipse.jdt.internal.core.ElementCache this
        start local 1 // org.eclipse.jdt.internal.core.util.LRUCache$LRUCacheEntry entry
         0: .line 48
            aload 1 /* entry */
            getfield org.eclipse.jdt.internal.core.util.LRUCache$LRUCacheEntry.key:Ljava/lang/Object;
            instanceof org.eclipse.jdt.internal.core.Openable
            ifne 2
         1: .line 49
            iconst_0
            ireturn
         2: .line 51
      StackMap locals:
      StackMap stack:
            aload 1 /* entry */
            getfield org.eclipse.jdt.internal.core.util.LRUCache$LRUCacheEntry.key:Ljava/lang/Object;
            checkcast org.eclipse.jdt.internal.core.Openable
            astore 2 /* element */
        start local 2 // org.eclipse.jdt.internal.core.Openable element
         3: .line 53
            aload 2 /* element */
            invokevirtual org.eclipse.jdt.internal.core.Openable.canBeRemovedFromCache:()Z
            ifne 5
         4: .line 54
            iconst_0
            ireturn
         5: .line 56
      StackMap locals: org.eclipse.jdt.internal.core.Openable
      StackMap stack:
            aload 2 /* element */
            invokevirtual org.eclipse.jdt.internal.core.Openable.close:()V
         6: .line 57
            iconst_1
            ireturn
         7: .line 59
      StackMap locals:
      StackMap stack: org.eclipse.jdt.core.JavaModelException
            pop
         8: .line 60
            iconst_0
            ireturn
        end local 2 // org.eclipse.jdt.internal.core.Openable element
        end local 1 // org.eclipse.jdt.internal.core.util.LRUCache$LRUCacheEntry entry
        end local 0 // org.eclipse.jdt.internal.core.ElementCache this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lorg/eclipse/jdt/internal/core/ElementCache<TK;>;
            0    9     1    entry  Lorg/eclipse/jdt/internal/core/util/LRUCache$LRUCacheEntry<TK;Lorg/eclipse/jdt/internal/core/JavaElementInfo;>;
            3    9     2  element  Lorg/eclipse/jdt/internal/core/Openable;
      Exception table:
        from    to  target  type
           3     4       7  Class org.eclipse.jdt.core.JavaModelException
           5     6       7  Class org.eclipse.jdt.core.JavaModelException
    Signature: (Lorg/eclipse/jdt/internal/core/util/LRUCache$LRUCacheEntry<TK;Lorg/eclipse/jdt/internal/core/JavaElementInfo;>;)Z
    MethodParameters:
       Name  Flags
      entry  

  protected void ensureSpaceLimit(org.eclipse.jdt.internal.core.JavaElementInfo, org.eclipse.jdt.core.IJavaElement);
    descriptor: (Lorg/eclipse/jdt/internal/core/JavaElementInfo;Lorg/eclipse/jdt/core/IJavaElement;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.eclipse.jdt.internal.core.ElementCache this
        start local 1 // org.eclipse.jdt.internal.core.JavaElementInfo info
        start local 2 // org.eclipse.jdt.core.IJavaElement parent
         0: .line 70
            aload 1 /* info */
            invokevirtual org.eclipse.jdt.internal.core.JavaElementInfo.getChildren:()[Lorg/eclipse/jdt/core/IJavaElement;
            arraylength
            istore 3 /* childrenSize */
        start local 3 // int childrenSize
         1: .line 71
            iconst_1
            dconst_1
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.ElementCache.loadFactor:D
            dadd
            iload 3 /* childrenSize */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.ElementCache.overflow:I
            iadd
            i2d
            dmul
            d2i
            iadd
            istore 4 /* spaceNeeded */
        start local 4 // int spaceNeeded
         2: .line 72
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.ElementCache.spaceLimit:I
            iload 4 /* spaceNeeded */
            if_icmpge 6
         3: .line 74
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.ElementCache.shrink:()Z
            pop
         4: .line 75
            aload 0 /* this */
            iload 4 /* spaceNeeded */
            invokevirtual org.eclipse.jdt.internal.core.ElementCache.setSpaceLimit:(I)V
         5: .line 76
            aload 0 /* this */
            aload 2 /* parent */
            putfield org.eclipse.jdt.internal.core.ElementCache.spaceLimitParent:Lorg/eclipse/jdt/core/IJavaElement;
         6: .line 78
      StackMap locals: int int
      StackMap stack:
            return
        end local 4 // int spaceNeeded
        end local 3 // int childrenSize
        end local 2 // org.eclipse.jdt.core.IJavaElement parent
        end local 1 // org.eclipse.jdt.internal.core.JavaElementInfo info
        end local 0 // org.eclipse.jdt.internal.core.ElementCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/eclipse/jdt/internal/core/ElementCache<TK;>;
            0    7     1          info  Lorg/eclipse/jdt/internal/core/JavaElementInfo;
            0    7     2        parent  Lorg/eclipse/jdt/core/IJavaElement;
            1    7     3  childrenSize  I
            2    7     4   spaceNeeded  I
    MethodParameters:
        Name  Flags
      info    
      parent  

  protected org.eclipse.jdt.internal.core.ElementCache<K> newInstance(int, int);
    descriptor: (II)Lorg/eclipse/jdt/internal/core/ElementCache;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.eclipse.jdt.internal.core.ElementCache this
        start local 1 // int size
        start local 2 // int newOverflow
         0: .line 85
            new org.eclipse.jdt.internal.core.ElementCache
            dup
            iload 1 /* size */
            iload 2 /* newOverflow */
            invokespecial org.eclipse.jdt.internal.core.ElementCache.<init>:(II)V
            areturn
        end local 2 // int newOverflow
        end local 1 // int size
        end local 0 // org.eclipse.jdt.internal.core.ElementCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/eclipse/jdt/internal/core/ElementCache<TK;>;
            0    1     1         size  I
            0    1     2  newOverflow  I
    Signature: (II)Lorg/eclipse/jdt/internal/core/ElementCache<TK;>;
    MethodParameters:
             Name  Flags
      size         
      newOverflow  

  protected void resetSpaceLimit(int, org.eclipse.jdt.core.IJavaElement);
    descriptor: (ILorg/eclipse/jdt/core/IJavaElement;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.eclipse.jdt.internal.core.ElementCache this
        start local 1 // int defaultLimit
        start local 2 // org.eclipse.jdt.core.IJavaElement parent
         0: .line 93
            aload 2 /* parent */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.ElementCache.spaceLimitParent:Lorg/eclipse/jdt/core/IJavaElement;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 94
            aload 0 /* this */
            iload 1 /* defaultLimit */
            invokevirtual org.eclipse.jdt.internal.core.ElementCache.setSpaceLimit:(I)V
         2: .line 95
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.core.ElementCache.spaceLimitParent:Lorg/eclipse/jdt/core/IJavaElement;
         3: .line 97
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.eclipse.jdt.core.IJavaElement parent
        end local 1 // int defaultLimit
        end local 0 // org.eclipse.jdt.internal.core.ElementCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/eclipse/jdt/internal/core/ElementCache<TK;>;
            0    4     1  defaultLimit  I
            0    4     2        parent  Lorg/eclipse/jdt/core/IJavaElement;
    MethodParameters:
              Name  Flags
      defaultLimit  
      parent        

  protected org.eclipse.jdt.internal.core.util.LRUCache newInstance(int, int);
    descriptor: (II)Lorg/eclipse/jdt/internal/core/util/LRUCache;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            iload 1
            iload 2
            invokevirtual org.eclipse.jdt.internal.core.ElementCache.newInstance:(II)Lorg/eclipse/jdt/internal/core/ElementCache;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: <K::Lorg/eclipse/jdt/core/IJavaElement;:Lorg/eclipse/jdt/core/IOpenable;>Lorg/eclipse/jdt/internal/core/OverflowingLRUCache<TK;Lorg/eclipse/jdt/internal/core/JavaElementInfo;>;
SourceFile: "ElementCache.java"
InnerClasses:
  public LRUCacheEntry = org.eclipse.jdt.internal.core.util.LRUCache$LRUCacheEntry of org.eclipse.jdt.internal.core.util.LRUCache