public abstract class org.apache.lucene.search.ReferenceManager<G> implements java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.lucene.search.ReferenceManager
  super_class: java.lang.Object
{
  private static final java.lang.String REFERENCE_MANAGER_IS_CLOSED_MSG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "this ReferenceManager is closed"

  protected volatile G current;
    descriptor: Ljava/lang/Object;
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE
    Signature: TG;

  private final java.util.concurrent.locks.Lock refreshLock;
    descriptor: Ljava/util/concurrent/locks/Lock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<org.apache.lucene.search.ReferenceManager$RefreshListener> refreshListeners;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/apache/lucene/search/ReferenceManager$RefreshListener;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 42
            ldc Lorg/apache/lucene/search/ReferenceManager;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.lucene.search.ReferenceManager.$assertionsDisabled:Z
         3: .line 44
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
         2: .line 50
            aload 0 /* this */
            new java.util.concurrent.CopyOnWriteArrayList
            dup
            invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
            putfield org.apache.lucene.search.ReferenceManager.refreshListeners:Ljava/util/List;
         3: .line 42
            return
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/lucene/search/ReferenceManager<TG;>;

  private void ensureOpen();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 53
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.current:Ljava/lang/Object;
            ifnonnull 2
         1: .line 54
            new org.apache.lucene.store.AlreadyClosedException
            dup
            ldc "this ReferenceManager is closed"
            invokespecial org.apache.lucene.store.AlreadyClosedException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 56
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/lucene/search/ReferenceManager<TG;>;

  private synchronized void swapReference();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.lucene.search.ReferenceManager this
        start local 1 // java.lang.Object newReference
         0: .line 59
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.ensureOpen:()V
         1: .line 60
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.current:Ljava/lang/Object;
            astore 2 /* oldReference */
        start local 2 // java.lang.Object oldReference
         2: .line 61
            aload 0 /* this */
            aload 1 /* newReference */
            putfield org.apache.lucene.search.ReferenceManager.current:Ljava/lang/Object;
         3: .line 62
            aload 0 /* this */
            aload 2 /* oldReference */
            invokevirtual org.apache.lucene.search.ReferenceManager.release:(Ljava/lang/Object;)V
         4: .line 63
            return
        end local 2 // java.lang.Object oldReference
        end local 1 // java.lang.Object newReference
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            0    5     1  newReference  TG;
            2    5     2  oldReference  TG;
    Exceptions:
      throws java.io.IOException
    Signature: (TG;)V
    MethodParameters:
              Name  Flags
      newReference  

  protected abstract void decRef();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    Signature: (TG;)V
    MethodParameters:
           Name  Flags
      reference  

  protected abstract G refreshIfNeeded();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    Signature: (TG;)TG;
    MethodParameters:
                    Name  Flags
      referenceToRefresh  

  protected abstract boolean tryIncRef();
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    Signature: (TG;)Z
    MethodParameters:
           Name  Flags
      reference  

  public final G acquire();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.current:Ljava/lang/Object;
            dup
            astore 1 /* ref */
        start local 1 // java.lang.Object ref
         1: ifnonnull 3
         2: .line 98
            new org.apache.lucene.store.AlreadyClosedException
            dup
            ldc "this ReferenceManager is closed"
            invokespecial org.apache.lucene.store.AlreadyClosedException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 100
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ref */
            invokevirtual org.apache.lucene.search.ReferenceManager.tryIncRef:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 101
            aload 1 /* ref */
            areturn
         5: .line 103
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ref */
            invokevirtual org.apache.lucene.search.ReferenceManager.getRefCount:(Ljava/lang/Object;)I
            ifne 0
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.current:Ljava/lang/Object;
            aload 1 /* ref */
            if_acmpne 0
         6: .line 104
            getstatic org.apache.lucene.search.ReferenceManager.$assertionsDisabled:Z
            ifne 7
            aload 1 /* ref */
            ifnonnull 7
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         7: .line 114
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "The managed reference has already closed - this is likely a bug when the reference count is modified outside of the ReferenceManager"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.Object ref
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            1    8     1   ref  TG;
    Exceptions:
      throws java.io.IOException
    Signature: ()TG;

  public final synchronized void close();
    descriptor: ()V
    flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 142
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.current:Ljava/lang/Object;
            ifnull 3
         1: .line 146
            aload 0 /* this */
            aconst_null
            invokevirtual org.apache.lucene.search.ReferenceManager.swapReference:(Ljava/lang/Object;)V
         2: .line 147
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.afterClose:()V
         3: .line 149
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
    Exceptions:
      throws java.io.IOException

  protected abstract int getRefCount();
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (TG;)I
    MethodParameters:
           Name  Flags
      reference  

  protected void afterClose();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 161
            return
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
    Exceptions:
      throws java.io.IOException

  private void doMaybeRefresh();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 170
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
         1: .line 171
            iconst_0
            istore 1 /* refreshed */
        start local 1 // boolean refreshed
         2: .line 173
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.acquire:()Ljava/lang/Object;
            astore 2 /* reference */
        start local 2 // java.lang.Object reference
         3: .line 175
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.notifyRefreshListenersBefore:()V
         4: .line 176
            aload 0 /* this */
            aload 2 /* reference */
            invokevirtual org.apache.lucene.search.ReferenceManager.refreshIfNeeded:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* newReference */
        start local 3 // java.lang.Object newReference
         5: .line 177
            aload 3 /* newReference */
            ifnull 21
         6: .line 178
            getstatic org.apache.lucene.search.ReferenceManager.$assertionsDisabled:Z
            ifne 7
            aload 3 /* newReference */
            aload 2 /* reference */
            if_acmpne 7
            new java.lang.AssertionError
            dup
            ldc "refreshIfNeeded should return null if refresh wasn't needed"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         7: .line 180
      StackMap locals: int java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 3 /* newReference */
            invokevirtual org.apache.lucene.search.ReferenceManager.swapReference:(Ljava/lang/Object;)V
         8: .line 181
            iconst_1
            istore 1 /* refreshed */
         9: .line 182
            goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 4
        11: .line 183
            iload 1 /* refreshed */
            ifne 13
        12: .line 184
            aload 0 /* this */
            aload 3 /* newReference */
            invokevirtual org.apache.lucene.search.ReferenceManager.release:(Ljava/lang/Object;)V
        13: .line 186
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 4
            athrow
        14: .line 183
      StackMap locals:
      StackMap stack:
            iload 1 /* refreshed */
            ifne 21
        15: .line 184
            aload 0 /* this */
            aload 3 /* newReference */
            invokevirtual org.apache.lucene.search.ReferenceManager.release:(Ljava/lang/Object;)V
        end local 3 // java.lang.Object newReference
        16: .line 188
            goto 21
      StackMap locals: org.apache.lucene.search.ReferenceManager int java.lang.Object
      StackMap stack: java.lang.Throwable
        17: astore 5
        18: .line 189
            aload 0 /* this */
            aload 2 /* reference */
            invokevirtual org.apache.lucene.search.ReferenceManager.release:(Ljava/lang/Object;)V
        19: .line 190
            aload 0 /* this */
            iload 1 /* refreshed */
            invokevirtual org.apache.lucene.search.ReferenceManager.notifyRefreshListenersRefreshed:(Z)V
        20: .line 191
            aload 5
            athrow
        21: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* reference */
            invokevirtual org.apache.lucene.search.ReferenceManager.release:(Ljava/lang/Object;)V
        22: .line 190
            aload 0 /* this */
            iload 1 /* refreshed */
            invokevirtual org.apache.lucene.search.ReferenceManager.notifyRefreshListenersRefreshed:(Z)V
        23: .line 192
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.afterMaybeRefresh:()V
        end local 2 // java.lang.Object reference
        24: .line 193
            goto 28
      StackMap locals: org.apache.lucene.search.ReferenceManager int
      StackMap stack: java.lang.Throwable
        25: astore 6
        26: .line 194
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        27: .line 195
            aload 6
            athrow
        28: .line 194
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        29: .line 196
            return
        end local 1 // boolean refreshed
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   30     0          this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            2   30     1     refreshed  Z
            3   24     2     reference  TG;
            5   16     3  newReference  TG;
      Exception table:
        from    to  target  type
           7    10      10  any
           3    17      17  any
           2    25      25  any
    Exceptions:
      throws java.io.IOException

  public final boolean maybeRefresh();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 219
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.ensureOpen:()V
         1: .line 222
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.tryLock:()Z
            istore 1 /* doTryRefresh */
        start local 1 // boolean doTryRefresh
         2: .line 223
            iload 1 /* doTryRefresh */
            ifeq 9
         3: .line 225
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.doMaybeRefresh:()V
         4: .line 226
            goto 8
      StackMap locals: org.apache.lucene.search.ReferenceManager int
      StackMap stack: java.lang.Throwable
         5: astore 2
         6: .line 227
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
         7: .line 228
            aload 2
            athrow
         8: .line 227
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
         9: .line 231
      StackMap locals:
      StackMap stack:
            iload 1 /* doTryRefresh */
            ireturn
        end local 1 // boolean doTryRefresh
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            2   10     1  doTryRefresh  Z
      Exception table:
        from    to  target  type
           3     5       5  any
    Exceptions:
      throws java.io.IOException

  public final void maybeRefreshBlocking();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 248
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.ensureOpen:()V
         1: .line 251
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
         2: .line 253
            aload 0 /* this */
            invokevirtual org.apache.lucene.search.ReferenceManager.doMaybeRefresh:()V
         3: .line 254
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 1
         5: .line 255
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
         6: .line 256
            aload 1
            athrow
         7: .line 255
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshLock:Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
         8: .line 257
            return
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
      Exception table:
        from    to  target  type
           2     4       4  any
    Exceptions:
      throws java.io.IOException

  protected void afterMaybeRefresh();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 264
            return
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
    Exceptions:
      throws java.io.IOException

  public final void release();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.lucene.search.ReferenceManager this
        start local 1 // java.lang.Object reference
         0: .line 273
            getstatic org.apache.lucene.search.ReferenceManager.$assertionsDisabled:Z
            ifne 1
            aload 1 /* reference */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reference */
            invokevirtual org.apache.lucene.search.ReferenceManager.decRef:(Ljava/lang/Object;)V
         2: .line 275
            return
        end local 1 // java.lang.Object reference
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            0    3     1  reference  TG;
    Exceptions:
      throws java.io.IOException
    Signature: (TG;)V
    MethodParameters:
           Name  Flags
      reference  

  private void notifyRefreshListenersBefore();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // org.apache.lucene.search.ReferenceManager this
         0: .line 278
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshListeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 3
      StackMap locals: org.apache.lucene.search.ReferenceManager top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.lucene.search.ReferenceManager$RefreshListener
            astore 1 /* refreshListener */
        start local 1 // org.apache.lucene.search.ReferenceManager$RefreshListener refreshListener
         2: .line 279
            aload 1 /* refreshListener */
            invokeinterface org.apache.lucene.search.ReferenceManager$RefreshListener.beforeRefresh:()V
        end local 1 // org.apache.lucene.search.ReferenceManager$RefreshListener refreshListener
         3: .line 278
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 281
            return
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            2    3     1  refreshListener  Lorg/apache/lucene/search/ReferenceManager$RefreshListener;
    Exceptions:
      throws java.io.IOException

  private void notifyRefreshListenersRefreshed(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.apache.lucene.search.ReferenceManager this
        start local 1 // boolean didRefresh
         0: .line 284
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshListeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 3
      StackMap locals: org.apache.lucene.search.ReferenceManager int top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.lucene.search.ReferenceManager$RefreshListener
            astore 2 /* refreshListener */
        start local 2 // org.apache.lucene.search.ReferenceManager$RefreshListener refreshListener
         2: .line 285
            aload 2 /* refreshListener */
            iload 1 /* didRefresh */
            invokeinterface org.apache.lucene.search.ReferenceManager$RefreshListener.afterRefresh:(Z)V
        end local 2 // org.apache.lucene.search.ReferenceManager$RefreshListener refreshListener
         3: .line 284
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 287
            return
        end local 1 // boolean didRefresh
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            0    5     1       didRefresh  Z
            2    3     2  refreshListener  Lorg/apache/lucene/search/ReferenceManager$RefreshListener;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      didRefresh  

  public void addListener(org.apache.lucene.search.ReferenceManager$RefreshListener);
    descriptor: (Lorg/apache/lucene/search/ReferenceManager$RefreshListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.lucene.search.ReferenceManager this
        start local 1 // org.apache.lucene.search.ReferenceManager$RefreshListener listener
         0: .line 293
            aload 1 /* listener */
            ifnonnull 2
         1: .line 294
            new java.lang.NullPointerException
            dup
            ldc "Listener must not be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 296
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshListeners:Ljava/util/List;
            aload 1 /* listener */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 297
            return
        end local 1 // org.apache.lucene.search.ReferenceManager$RefreshListener listener
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            0    4     1  listener  Lorg/apache/lucene/search/ReferenceManager$RefreshListener;
    MethodParameters:
          Name  Flags
      listener  

  public void removeListener(org.apache.lucene.search.ReferenceManager$RefreshListener);
    descriptor: (Lorg/apache/lucene/search/ReferenceManager$RefreshListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.lucene.search.ReferenceManager this
        start local 1 // org.apache.lucene.search.ReferenceManager$RefreshListener listener
         0: .line 303
            aload 1 /* listener */
            ifnonnull 2
         1: .line 304
            new java.lang.NullPointerException
            dup
            ldc "Listener must not be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 306
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.lucene.search.ReferenceManager.refreshListeners:Ljava/util/List;
            aload 1 /* listener */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         3: .line 307
            return
        end local 1 // org.apache.lucene.search.ReferenceManager$RefreshListener listener
        end local 0 // org.apache.lucene.search.ReferenceManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/apache/lucene/search/ReferenceManager<TG;>;
            0    4     1  listener  Lorg/apache/lucene/search/ReferenceManager$RefreshListener;
    MethodParameters:
          Name  Flags
      listener  
}
Signature: <G:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Closeable;
SourceFile: "ReferenceManager.java"
NestMembers:
  org.apache.lucene.search.ReferenceManager$RefreshListener
InnerClasses:
  public abstract RefreshListener = org.apache.lucene.search.ReferenceManager$RefreshListener of org.apache.lucene.search.ReferenceManager