public abstract class org.apache.lucene.index.SegmentInfos$FindSegmentsFile<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.lucene.index.SegmentInfos$FindSegmentsFile
  super_class: java.lang.Object
{
  final org.apache.lucene.store.Directory directory;
    descriptor: Lorg/apache/lucene/store/Directory;
    flags: (0x0010) ACC_FINAL

  public void <init>(org.apache.lucene.store.Directory);
    descriptor: (Lorg/apache/lucene/store/Directory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.lucene.index.SegmentInfos$FindSegmentsFile this
        start local 1 // org.apache.lucene.store.Directory directory
         0: .line 665
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 666
            aload 0 /* this */
            aload 1 /* directory */
            putfield org.apache.lucene.index.SegmentInfos$FindSegmentsFile.directory:Lorg/apache/lucene/store/Directory;
         2: .line 667
            return
        end local 1 // org.apache.lucene.store.Directory directory
        end local 0 // org.apache.lucene.index.SegmentInfos$FindSegmentsFile this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/apache/lucene/index/SegmentInfos$FindSegmentsFile<TT;>;
            0    3     1  directory  Lorg/apache/lucene/store/Directory;
    MethodParameters:
           Name  Flags
      directory  

  public T run();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.lucene.index.SegmentInfos$FindSegmentsFile this
         0: .line 672
            aload 0 /* this */
            aconst_null
            invokevirtual org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run:(Lorg/apache/lucene/index/IndexCommit;)Ljava/lang/Object;
            areturn
        end local 0 // org.apache.lucene.index.SegmentInfos$FindSegmentsFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/index/SegmentInfos$FindSegmentsFile<TT;>;
    Exceptions:
      throws java.io.IOException
    Signature: ()TT;

  public T run(org.apache.lucene.index.IndexCommit);
    descriptor: (Lorg/apache/lucene/index/IndexCommit;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // org.apache.lucene.index.SegmentInfos$FindSegmentsFile this
        start local 1 // org.apache.lucene.index.IndexCommit commit
         0: .line 677
            aload 1 /* commit */
            ifnull 4
         1: .line 678
            aload 0 /* this */
            getfield org.apache.lucene.index.SegmentInfos$FindSegmentsFile.directory:Lorg/apache/lucene/store/Directory;
            aload 1 /* commit */
            invokevirtual org.apache.lucene.index.IndexCommit.getDirectory:()Lorg/apache/lucene/store/Directory;
            if_acmpeq 3
         2: .line 679
            new java.io.IOException
            dup
            ldc "the specified commit does not match the specified Directory"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 680
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* commit */
            invokevirtual org.apache.lucene.index.IndexCommit.getSegmentsFileName:()Ljava/lang/String;
            invokevirtual org.apache.lucene.index.SegmentInfos$FindSegmentsFile.doBody:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
         4: .line 683
      StackMap locals:
      StackMap stack:
            ldc -1
            lstore 2 /* lastGen */
        start local 2 // long lastGen
         5: .line 684
            ldc -1
            lstore 4 /* gen */
        start local 4 // long gen
         6: .line 685
            aconst_null
            astore 6 /* exc */
        start local 6 // java.io.IOException exc
         7: .line 699
      StackMap locals: long long java.io.IOException
      StackMap stack:
            lload 4 /* gen */
            lstore 2 /* lastGen */
         8: .line 700
            aload 0 /* this */
            getfield org.apache.lucene.index.SegmentInfos$FindSegmentsFile.directory:Lorg/apache/lucene/store/Directory;
            invokevirtual org.apache.lucene.store.Directory.listAll:()[Ljava/lang/String;
            astore 7 /* files */
        start local 7 // java.lang.String[] files
         9: .line 701
            aload 0 /* this */
            getfield org.apache.lucene.index.SegmentInfos$FindSegmentsFile.directory:Lorg/apache/lucene/store/Directory;
            invokevirtual org.apache.lucene.store.Directory.listAll:()[Ljava/lang/String;
            astore 8 /* files2 */
        start local 8 // java.lang.String[] files2
        10: .line 702
            aload 7 /* files */
            invokestatic java.util.Arrays.sort:([Ljava/lang/Object;)V
        11: .line 703
            aload 8 /* files2 */
            invokestatic java.util.Arrays.sort:([Ljava/lang/Object;)V
        12: .line 704
            aload 7 /* files */
            aload 8 /* files2 */
            invokestatic java.util.Arrays.equals:([Ljava/lang/Object;[Ljava/lang/Object;)Z
            ifne 14
        13: .line 706
            goto 7
        14: .line 708
      StackMap locals: java.lang.String[] java.lang.String[]
      StackMap stack:
            aload 7 /* files */
            invokestatic org.apache.lucene.index.SegmentInfos.getLastCommitGeneration:([Ljava/lang/String;)J
            lstore 4 /* gen */
        15: .line 710
            getstatic org.apache.lucene.index.SegmentInfos.infoStream:Ljava/io/PrintStream;
            ifnull 17
        16: .line 711
            new java.lang.StringBuilder
            dup
            ldc "directory listing gen="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 4 /* gen */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.apache.lucene.index.SegmentInfos.message:(Ljava/lang/String;)V
        17: .line 714
      StackMap locals:
      StackMap stack:
            lload 4 /* gen */
            ldc -1
            lcmp
            ifne 19
        18: .line 715
            new org.apache.lucene.index.IndexNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "no segments* file found in "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.lucene.index.SegmentInfos$FindSegmentsFile.directory:Lorg/apache/lucene/store/Directory;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ": files: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* files */
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.lucene.index.IndexNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 716
      StackMap locals:
      StackMap stack:
            lload 4 /* gen */
            lload 2 /* lastGen */
            lcmp
            ifle 32
        20: .line 717
            ldc "segments"
            ldc ""
            lload 4 /* gen */
            invokestatic org.apache.lucene.index.IndexFileNames.fileNameFromGeneration:(Ljava/lang/String;Ljava/lang/String;J)Ljava/lang/String;
            astore 9 /* segmentFileName */
        start local 9 // java.lang.String segmentFileName
        21: .line 720
            aload 0 /* this */
            aload 9 /* segmentFileName */
            invokevirtual org.apache.lucene.index.SegmentInfos$FindSegmentsFile.doBody:(Ljava/lang/String;)Ljava/lang/Object;
            astore 10 /* t */
        start local 10 // java.lang.Object t
        22: .line 721
            getstatic org.apache.lucene.index.SegmentInfos.infoStream:Ljava/io/PrintStream;
            ifnull 24
        23: .line 722
            new java.lang.StringBuilder
            dup
            ldc "success on "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* segmentFileName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.apache.lucene.index.SegmentInfos.message:(Ljava/lang/String;)V
        24: .line 724
      StackMap locals: java.lang.String java.lang.Object
      StackMap stack:
            aload 10 /* t */
        25: areturn
        end local 10 // java.lang.Object t
        26: .line 725
      StackMap locals: org.apache.lucene.index.SegmentInfos$FindSegmentsFile org.apache.lucene.index.IndexCommit long long java.io.IOException java.lang.String[] java.lang.String[] java.lang.String
      StackMap stack: java.io.IOException
            astore 10 /* err */
        start local 10 // java.io.IOException err
        27: .line 727
            aload 6 /* exc */
            ifnonnull 29
        28: .line 728
            aload 10 /* err */
            astore 6 /* exc */
        29: .line 731
      StackMap locals: java.io.IOException
      StackMap stack:
            getstatic org.apache.lucene.index.SegmentInfos.infoStream:Ljava/io/PrintStream;
            ifnull 7
        30: .line 732
            new java.lang.StringBuilder
            dup
            ldc "primary Exception on '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* segmentFileName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "': "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 10 /* err */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "'; will retry: gen = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 4 /* gen */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.apache.lucene.index.SegmentInfos.message:(Ljava/lang/String;)V
        end local 10 // java.io.IOException err
        end local 9 // java.lang.String segmentFileName
        31: .line 735
            goto 7
        32: .line 736
      StackMap locals:
      StackMap stack:
            aload 6 /* exc */
            athrow
        end local 8 // java.lang.String[] files2
        end local 7 // java.lang.String[] files
        end local 6 // java.io.IOException exc
        end local 4 // long gen
        end local 2 // long lastGen
        end local 1 // org.apache.lucene.index.IndexCommit commit
        end local 0 // org.apache.lucene.index.SegmentInfos$FindSegmentsFile this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   33     0             this  Lorg/apache/lucene/index/SegmentInfos$FindSegmentsFile<TT;>;
            0   33     1           commit  Lorg/apache/lucene/index/IndexCommit;
            5   33     2          lastGen  J
            6   33     4              gen  J
            7   33     6              exc  Ljava/io/IOException;
            9   33     7            files  [Ljava/lang/String;
           10   33     8           files2  [Ljava/lang/String;
           21   31     9  segmentFileName  Ljava/lang/String;
           22   26    10                t  TT;
           27   31    10              err  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          21    25      26  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    Signature: (Lorg/apache/lucene/index/IndexCommit;)TT;
    MethodParameters:
        Name  Flags
      commit  

  protected abstract T doBody(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;)TT;
    MethodParameters:
                 Name  Flags
      segmentFileName  
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "SegmentInfos.java"
NestHost: org.apache.lucene.index.SegmentInfos
InnerClasses:
  public abstract FindSegmentsFile = org.apache.lucene.index.SegmentInfos$FindSegmentsFile of org.apache.lucene.index.SegmentInfos