abstract class com.google.common.cache.LocalCache$HashIterator<T> implements java.util.Iterator<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.google.common.cache.LocalCache$HashIterator
  super_class: java.lang.Object
{
  int nextSegmentIndex;
    descriptor: I
    flags: (0x0000) 

  int nextTableIndex;
    descriptor: I
    flags: (0x0000) 

  com.google.common.cache.LocalCache$Segment<K, V> currentSegment;
    descriptor: Lcom/google/common/cache/LocalCache$Segment;
    flags: (0x0000) 
    Signature: Lcom/google/common/cache/LocalCache$Segment<TK;TV;>;
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.MonotonicNonNull()

  java.util.concurrent.atomic.AtomicReferenceArray<com.google.common.cache.ReferenceEntry<K, V>> currentTable;
    descriptor: Ljava/util/concurrent/atomic/AtomicReferenceArray;
    flags: (0x0000) 
    Signature: Ljava/util/concurrent/atomic/AtomicReferenceArray<Lcom/google/common/cache/ReferenceEntry<TK;TV;>;>;
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.MonotonicNonNull()

  com.google.common.cache.ReferenceEntry<K, V> nextEntry;
    descriptor: Lcom/google/common/cache/ReferenceEntry;
    flags: (0x0000) 
    Signature: Lcom/google/common/cache/ReferenceEntry<TK;TV;>;
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.Nullable()

  com.google.common.cache.LocalCache<K, V>.WriteThroughEntry nextExternal;
    descriptor: Lcom/google/common/cache/LocalCache$WriteThroughEntry;
    flags: (0x0000) 
    Signature: Lcom/google/common/cache/LocalCache<TK;TV;>.WriteThroughEntry;
    RuntimeVisibleTypeAnnotations: 
      FIELD, location=[INNER_TYPE]
        org.checkerframework.checker.nullness.qual.Nullable()

  com.google.common.cache.LocalCache<K, V>.WriteThroughEntry lastReturned;
    descriptor: Lcom/google/common/cache/LocalCache$WriteThroughEntry;
    flags: (0x0000) 
    Signature: Lcom/google/common/cache/LocalCache<TK;TV;>.WriteThroughEntry;
    RuntimeVisibleTypeAnnotations: 
      FIELD, location=[INNER_TYPE]
        org.checkerframework.checker.nullness.qual.Nullable()

  final com.google.common.cache.LocalCache this$0;
    descriptor: Lcom/google/common/cache/LocalCache;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.google.common.cache.LocalCache);
    descriptor: (Lcom/google/common/cache/LocalCache;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.common.cache.LocalCache$HashIterator this
         0: .line 4320
            aload 0 /* this */
            aload 1
            putfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 4321
            aload 0 /* this */
            aload 1
            getfield com.google.common.cache.LocalCache.segments:[Lcom/google/common/cache/LocalCache$Segment;
            arraylength
            iconst_1
            isub
            putfield com.google.common.cache.LocalCache$HashIterator.nextSegmentIndex:I
         2: .line 4322
            aload 0 /* this */
            iconst_m1
            putfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
         3: .line 4323
            aload 0 /* this */
            invokevirtual com.google.common.cache.LocalCache$HashIterator.advance:()V
         4: .line 4324
            return
        end local 0 // com.google.common.cache.LocalCache$HashIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
    MethodParameters:
        Name  Flags
      this$0  final

  public abstract T next();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()TT;

  final void advance();
    descriptor: ()V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // com.google.common.cache.LocalCache$HashIterator this
         0: .line 4330
            aload 0 /* this */
            aconst_null
            putfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
         1: .line 4332
            aload 0 /* this */
            invokevirtual com.google.common.cache.LocalCache$HashIterator.nextInChain:()Z
            ifeq 3
         2: .line 4333
            return
         3: .line 4336
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.common.cache.LocalCache$HashIterator.nextInTable:()Z
            ifeq 11
         4: .line 4337
            return
         5: .line 4341
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
            getfield com.google.common.cache.LocalCache.segments:[Lcom/google/common/cache/LocalCache$Segment;
            aload 0 /* this */
            dup
            getfield com.google.common.cache.LocalCache$HashIterator.nextSegmentIndex:I
            dup_x1
            iconst_1
            isub
            putfield com.google.common.cache.LocalCache$HashIterator.nextSegmentIndex:I
            aaload
            putfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
         6: .line 4342
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
            getfield com.google.common.cache.LocalCache$Segment.count:I
            ifeq 11
         7: .line 4343
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
            getfield com.google.common.cache.LocalCache$Segment.table:Ljava/util/concurrent/atomic/AtomicReferenceArray;
            putfield com.google.common.cache.LocalCache$HashIterator.currentTable:Ljava/util/concurrent/atomic/AtomicReferenceArray;
         8: .line 4344
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.currentTable:Ljava/util/concurrent/atomic/AtomicReferenceArray;
            invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.length:()I
            iconst_1
            isub
            putfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
         9: .line 4345
            aload 0 /* this */
            invokevirtual com.google.common.cache.LocalCache$HashIterator.nextInTable:()Z
            ifeq 11
        10: .line 4346
            return
        11: .line 4340
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextSegmentIndex:I
            ifge 5
        12: .line 4350
            return
        end local 0 // com.google.common.cache.LocalCache$HashIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;

  boolean nextInChain();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.cache.LocalCache$HashIterator this
         0: .line 4354
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
            ifnull 6
         1: .line 4355
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
            invokeinterface com.google.common.cache.ReferenceEntry.getNext:()Lcom/google/common/cache/ReferenceEntry;
            putfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
            goto 5
         2: .line 4356
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
            invokevirtual com.google.common.cache.LocalCache$HashIterator.advanceTo:(Lcom/google/common/cache/ReferenceEntry;)Z
            ifeq 4
         3: .line 4357
            iconst_1
            ireturn
         4: .line 4355
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
            invokeinterface com.google.common.cache.ReferenceEntry.getNext:()Lcom/google/common/cache/ReferenceEntry;
            putfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
      StackMap locals:
      StackMap stack:
         5: aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
            ifnonnull 2
         6: .line 4361
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // com.google.common.cache.LocalCache$HashIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;

  boolean nextInTable();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // com.google.common.cache.LocalCache$HashIterator this
         0: .line 4366
            goto 4
         1: .line 4367
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.currentTable:Ljava/util/concurrent/atomic/AtomicReferenceArray;
            aload 0 /* this */
            dup
            getfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
            dup_x1
            iconst_1
            isub
            putfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
            invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.get:(I)Ljava/lang/Object;
            checkcast com.google.common.cache.ReferenceEntry
            dup_x1
            putfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
            ifnull 4
         2: .line 4368
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
            invokevirtual com.google.common.cache.LocalCache$HashIterator.advanceTo:(Lcom/google/common/cache/ReferenceEntry;)Z
            ifne 3
            aload 0 /* this */
            invokevirtual com.google.common.cache.LocalCache$HashIterator.nextInChain:()Z
            ifeq 4
         3: .line 4369
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         4: .line 4366
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
            ifge 1
         5: .line 4373
            iconst_0
            ireturn
        end local 0 // com.google.common.cache.LocalCache$HashIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;

  boolean advanceTo(com.google.common.cache.ReferenceEntry<K, V>);
    descriptor: (Lcom/google/common/cache/ReferenceEntry;)Z
    flags: (0x0000) 
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // com.google.common.cache.LocalCache$HashIterator this
        start local 1 // com.google.common.cache.ReferenceEntry entry
         0: .line 4382
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
            getfield com.google.common.cache.LocalCache.ticker:Lcom/google/common/base/Ticker;
            invokevirtual com.google.common.base.Ticker.read:()J
            lstore 2 /* now */
        start local 2 // long now
         1: .line 4383
            aload 1 /* entry */
            invokeinterface com.google.common.cache.ReferenceEntry.getKey:()Ljava/lang/Object;
            astore 4 /* key */
        start local 4 // java.lang.Object key
         2: .line 4384
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
            aload 1 /* entry */
            lload 2 /* now */
            invokevirtual com.google.common.cache.LocalCache.getLiveValue:(Lcom/google/common/cache/ReferenceEntry;J)Ljava/lang/Object;
            astore 5 /* value */
        start local 5 // java.lang.Object value
         3: .line 4385
            aload 5 /* value */
            ifnull 7
         4: .line 4386
            aload 0 /* this */
            new com.google.common.cache.LocalCache$WriteThroughEntry
            dup
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
            aload 4 /* key */
            aload 5 /* value */
            invokespecial com.google.common.cache.LocalCache$WriteThroughEntry.<init>:(Lcom/google/common/cache/LocalCache;Ljava/lang/Object;Ljava/lang/Object;)V
            putfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
         5: .line 4393
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
            invokevirtual com.google.common.cache.LocalCache$Segment.postReadCleanup:()V
         6: .line 4387
            iconst_1
            ireturn
         7: .line 4393
      StackMap locals: long java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
            invokevirtual com.google.common.cache.LocalCache$Segment.postReadCleanup:()V
         8: .line 4390
            iconst_0
            ireturn
        end local 5 // java.lang.Object value
        end local 4 // java.lang.Object key
        end local 2 // long now
         9: .line 4392
      StackMap locals: com.google.common.cache.LocalCache$HashIterator com.google.common.cache.ReferenceEntry
      StackMap stack: java.lang.Throwable
            astore 6
        10: .line 4393
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
            invokevirtual com.google.common.cache.LocalCache$Segment.postReadCleanup:()V
        11: .line 4394
            aload 6
            athrow
        end local 1 // com.google.common.cache.ReferenceEntry entry
        end local 0 // com.google.common.cache.LocalCache$HashIterator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
            0   12     1  entry  Lcom/google/common/cache/ReferenceEntry<TK;TV;>;
            1    9     2    now  J
            2    9     4    key  TK;
            3    9     5  value  TV;
      Exception table:
        from    to  target  type
           0     5       9  any
    Signature: (Lcom/google/common/cache/ReferenceEntry<TK;TV;>;)Z
    MethodParameters:
       Name  Flags
      entry  

  public boolean hasNext();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.cache.LocalCache$HashIterator this
         0: .line 4399
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.common.cache.LocalCache$HashIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;

  com.google.common.cache.LocalCache<K, V>.WriteThroughEntry nextEntry();
    descriptor: ()Lcom/google/common/cache/LocalCache$WriteThroughEntry;
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.cache.LocalCache$HashIterator this
         0: .line 4403
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
            ifnonnull 2
         1: .line 4404
            new java.util.NoSuchElementException
            dup
            invokespecial java.util.NoSuchElementException.<init>:()V
            athrow
         2: .line 4406
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
            putfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
         3: .line 4407
            aload 0 /* this */
            invokevirtual com.google.common.cache.LocalCache$HashIterator.advance:()V
         4: .line 4408
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
            areturn
        end local 0 // com.google.common.cache.LocalCache$HashIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
    Signature: ()Lcom/google/common/cache/LocalCache<TK;TV;>.WriteThroughEntry;

  public void remove();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.cache.LocalCache$HashIterator this
         0: .line 4413
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: invokestatic com.google.common.base.Preconditions.checkState:(Z)V
         3: .line 4414
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
            aload 0 /* this */
            getfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
            invokevirtual com.google.common.cache.LocalCache$WriteThroughEntry.getKey:()Ljava/lang/Object;
            invokevirtual com.google.common.cache.LocalCache.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 4415
            aload 0 /* this */
            aconst_null
            putfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
         5: .line 4416
            return
        end local 0 // com.google.common.cache.LocalCache$HashIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TT;>;
SourceFile: "LocalCache.java"
NestHost: com.google.common.cache.LocalCache
InnerClasses:
  abstract HashIterator = com.google.common.cache.LocalCache$HashIterator of com.google.common.cache.LocalCache
  Segment = com.google.common.cache.LocalCache$Segment of com.google.common.cache.LocalCache
  final WriteThroughEntry = com.google.common.cache.LocalCache$WriteThroughEntry of com.google.common.cache.LocalCache