public class org.eclipse.jgit.transport.resolver.FileResolver<C> implements org.eclipse.jgit.transport.resolver.RepositoryResolver<C>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jgit.transport.resolver.FileResolver
  super_class: java.lang.Object
{
  private volatile boolean exportAll;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final java.util.Map<java.lang.String, org.eclipse.jgit.lib.Repository> exports;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lorg/eclipse/jgit/lib/Repository;>;

  private final java.util.Collection<java.io.File> exportBase;
    descriptor: Ljava/util/Collection;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Collection<Ljava/io/File;>;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
         0: .line 43
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 44
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.eclipse.jgit.transport.resolver.FileResolver.exports:Ljava/util/Map;
         2: .line 45
            aload 0 /* this */
            new java.util.concurrent.CopyOnWriteArrayList
            dup
            invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
            putfield org.eclipse.jgit.transport.resolver.FileResolver.exportBase:Ljava/util/Collection;
         3: .line 46
            return
        end local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/eclipse/jgit/transport/resolver/FileResolver<TC;>;

  public void <init>(java.io.File, boolean);
    descriptor: (Ljava/io/File;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
        start local 1 // java.io.File basePath
        start local 2 // boolean exportAll
         0: .line 58
            aload 0 /* this */
            invokespecial org.eclipse.jgit.transport.resolver.FileResolver.<init>:()V
         1: .line 59
            aload 0 /* this */
            aload 1 /* basePath */
            invokevirtual org.eclipse.jgit.transport.resolver.FileResolver.exportDirectory:(Ljava/io/File;)V
         2: .line 60
            aload 0 /* this */
            iload 2 /* exportAll */
            invokevirtual org.eclipse.jgit.transport.resolver.FileResolver.setExportAll:(Z)V
         3: .line 61
            return
        end local 2 // boolean exportAll
        end local 1 // java.io.File basePath
        end local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/eclipse/jgit/transport/resolver/FileResolver<TC;>;
            0    4     1   basePath  Ljava/io/File;
            0    4     2  exportAll  Z
    MethodParameters:
           Name  Flags
      basePath   
      exportAll  

  public org.eclipse.jgit.lib.Repository open(C, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;)Lorg/eclipse/jgit/lib/Repository;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
        start local 1 // java.lang.Object req
        start local 2 // java.lang.String name
         0: .line 67
            aload 2 /* name */
            invokestatic org.eclipse.jgit.transport.resolver.FileResolver.isUnreasonableName:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 68
            new org.eclipse.jgit.errors.RepositoryNotFoundException
            dup
            aload 2 /* name */
            invokespecial org.eclipse.jgit.errors.RepositoryNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 70
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jgit.transport.resolver.FileResolver.exports:Ljava/util/Map;
            aload 2 /* name */
            invokestatic org.eclipse.jgit.transport.resolver.FileResolver.nameWithDotGit:(Ljava/lang/String;)Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.eclipse.jgit.lib.Repository
            astore 3 /* db */
        start local 3 // org.eclipse.jgit.lib.Repository db
         3: .line 71
            aload 3 /* db */
            ifnull 6
         4: .line 72
            aload 3 /* db */
            invokevirtual org.eclipse.jgit.lib.Repository.incrementOpen:()V
         5: .line 73
            aload 3 /* db */
            areturn
         6: .line 76
      StackMap locals: org.eclipse.jgit.lib.Repository
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jgit.transport.resolver.FileResolver.exportBase:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 26
      StackMap locals: org.eclipse.jgit.transport.resolver.FileResolver java.lang.Object java.lang.String org.eclipse.jgit.lib.Repository top java.util.Iterator
      StackMap stack:
         7: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.io.File
            astore 4 /* base */
        start local 4 // java.io.File base
         8: .line 77
            new java.io.File
            dup
            aload 4 /* base */
            aload 2 /* name */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            getstatic org.eclipse.jgit.util.FS.DETECTED:Lorg/eclipse/jgit/util/FS;
            invokestatic org.eclipse.jgit.lib.RepositoryCache$FileKey.resolve:(Ljava/io/File;Lorg/eclipse/jgit/util/FS;)Ljava/io/File;
            astore 6 /* dir */
        start local 6 // java.io.File dir
         9: .line 78
            aload 6 /* dir */
            ifnonnull 11
        10: .line 79
            goto 26
        11: .line 82
      StackMap locals: org.eclipse.jgit.transport.resolver.FileResolver java.lang.Object java.lang.String org.eclipse.jgit.lib.Repository java.io.File java.util.Iterator java.io.File
      StackMap stack:
            aload 6 /* dir */
            getstatic org.eclipse.jgit.util.FS.DETECTED:Lorg/eclipse/jgit/util/FS;
            invokestatic org.eclipse.jgit.lib.RepositoryCache$FileKey.exact:(Ljava/io/File;Lorg/eclipse/jgit/util/FS;)Lorg/eclipse/jgit/lib/RepositoryCache$FileKey;
            astore 7 /* key */
        start local 7 // org.eclipse.jgit.lib.RepositoryCache$FileKey key
        12: .line 83
            aload 7 /* key */
            iconst_1
            invokestatic org.eclipse.jgit.lib.RepositoryCache.open:(Lorg/eclipse/jgit/lib/RepositoryCache$Key;Z)Lorg/eclipse/jgit/lib/Repository;
            astore 3 /* db */
        end local 7 // org.eclipse.jgit.lib.RepositoryCache$FileKey key
        13: .line 84
            goto 16
      StackMap locals:
      StackMap stack: java.io.IOException
        14: astore 7 /* e */
        start local 7 // java.io.IOException e
        15: .line 85
            new org.eclipse.jgit.errors.RepositoryNotFoundException
            dup
            aload 2 /* name */
            aload 7 /* e */
            invokespecial org.eclipse.jgit.errors.RepositoryNotFoundException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.io.IOException e
        16: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* req */
            aload 2 /* name */
            aload 3 /* db */
            invokevirtual org.eclipse.jgit.transport.resolver.FileResolver.isExportOk:(Ljava/lang/Object;Ljava/lang/String;Lorg/eclipse/jgit/lib/Repository;)Z
            ifeq 19
        17: .line 93
            aload 3 /* db */
        18: areturn
        19: .line 95
      StackMap locals:
      StackMap stack:
            new org.eclipse.jgit.transport.resolver.ServiceNotEnabledException
            dup
            invokespecial org.eclipse.jgit.transport.resolver.ServiceNotEnabledException.<init>:()V
            athrow
        20: .line 97
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 7 /* e */
        start local 7 // java.lang.Exception e
        21: .line 98
            aload 3 /* db */
            invokevirtual org.eclipse.jgit.lib.Repository.close:()V
        22: .line 99
            new org.eclipse.jgit.errors.RepositoryNotFoundException
            dup
            aload 2 /* name */
            aload 7 /* e */
            invokespecial org.eclipse.jgit.errors.RepositoryNotFoundException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.Exception e
        23: .line 101
      StackMap locals:
      StackMap stack: org.eclipse.jgit.transport.resolver.ServiceNotEnabledException
            astore 7 /* e */
        start local 7 // org.eclipse.jgit.transport.resolver.ServiceNotEnabledException e
        24: .line 102
            aload 3 /* db */
            invokevirtual org.eclipse.jgit.lib.Repository.close:()V
        25: .line 103
            aload 7 /* e */
            athrow
        end local 7 // org.eclipse.jgit.transport.resolver.ServiceNotEnabledException e
        end local 6 // java.io.File dir
        end local 4 // java.io.File base
        26: .line 76
      StackMap locals: org.eclipse.jgit.transport.resolver.FileResolver java.lang.Object java.lang.String org.eclipse.jgit.lib.Repository top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        27: .line 107
            aload 0 /* this */
            getfield org.eclipse.jgit.transport.resolver.FileResolver.exportBase:Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
            iconst_1
            if_icmpne 32
        28: .line 108
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.eclipse.jgit.transport.resolver.FileResolver.exportBase:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.io.File
            aload 2 /* name */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 4 /* dir */
        start local 4 // java.io.File dir
        29: .line 109
            new org.eclipse.jgit.errors.RepositoryNotFoundException
            dup
            aload 2 /* name */
        30: .line 110
            new org.eclipse.jgit.errors.RepositoryNotFoundException
            dup
            aload 4 /* dir */
            invokespecial org.eclipse.jgit.errors.RepositoryNotFoundException.<init>:(Ljava/io/File;)V
        31: .line 109
            invokespecial org.eclipse.jgit.errors.RepositoryNotFoundException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.io.File dir
        32: .line 113
      StackMap locals: org.eclipse.jgit.transport.resolver.FileResolver java.lang.Object java.lang.String org.eclipse.jgit.lib.Repository
      StackMap stack:
            new org.eclipse.jgit.errors.RepositoryNotFoundException
            dup
            aload 2 /* name */
            invokespecial org.eclipse.jgit.errors.RepositoryNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // org.eclipse.jgit.lib.Repository db
        end local 2 // java.lang.String name
        end local 1 // java.lang.Object req
        end local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   33     0  this  Lorg/eclipse/jgit/transport/resolver/FileResolver<TC;>;
            0   33     1   req  TC;
            0   33     2  name  Ljava/lang/String;
            3   33     3    db  Lorg/eclipse/jgit/lib/Repository;
            8   26     4  base  Ljava/io/File;
            9   26     6   dir  Ljava/io/File;
           12   13     7   key  Lorg/eclipse/jgit/lib/RepositoryCache$FileKey;
           15   16     7     e  Ljava/io/IOException;
           21   23     7     e  Ljava/lang/Exception;
           24   26     7     e  Lorg/eclipse/jgit/transport/resolver/ServiceNotEnabledException;
           29   32     4   dir  Ljava/io/File;
      Exception table:
        from    to  target  type
          11    13      14  Class java.io.IOException
          16    18      20  Class java.lang.RuntimeException
          19    20      20  Class java.lang.RuntimeException
          16    18      20  Class java.io.IOException
          19    20      20  Class java.io.IOException
          16    18      23  Class org.eclipse.jgit.transport.resolver.ServiceNotEnabledException
          19    20      23  Class org.eclipse.jgit.transport.resolver.ServiceNotEnabledException
    Exceptions:
      throws org.eclipse.jgit.errors.RepositoryNotFoundException, org.eclipse.jgit.transport.resolver.ServiceNotEnabledException
    Signature: (TC;Ljava/lang/String;)Lorg/eclipse/jgit/lib/Repository;
    MethodParameters:
      Name  Flags
      req   
      name  

  public boolean isExportAll();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
         0: .line 126
            aload 0 /* this */
            getfield org.eclipse.jgit.transport.resolver.FileResolver.exportAll:Z
            ireturn
        end local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/transport/resolver/FileResolver<TC;>;

  public void setExportAll(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
        start local 1 // boolean export
         0: .line 142
            aload 0 /* this */
            iload 1 /* export */
            putfield org.eclipse.jgit.transport.resolver.FileResolver.exportAll:Z
         1: .line 143
            return
        end local 1 // boolean export
        end local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/eclipse/jgit/transport/resolver/FileResolver<TC;>;
            0    2     1  export  Z
    MethodParameters:
        Name  Flags
      export  

  public void exportRepository(java.lang.String, org.eclipse.jgit.lib.Repository);
    descriptor: (Ljava/lang/String;Lorg/eclipse/jgit/lib/Repository;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
        start local 1 // java.lang.String name
        start local 2 // org.eclipse.jgit.lib.Repository db
         0: .line 157
            aload 0 /* this */
            getfield org.eclipse.jgit.transport.resolver.FileResolver.exports:Ljava/util/Map;
            aload 1 /* name */
            invokestatic org.eclipse.jgit.transport.resolver.FileResolver.nameWithDotGit:(Ljava/lang/String;)Ljava/lang/String;
            aload 2 /* db */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 158
            return
        end local 2 // org.eclipse.jgit.lib.Repository db
        end local 1 // java.lang.String name
        end local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jgit/transport/resolver/FileResolver<TC;>;
            0    2     1  name  Ljava/lang/String;
            0    2     2    db  Lorg/eclipse/jgit/lib/Repository;
    MethodParameters:
      Name  Flags
      name  
      db    

  public void exportDirectory(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
        start local 1 // java.io.File dir
         0: .line 169
            aload 0 /* this */
            getfield org.eclipse.jgit.transport.resolver.FileResolver.exportBase:Ljava/util/Collection;
            aload 1 /* dir */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
         1: .line 170
            return
        end local 1 // java.io.File dir
        end local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jgit/transport/resolver/FileResolver<TC;>;
            0    2     1   dir  Ljava/io/File;
    MethodParameters:
      Name  Flags
      dir   

  protected boolean isExportOk(C, java.lang.String, org.eclipse.jgit.lib.Repository);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;Lorg/eclipse/jgit/lib/Repository;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
        start local 1 // java.lang.Object req
        start local 2 // java.lang.String repositoryName
        start local 3 // org.eclipse.jgit.lib.Repository db
         0: .line 192
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.transport.resolver.FileResolver.isExportAll:()Z
            ifeq 2
         1: .line 193
            iconst_1
            ireturn
         2: .line 194
      StackMap locals:
      StackMap stack:
            aload 3 /* db */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            ifnull 4
         3: .line 195
            new java.io.File
            dup
            aload 3 /* db */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            ldc "git-daemon-export-ok"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            invokevirtual java.io.File.exists:()Z
            ireturn
         4: .line 197
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // org.eclipse.jgit.lib.Repository db
        end local 2 // java.lang.String repositoryName
        end local 1 // java.lang.Object req
        end local 0 // org.eclipse.jgit.transport.resolver.FileResolver this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Lorg/eclipse/jgit/transport/resolver/FileResolver<TC;>;
            0    5     1             req  TC;
            0    5     2  repositoryName  Ljava/lang/String;
            0    5     3              db  Lorg/eclipse/jgit/lib/Repository;
    Exceptions:
      throws java.io.IOException
    Signature: (TC;Ljava/lang/String;Lorg/eclipse/jgit/lib/Repository;)Z
    MethodParameters:
                Name  Flags
      req             
      repositoryName  
      db              

  private static java.lang.String nameWithDotGit(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 201
            aload 0 /* name */
            ldc ".git"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 202
            aload 0 /* name */
            areturn
         2: .line 203
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".git"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  private static boolean isUnreasonableName(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 207
            aload 0 /* name */
            invokevirtual java.lang.String.length:()I
            ifne 2
         1: .line 208
            iconst_1
            ireturn
         2: .line 210
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            bipush 92
            invokevirtual java.lang.String.indexOf:(I)I
            iflt 4
         3: .line 211
            iconst_1
            ireturn
         4: .line 212
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 0 /* name */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.isAbsolute:()Z
            ifeq 6
         5: .line 213
            iconst_1
            ireturn
         6: .line 215
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            ldc "../"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 8
         7: .line 216
            iconst_1
            ireturn
         8: .line 217
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            ldc "/../"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 10
         9: .line 218
            iconst_1
            ireturn
        10: .line 219
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            ldc "/./"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 12
        11: .line 220
            iconst_1
            ireturn
        12: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            ldc "//"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 14
        13: .line 222
            iconst_1
            ireturn
        14: .line 224
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  
}
Signature: <C:Ljava/lang/Object;>Ljava/lang/Object;Lorg/eclipse/jgit/transport/resolver/RepositoryResolver<TC;>;
SourceFile: "FileResolver.java"
InnerClasses:
  public FileKey = org.eclipse.jgit.lib.RepositoryCache$FileKey of org.eclipse.jgit.lib.RepositoryCache
  public abstract Key = org.eclipse.jgit.lib.RepositoryCache$Key of org.eclipse.jgit.lib.RepositoryCache