class com.google.common.collect.Iterators$ConcatenatedIterator<T> implements java.util.Iterator<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.google.common.collect.Iterators$ConcatenatedIterator
  super_class: java.lang.Object
{
  private java.util.Iterator<? extends T> toRemove;
    descriptor: Ljava/util/Iterator;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Iterator<+TT;>;
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.Nullable()

  private java.util.Iterator<? extends T> iterator;
    descriptor: Ljava/util/Iterator;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Iterator<+TT;>;

  private java.util.Iterator<? extends java.util.Iterator<? extends T>> topMetaIterator;
    descriptor: Ljava/util/Iterator;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Iterator<+Ljava/util/Iterator<+TT;>;>;

  private java.util.Deque<java.util.Iterator<? extends java.util.Iterator<? extends T>>> metaIterators;
    descriptor: Ljava/util/Deque;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Deque<Ljava/util/Iterator<+Ljava/util/Iterator<+TT;>;>;>;
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.Nullable()

  void <init>(java.util.Iterator<? extends java.util.Iterator<? extends T>>);
    descriptor: (Ljava/util/Iterator;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
        start local 1 // java.util.Iterator metaIterator
         0: .line 1305
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1306
            aload 0 /* this */
            invokestatic com.google.common.collect.Iterators.emptyIterator:()Lcom/google/common/collect/UnmodifiableIterator;
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
         2: .line 1307
            aload 0 /* this */
            aload 1 /* metaIterator */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Iterator
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
         3: .line 1308
            return
        end local 1 // java.util.Iterator metaIterator
        end local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lcom/google/common/collect/Iterators$ConcatenatedIterator<TT;>;
            0    4     1  metaIterator  Ljava/util/Iterator<+Ljava/util/Iterator<+TT;>;>;
    Signature: (Ljava/util/Iterator<+Ljava/util/Iterator<+TT;>;>;)V
    MethodParameters:
              Name  Flags
      metaIterator  

  private java.util.Iterator<? extends java.util.Iterator<? extends T>> getTopMetaIterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
         0: .line 1312
            goto 5
         1: .line 1313
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            ifnull 4
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            invokeinterface java.util.Deque.isEmpty:()Z
            ifne 4
         2: .line 1314
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            invokeinterface java.util.Deque.removeFirst:()Ljava/lang/Object;
            checkcast java.util.Iterator
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
         3: .line 1315
            goto 5
         4: .line 1316
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         5: .line 1312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
            ifnull 1
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 1
         6: .line 1319
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
            areturn
        end local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/google/common/collect/Iterators$ConcatenatedIterator<TT;>;
    Signature: ()Ljava/util/Iterator<+Ljava/util/Iterator<+TT;>;>;
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        org.checkerframework.checker.nullness.qual.Nullable()

  public boolean hasNext();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
         0: .line 1324
            goto 16
         1: .line 1328
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.google.common.collect.Iterators$ConcatenatedIterator.getTopMetaIterator:()Ljava/util/Iterator;
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
         2: .line 1329
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
            ifnonnull 4
         3: .line 1330
            iconst_0
            ireturn
         4: .line 1333
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Iterator
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
         5: .line 1335
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
            instanceof com.google.common.collect.Iterators$ConcatenatedIterator
            ifeq 16
         6: .line 1339
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
            checkcast com.google.common.collect.Iterators$ConcatenatedIterator
            astore 1 /* topConcat */
        start local 1 // com.google.common.collect.Iterators$ConcatenatedIterator topConcat
         7: .line 1340
            aload 0 /* this */
            aload 1 /* topConcat */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
         8: .line 1345
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            ifnonnull 10
         9: .line 1346
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
        10: .line 1348
      StackMap locals: com.google.common.collect.Iterators$ConcatenatedIterator
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
            invokeinterface java.util.Deque.addFirst:(Ljava/lang/Object;)V
        11: .line 1349
            aload 1 /* topConcat */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            ifnull 15
        12: .line 1350
            goto 14
        13: .line 1351
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            aload 1 /* topConcat */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            invokeinterface java.util.Deque.removeLast:()Ljava/lang/Object;
            checkcast java.util.Iterator
            invokeinterface java.util.Deque.addFirst:(Ljava/lang/Object;)V
        14: .line 1350
      StackMap locals:
      StackMap stack:
            aload 1 /* topConcat */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.metaIterators:Ljava/util/Deque;
            invokeinterface java.util.Deque.isEmpty:()Z
            ifeq 13
        15: .line 1354
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* topConcat */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.topMetaIterator:Ljava/util/Iterator;
        end local 1 // com.google.common.collect.Iterators$ConcatenatedIterator topConcat
        16: .line 1324
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Iterator
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 1
        17: .line 1357
            iconst_1
            ireturn
        end local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Lcom/google/common/collect/Iterators$ConcatenatedIterator<TT;>;
            7   16     1  topConcat  Lcom/google/common/collect/Iterators$ConcatenatedIterator<TT;>;

  public T next();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
         0: .line 1362
            aload 0 /* this */
            invokevirtual com.google.common.collect.Iterators$ConcatenatedIterator.hasNext:()Z
            ifeq 3
         1: .line 1363
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.toRemove:Ljava/util/Iterator;
         2: .line 1364
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.iterator:Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            areturn
         3: .line 1366
      StackMap locals:
      StackMap stack:
            new java.util.NoSuchElementException
            dup
            invokespecial java.util.NoSuchElementException.<init>:()V
            athrow
        end local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/collect/Iterators$ConcatenatedIterator<TT;>;
    Signature: ()TT;

  public void remove();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
         0: .line 1372
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.toRemove:Ljava/util/Iterator;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: invokestatic com.google.common.collect.CollectPreconditions.checkRemove:(Z)V
         3: .line 1373
            aload 0 /* this */
            getfield com.google.common.collect.Iterators$ConcatenatedIterator.toRemove:Ljava/util/Iterator;
            invokeinterface java.util.Iterator.remove:()V
         4: .line 1374
            aload 0 /* this */
            aconst_null
            putfield com.google.common.collect.Iterators$ConcatenatedIterator.toRemove:Ljava/util/Iterator;
         5: .line 1375
            return
        end local 0 // com.google.common.collect.Iterators$ConcatenatedIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/google/common/collect/Iterators$ConcatenatedIterator<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TT;>;
SourceFile: "Iterators.java"
NestHost: com.google.common.collect.Iterators
InnerClasses:
  private ConcatenatedIterator = com.google.common.collect.Iterators$ConcatenatedIterator of com.google.common.collect.Iterators