public abstract class org.eclipse.jgit.util.FS
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.eclipse.jgit.util.FS
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger LOG;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected static final org.eclipse.jgit.treewalk.WorkingTreeIterator$Entry[] NO_ENTRIES;
    descriptor: [Lorg/eclipse/jgit/treewalk/WorkingTreeIterator$Entry;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  private volatile java.lang.Boolean supportSymlinks;
    descriptor: Ljava/lang/Boolean;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  public static final org.eclipse.jgit.util.FS DETECTED;
    descriptor: Lorg/eclipse/jgit/util/FS;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static volatile org.eclipse.jgit.util.FS$FSFactory factory;
    descriptor: Lorg/eclipse/jgit/util/FS$FSFactory;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private volatile org.eclipse.jgit.util.FS$Holder<java.io.File> userHome;
    descriptor: Lorg/eclipse/jgit/util/FS$Holder;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Lorg/eclipse/jgit/util/FS$Holder<Ljava/io/File;>;

  private volatile org.eclipse.jgit.util.FS$Holder<java.io.File> gitSystemConfig;
    descriptor: Lorg/eclipse/jgit/util/FS$Holder;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Lorg/eclipse/jgit/util/FS$Holder<Ljava/io/File;>;

  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 88
            ldc Lorg/eclipse/jgit/util/FS;
            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.eclipse.jgit.util.FS.$assertionsDisabled:Z
         3: .line 89
            ldc Lorg/eclipse/jgit/util/FS;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
         4: .line 97
            iconst_0
            anewarray org.eclipse.jgit.treewalk.WorkingTreeIterator$Entry
            putstatic org.eclipse.jgit.util.FS.NO_ENTRIES:[Lorg/eclipse/jgit/treewalk/WorkingTreeIterator$Entry;
         5: .line 841
            invokestatic org.eclipse.jgit.util.FS.detect:()Lorg/eclipse/jgit/util/FS;
            putstatic org.eclipse.jgit.util.FS.DETECTED:Lorg/eclipse/jgit/util/FS;
         6: .line 843
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static org.eclipse.jgit.util.FS detect();
    descriptor: ()Lorg/eclipse/jgit/util/FS;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 851
            aconst_null
            invokestatic org.eclipse.jgit.util.FS.detect:(Ljava/lang/Boolean;)Lorg/eclipse/jgit/util/FS;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void setAsyncFileStoreAttributes(boolean);
    descriptor: (Z)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // boolean asynch
         0: .line 866
            iload 0 /* asynch */
            invokestatic org.eclipse.jgit.util.FS$FileStoreAttributes.setBackground:(Z)V
         1: .line 867
            return
        end local 0 // boolean asynch
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  asynch  Z
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
        Name  Flags
      asynch  

  public static org.eclipse.jgit.util.FS detect(java.lang.Boolean);
    descriptor: (Ljava/lang/Boolean;)Lorg/eclipse/jgit/util/FS;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Boolean cygwinUsed
         0: .line 890
            getstatic org.eclipse.jgit.util.FS.factory:Lorg/eclipse/jgit/util/FS$FSFactory;
            ifnonnull 2
         1: .line 891
            new org.eclipse.jgit.util.FS$FSFactory
            dup
            invokespecial org.eclipse.jgit.util.FS$FSFactory.<init>:()V
            putstatic org.eclipse.jgit.util.FS.factory:Lorg/eclipse/jgit/util/FS$FSFactory;
         2: .line 893
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jgit.util.FS.factory:Lorg/eclipse/jgit/util/FS$FSFactory;
            aload 0 /* cygwinUsed */
            invokevirtual org.eclipse.jgit.util.FS$FSFactory.detect:(Ljava/lang/Boolean;)Lorg/eclipse/jgit/util/FS;
            areturn
        end local 0 // java.lang.Boolean cygwinUsed
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  cygwinUsed  Ljava/lang/Boolean;
    MethodParameters:
            Name  Flags
      cygwinUsed  

  public static org.eclipse.jgit.util.FS$FileStoreAttributes getFileStoreAttributes(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Lorg/eclipse/jgit/util/FS$FileStoreAttributes;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.nio.file.Path dir
         0: .line 908
            aload 0 /* dir */
            invokestatic org.eclipse.jgit.util.FS$FileStoreAttributes.get:(Ljava/nio/file/Path;)Lorg/eclipse/jgit/util/FS$FileStoreAttributes;
            areturn
        end local 0 // java.nio.file.Path dir
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   dir  Ljava/nio/file/Path;
    RuntimeInvisibleParameterAnnotations: 
      0:
        org.eclipse.jgit.annotations.NonNull()
    MethodParameters:
      Name  Flags
      dir   

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 918
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 920
            return
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jgit/util/FS;

  protected void <init>(org.eclipse.jgit.util.FS);
    descriptor: (Lorg/eclipse/jgit/util/FS;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // org.eclipse.jgit.util.FS src
         0: .line 928
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 929
            aload 0 /* this */
            aload 1 /* src */
            getfield org.eclipse.jgit.util.FS.userHome:Lorg/eclipse/jgit/util/FS$Holder;
            putfield org.eclipse.jgit.util.FS.userHome:Lorg/eclipse/jgit/util/FS$Holder;
         2: .line 930
            aload 0 /* this */
            aload 1 /* src */
            getfield org.eclipse.jgit.util.FS.gitSystemConfig:Lorg/eclipse/jgit/util/FS$Holder;
            putfield org.eclipse.jgit.util.FS.gitSystemConfig:Lorg/eclipse/jgit/util/FS$Holder;
         3: .line 931
            return
        end local 1 // org.eclipse.jgit.util.FS src
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/eclipse/jgit/util/FS;
            0    4     1   src  Lorg/eclipse/jgit/util/FS;
    MethodParameters:
      Name  Flags
      src   

  public abstract org.eclipse.jgit.util.FS newInstance();
    descriptor: ()Lorg/eclipse/jgit/util/FS;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean supportsExecute();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public boolean supportsAtomicCreateNewFile();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 960
            iconst_1
            ireturn
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;

  public boolean supportsSymlinks();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 971
            aload 0 /* this */
            getfield org.eclipse.jgit.util.FS.supportSymlinks:Ljava/lang/Boolean;
            ifnonnull 2
         1: .line 972
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.detectSymlinkSupport:()V
         2: .line 974
      StackMap locals:
      StackMap stack:
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            aload 0 /* this */
            getfield org.eclipse.jgit.util.FS.supportSymlinks:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/eclipse/jgit/util/FS;

  private void detectSymlinkSupport();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 978
            aconst_null
            astore 1 /* tempFile */
        start local 1 // java.io.File tempFile
         1: .line 980
            ldc "tempsymlinktarget"
            ldc ""
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 1 /* tempFile */
         2: .line 981
            new java.io.File
            dup
            aload 1 /* tempFile */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            ldc "tempsymlink"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 2 /* linkName */
        start local 2 // java.io.File linkName
         3: .line 982
            aload 0 /* this */
            aload 2 /* linkName */
            aload 1 /* tempFile */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokevirtual org.eclipse.jgit.util.FS.createSymLink:(Ljava/io/File;Ljava/lang/String;)V
         4: .line 983
            aload 0 /* this */
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            putfield org.eclipse.jgit.util.FS.supportSymlinks:Ljava/lang/Boolean;
         5: .line 984
            aload 2 /* linkName */
            invokevirtual java.io.File.delete:()Z
            pop
        end local 2 // java.io.File linkName
         6: .line 985
            goto 21
         7: .line 986
      StackMap locals: org.eclipse.jgit.util.FS java.io.File
      StackMap stack: java.lang.Throwable
            pop
         8: .line 987
            aload 0 /* this */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            putfield org.eclipse.jgit.util.FS.supportSymlinks:Ljava/lang/Boolean;
         9: .line 989
            aload 1 /* tempFile */
            ifnull 26
        10: .line 991
            aload 1 /* tempFile */
            invokestatic org.eclipse.jgit.util.FileUtils.delete:(Ljava/io/File;)V
        11: .line 992
            goto 26
      StackMap locals:
      StackMap stack: java.io.IOException
        12: pop
        13: .line 993
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.cannotDeleteFile:Ljava/lang/String;
            aload 1 /* tempFile */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;)V
            goto 26
        14: .line 988
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        15: .line 989
            aload 1 /* tempFile */
            ifnull 20
        16: .line 991
            aload 1 /* tempFile */
            invokestatic org.eclipse.jgit.util.FileUtils.delete:(Ljava/io/File;)V
        17: .line 992
            goto 20
      StackMap locals: org.eclipse.jgit.util.FS java.io.File top java.lang.Throwable
      StackMap stack: java.io.IOException
        18: pop
        19: .line 993
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.cannotDeleteFile:Ljava/lang/String;
            aload 1 /* tempFile */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;)V
        20: .line 996
      StackMap locals:
      StackMap stack:
            aload 3
            athrow
        21: .line 989
      StackMap locals: org.eclipse.jgit.util.FS java.io.File
      StackMap stack:
            aload 1 /* tempFile */
            ifnull 26
        22: .line 991
            aload 1 /* tempFile */
            invokestatic org.eclipse.jgit.util.FileUtils.delete:(Ljava/io/File;)V
        23: .line 992
            goto 26
      StackMap locals:
      StackMap stack: java.io.IOException
        24: pop
        25: .line 993
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.cannotDeleteFile:Ljava/lang/String;
            aload 1 /* tempFile */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;)V
        26: .line 997
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.File tempFile
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   27     0      this  Lorg/eclipse/jgit/util/FS;
            1   27     1  tempFile  Ljava/io/File;
            3    6     2  linkName  Ljava/io/File;
      Exception table:
        from    to  target  type
           1     6       7  Class java.io.IOException
           1     6       7  Class java.lang.UnsupportedOperationException
           1     6       7  Class java.lang.SecurityException
           1     6       7  Class java.lang.InternalError
          10    11      12  Class java.io.IOException
           1     9      14  any
          16    17      18  Class java.io.IOException
          22    23      24  Class java.io.IOException

  public abstract boolean isCaseSensitive();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean canExecute(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      f     

  public abstract boolean setExecute(java.io.File, boolean);
    descriptor: (Ljava/io/File;Z)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      f        
      canExec  

  public long lastModified(java.io.File);
    descriptor: (Ljava/io/File;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File f
         0: .line 1051
            aload 1 /* f */
            invokestatic org.eclipse.jgit.util.FileUtils.lastModified:(Ljava/io/File;)J
            lreturn
        end local 1 // java.io.File f
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1     f  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      f     

  public java.time.Instant lastModifiedInstant(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/time/Instant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.nio.file.Path p
         0: .line 1065
            aload 1 /* p */
            invokestatic org.eclipse.jgit.util.FileUtils.lastModifiedInstant:(Ljava/nio/file/Path;)Ljava/time/Instant;
            areturn
        end local 1 // java.nio.file.Path p
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1     p  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      p     

  public java.time.Instant lastModifiedInstant(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/time/Instant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File f
         0: .line 1079
            aload 1 /* f */
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            invokestatic org.eclipse.jgit.util.FileUtils.lastModifiedInstant:(Ljava/nio/file/Path;)Ljava/time/Instant;
            areturn
        end local 1 // java.io.File f
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1     f  Ljava/io/File;
    MethodParameters:
      Name  Flags
      f     

  public void setLastModified(java.io.File, long);
    descriptor: (Ljava/io/File;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File f
        start local 2 // long time
         0: .line 1097
            aload 1 /* f */
            lload 2 /* time */
            invokestatic org.eclipse.jgit.util.FileUtils.setLastModified:(Ljava/io/File;J)V
         1: .line 1098
            return
        end local 2 // long time
        end local 1 // java.io.File f
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jgit/util/FS;
            0    2     1     f  Ljava/io/File;
            0    2     2  time  J
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      f     
      time  

  public void setLastModified(java.nio.file.Path, java.time.Instant);
    descriptor: (Ljava/nio/file/Path;Ljava/time/Instant;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.nio.file.Path p
        start local 2 // java.time.Instant time
         0: .line 1113
            aload 1 /* p */
            aload 2 /* time */
            invokestatic org.eclipse.jgit.util.FileUtils.setLastModified:(Ljava/nio/file/Path;Ljava/time/Instant;)V
         1: .line 1114
            return
        end local 2 // java.time.Instant time
        end local 1 // java.nio.file.Path p
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jgit/util/FS;
            0    2     1     p  Ljava/nio/file/Path;
            0    2     2  time  Ljava/time/Instant;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      p     
      time  

  public long length(java.io.File);
    descriptor: (Ljava/io/File;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1127
            aload 1 /* path */
            invokestatic org.eclipse.jgit.util.FileUtils.getLength:(Ljava/io/File;)J
            lreturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  public void delete(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File f
         0: .line 1140
            aload 1 /* f */
            invokestatic org.eclipse.jgit.util.FileUtils.delete:(Ljava/io/File;)V
         1: .line 1141
            return
        end local 1 // java.io.File f
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jgit/util/FS;
            0    2     1     f  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      f     

  public java.io.File resolve(java.io.File, java.lang.String);
    descriptor: (Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File dir
        start local 2 // java.lang.String name
         0: .line 1162
            new java.io.File
            dup
            aload 2 /* name */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* abspn */
        start local 3 // java.io.File abspn
         1: .line 1163
            aload 3 /* abspn */
            invokevirtual java.io.File.isAbsolute:()Z
            ifeq 3
         2: .line 1164
            aload 3 /* abspn */
            areturn
         3: .line 1165
      StackMap locals: java.io.File
      StackMap stack:
            new java.io.File
            dup
            aload 1 /* dir */
            aload 2 /* name */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            areturn
        end local 3 // java.io.File abspn
        end local 2 // java.lang.String name
        end local 1 // java.io.File dir
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/eclipse/jgit/util/FS;
            0    4     1    dir  Ljava/io/File;
            0    4     2   name  Ljava/lang/String;
            1    4     3  abspn  Ljava/io/File;
    MethodParameters:
      Name  Flags
      dir   
      name  

  public java.io.File userHome();
    descriptor: ()Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 1180
            aload 0 /* this */
            getfield org.eclipse.jgit.util.FS.userHome:Lorg/eclipse/jgit/util/FS$Holder;
            astore 1 /* p */
        start local 1 // org.eclipse.jgit.util.FS$Holder p
         1: .line 1181
            aload 1 /* p */
            ifnonnull 4
         2: .line 1182
            new org.eclipse.jgit.util.FS$Holder
            dup
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.safeUserHomeImpl:()Ljava/io/File;
            invokespecial org.eclipse.jgit.util.FS$Holder.<init>:(Ljava/lang/Object;)V
            astore 1 /* p */
         3: .line 1183
            aload 0 /* this */
            aload 1 /* p */
            putfield org.eclipse.jgit.util.FS.userHome:Lorg/eclipse/jgit/util/FS$Holder;
         4: .line 1185
      StackMap locals: org.eclipse.jgit.util.FS$Holder
      StackMap stack:
            aload 1 /* p */
            getfield org.eclipse.jgit.util.FS$Holder.value:Ljava/lang/Object;
            checkcast java.io.File
            areturn
        end local 1 // org.eclipse.jgit.util.FS$Holder p
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/eclipse/jgit/util/FS;
            1    5     1     p  Lorg/eclipse/jgit/util/FS$Holder<Ljava/io/File;>;

  private java.io.File safeUserHomeImpl();
    descriptor: ()Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 1191
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.userHomeImpl:()Ljava/io/File;
            astore 1 /* home */
        start local 1 // java.io.File home
         1: .line 1192
            aload 1 /* home */
            ifnull 7
         2: .line 1193
            aload 1 /* home */
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            pop
         3: .line 1194
            aload 1 /* home */
         4: areturn
        end local 1 // java.io.File home
         5: .line 1196
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            astore 2 /* e */
        start local 2 // java.lang.RuntimeException e
         6: .line 1197
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.exceptionWhileFindingUserHome:Ljava/lang/String;
            aload 2 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 2 // java.lang.RuntimeException e
         7: .line 1199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.defaultUserHomeImpl:()Ljava/io/File;
            astore 1 /* home */
        start local 1 // java.io.File home
         8: .line 1200
            aload 1 /* home */
            ifnull 16
         9: .line 1202
            aload 1 /* home */
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            pop
        10: .line 1203
            aload 1 /* home */
        11: areturn
        12: .line 1204
      StackMap locals: org.eclipse.jgit.util.FS java.io.File
      StackMap stack: java.nio.file.InvalidPathException
            astore 2 /* e */
        start local 2 // java.nio.file.InvalidPathException e
        13: .line 1205
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
        14: .line 1206
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.invalidHomeDirectory:Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* home */
            aastore
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 2 /* e */
        15: .line 1205
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 2 // java.nio.file.InvalidPathException e
        16: .line 1209
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.io.File home
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lorg/eclipse/jgit/util/FS;
            1    5     1  home  Ljava/io/File;
            8   17     1  home  Ljava/io/File;
            6    7     2     e  Ljava/lang/RuntimeException;
           13   16     2     e  Ljava/nio/file/InvalidPathException;
      Exception table:
        from    to  target  type
           0     4       5  Class java.lang.RuntimeException
           9    11      12  Class java.nio.file.InvalidPathException

  public org.eclipse.jgit.util.FS setUserHome(java.io.File);
    descriptor: (Ljava/io/File;)Lorg/eclipse/jgit/util/FS;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1221
            aload 0 /* this */
            new org.eclipse.jgit.util.FS$Holder
            dup
            aload 1 /* path */
            invokespecial org.eclipse.jgit.util.FS$Holder.<init>:(Ljava/lang/Object;)V
            putfield org.eclipse.jgit.util.FS.userHome:Lorg/eclipse/jgit/util/FS$Holder;
         1: .line 1222
            aload 0 /* this */
            areturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jgit/util/FS;
            0    2     1  path  Ljava/io/File;
    MethodParameters:
      Name  Flags
      path  

  public abstract boolean retryFailedLockFileCommit();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public java.nio.file.attribute.BasicFileAttributes fileAttributes(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/nio/file/attribute/BasicFileAttributes;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File file
         0: .line 1242
            aload 1 /* file */
            invokestatic org.eclipse.jgit.util.FileUtils.fileAttributes:(Ljava/io/File;)Ljava/nio/file/attribute/BasicFileAttributes;
            areturn
        end local 1 // java.io.File file
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  file  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  protected java.io.File userHomeImpl();
    descriptor: ()Ljava/io/File;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 1251
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.defaultUserHomeImpl:()Ljava/io/File;
            areturn
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;

  private java.io.File defaultUserHomeImpl();
    descriptor: ()Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 1256
            invokedynamic run()Ljava/security/PrivilegedAction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  org/eclipse/jgit/util/FS.lambda$0()Ljava/lang/String; (6)
                  ()Ljava/lang/String;
         1: .line 1255
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* home */
        start local 1 // java.lang.String home
         2: .line 1258
            aload 1 /* home */
            ifnull 3
            aload 1 /* home */
            invokevirtual java.lang.String.length:()I
            ifne 4
         3: .line 1259
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            areturn
         4: .line 1260
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 1 /* home */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
            areturn
        end local 1 // java.lang.String home
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/eclipse/jgit/util/FS;
            2    5     1  home  Ljava/lang/String;

  protected static java.io.File searchPath(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Ljava/io/File;
    flags: (0x008c) ACC_PROTECTED, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // java.lang.String path
        start local 1 // java.lang.String[] lookFor
         0: .line 1275
            aload 0 /* path */
            ifnonnull 2
         1: .line 1276
            aconst_null
            areturn
         2: .line 1278
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            getstatic java.io.File.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 18
      StackMap locals: java.lang.String java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         3: aload 5
            iload 3
            aaload
            astore 2 /* p */
        start local 2 // java.lang.String p
         4: .line 1279
            aload 1 /* lookFor */
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 16
      StackMap locals: java.lang.String java.lang.String[] java.lang.String int int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         5: aload 9
            iload 7
            aaload
            astore 6 /* command */
        start local 6 // java.lang.String command
         6: .line 1280
            new java.io.File
            dup
            aload 2 /* p */
            aload 6 /* command */
            invokespecial java.io.File.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 10 /* file */
        start local 10 // java.io.File file
         7: .line 1282
            aload 10 /* file */
            invokevirtual java.io.File.isFile:()Z
            ifeq 15
         8: .line 1283
            aload 10 /* file */
            invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
         9: areturn
        10: .line 1285
      StackMap locals: java.lang.String java.lang.String[] java.lang.String int int java.lang.String[] java.lang.String int int java.lang.String[] java.io.File
      StackMap stack: java.lang.SecurityException
            pop
        11: .line 1286
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
        12: .line 1287
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.skipNotAccessiblePath:Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        13: .line 1288
            aload 10 /* file */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            aastore
        14: .line 1286
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;)V
        end local 10 // java.io.File file
        end local 6 // java.lang.String command
        15: .line 1279
      StackMap locals: java.lang.String java.lang.String[] java.lang.String int int java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        16: iload 7
            iload 8
            if_icmplt 5
        end local 2 // java.lang.String p
        17: .line 1278
            iinc 3 1
      StackMap locals: java.lang.String java.lang.String[] top int int java.lang.String[]
      StackMap stack:
        18: iload 3
            iload 4
            if_icmplt 3
        19: .line 1292
            aconst_null
            areturn
        end local 1 // java.lang.String[] lookFor
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   20     0     path  Ljava/lang/String;
            0   20     1  lookFor  [Ljava/lang/String;
            4   17     2        p  Ljava/lang/String;
            6   15     6  command  Ljava/lang/String;
            7   15    10     file  Ljava/io/File;
      Exception table:
        from    to  target  type
           7     9      10  Class java.lang.SecurityException
    MethodParameters:
         Name  Flags
      path     
      lookFor  

  protected static java.lang.String readPipe(java.io.File, java.lang.String[], java.lang.String);
    descriptor: (Ljava/io/File;[Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.io.File dir
        start local 1 // java.lang.String[] command
        start local 2 // java.lang.String encoding
         0: .line 1312
            aload 0 /* dir */
            aload 1 /* command */
            aload 2 /* encoding */
            aconst_null
            invokestatic org.eclipse.jgit.util.FS.readPipe:(Ljava/io/File;[Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
            areturn
        end local 2 // java.lang.String encoding
        end local 1 // java.lang.String[] command
        end local 0 // java.io.File dir
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0       dir  Ljava/io/File;
            0    1     1   command  [Ljava/lang/String;
            0    1     2  encoding  Ljava/lang/String;
    Exceptions:
      throws org.eclipse.jgit.errors.CommandFailedException
    RuntimeVisibleAnnotations: 
      org.eclipse.jgit.annotations.Nullable()
    MethodParameters:
          Name  Flags
      dir       
      command   
      encoding  

  protected static java.lang.String readPipe(java.io.File, java.lang.String[], java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/io/File;[Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=6, locals=13, args_size=4
        start local 0 // java.io.File dir
        start local 1 // java.lang.String[] command
        start local 2 // java.lang.String encoding
        start local 3 // java.util.Map env
         0: .line 1337
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            istore 4 /* debug */
        start local 4 // boolean debug
         1: .line 1339
            iload 4 /* debug */
            ifeq 5
         2: .line 1340
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "readpipe "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* command */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 1341
            aload 0 /* dir */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 1340
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
         5: .line 1343
      StackMap locals: int
      StackMap stack:
            new java.lang.ProcessBuilder
            dup
            aload 1 /* command */
            invokespecial java.lang.ProcessBuilder.<init>:([Ljava/lang/String;)V
            astore 5 /* pb */
        start local 5 // java.lang.ProcessBuilder pb
         6: .line 1344
            aload 5 /* pb */
            aload 0 /* dir */
            invokevirtual java.lang.ProcessBuilder.directory:(Ljava/io/File;)Ljava/lang/ProcessBuilder;
            pop
         7: .line 1345
            aload 3 /* env */
            ifnull 9
         8: .line 1346
            aload 5 /* pb */
            invokevirtual java.lang.ProcessBuilder.environment:()Ljava/util/Map;
            aload 3 /* env */
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
         9: .line 1350
      StackMap locals: java.lang.ProcessBuilder
      StackMap stack:
            aload 5 /* pb */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 6 /* p */
        start local 6 // java.lang.Process p
        10: .line 1351
            goto 13
        end local 6 // java.lang.Process p
      StackMap locals:
      StackMap stack: java.io.IOException
        11: astore 7 /* e */
        start local 7 // java.io.IOException e
        12: .line 1353
            new org.eclipse.jgit.errors.CommandFailedException
            dup
            iconst_m1
            aload 7 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            aload 7 /* e */
            invokespecial org.eclipse.jgit.errors.CommandFailedException.<init>:(ILjava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.io.IOException e
        start local 6 // java.lang.Process p
        13: .line 1355
      StackMap locals: java.lang.Process
      StackMap stack:
            aload 6 /* p */
            invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.close:()V
        14: .line 1356
            new org.eclipse.jgit.util.FS$GobblerThread
            dup
            aload 6 /* p */
            aload 1 /* command */
            aload 0 /* dir */
            invokespecial org.eclipse.jgit.util.FS$GobblerThread.<init>:(Ljava/lang/Process;[Ljava/lang/String;Ljava/io/File;)V
            astore 7 /* gobbler */
        start local 7 // org.eclipse.jgit.util.FS$GobblerThread gobbler
        15: .line 1357
            aload 7 /* gobbler */
            invokevirtual org.eclipse.jgit.util.FS$GobblerThread.start:()V
        16: .line 1358
            aconst_null
            astore 8 /* r */
        start local 8 // java.lang.String r
        17: .line 1359
            aconst_null
            astore 9
            aconst_null
            astore 10
        18: new java.io.BufferedReader
            dup
        19: .line 1360
            new java.io.InputStreamReader
            dup
            aload 6 /* p */
            invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
            aload 2 /* encoding */
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;Ljava/lang/String;)V
        20: .line 1359
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            astore 11 /* lineRead */
        start local 11 // java.io.BufferedReader lineRead
        21: .line 1361
            aload 11 /* lineRead */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 8 /* r */
        22: .line 1362
            iload 4 /* debug */
            ifeq 29
        23: .line 1363
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "readpipe may return '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* r */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
        24: .line 1364
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            ldc "remaining output:\n"
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
        25: .line 1366
            goto 27
        start local 12 // java.lang.String l
        26: .line 1367
      StackMap locals: java.io.File java.lang.String[] java.lang.String java.util.Map int java.lang.ProcessBuilder java.lang.Process org.eclipse.jgit.util.FS$GobblerThread java.lang.String java.lang.Throwable java.lang.Throwable java.io.BufferedReader java.lang.String
      StackMap stack:
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            aload 12 /* l */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
        end local 12 // java.lang.String l
        27: .line 1366
      StackMap locals:
      StackMap stack:
            aload 11 /* lineRead */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            dup
            astore 12 /* l */
        start local 12 // java.lang.String l
        28: ifnonnull 26
        end local 12 // java.lang.String l
        29: .line 1370
      StackMap locals:
      StackMap stack:
            aload 11 /* lineRead */
            ifnull 35
            aload 11 /* lineRead */
            invokevirtual java.io.BufferedReader.close:()V
            goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: astore 9
            aload 11 /* lineRead */
            ifnull 31
            aload 11 /* lineRead */
            invokevirtual java.io.BufferedReader.close:()V
        end local 11 // java.io.BufferedReader lineRead
      StackMap locals:
      StackMap stack:
        31: aload 9
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        32: astore 10
            aload 9
            ifnonnull 33
            aload 10
            astore 9
            goto 34
      StackMap locals:
      StackMap stack:
        33: aload 9
            aload 10
            if_acmpeq 34
            aload 9
            aload 10
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        34: aload 9
            athrow
        35: .line 1374
      StackMap locals:
      StackMap stack:
            aload 6 /* p */
            invokevirtual java.lang.Process.waitFor:()I
            istore 9 /* rc */
        start local 9 // int rc
        36: .line 1375
            aload 7 /* gobbler */
            invokevirtual org.eclipse.jgit.util.FS$GobblerThread.join:()V
        37: .line 1376
            iload 9 /* rc */
            ifne 40
            aload 7 /* gobbler */
            getfield org.eclipse.jgit.util.FS$GobblerThread.fail:Ljava/util/concurrent/atomic/AtomicBoolean;
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
            ifne 40
        38: .line 1377
            aload 8 /* r */
        39: areturn
        40: .line 1379
      StackMap locals: int
      StackMap stack:
            iload 4 /* debug */
            ifeq 42
        41: .line 1380
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "readpipe rc="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 9 /* rc */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
        42: .line 1382
      StackMap locals:
      StackMap stack:
            new org.eclipse.jgit.errors.CommandFailedException
            dup
            iload 9 /* rc */
        43: .line 1383
            aload 7 /* gobbler */
            getfield org.eclipse.jgit.util.FS$GobblerThread.errorMessage:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast java.lang.String
        44: .line 1384
            aload 7 /* gobbler */
            getfield org.eclipse.jgit.util.FS$GobblerThread.exception:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast java.lang.Throwable
        45: .line 1382
            invokespecial org.eclipse.jgit.errors.CommandFailedException.<init>:(ILjava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 9 // int rc
        46: .line 1385
      StackMap locals: java.io.File java.lang.String[] java.lang.String java.util.Map int java.lang.ProcessBuilder java.lang.Process org.eclipse.jgit.util.FS$GobblerThread java.lang.String
      StackMap stack: java.lang.InterruptedException
            pop
        47: .line 1372
            goto 35
        end local 8 // java.lang.String r
        end local 7 // org.eclipse.jgit.util.FS$GobblerThread gobbler
        end local 6 // java.lang.Process p
        end local 5 // java.lang.ProcessBuilder pb
        48: .line 1389
      StackMap locals: java.io.File java.lang.String[] java.lang.String java.util.Map int
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        49: .line 1390
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            ldc "Caught exception in FS.readPipe()"
            aload 5 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 5 // java.io.IOException e
        50: goto 61
        51: .line 1391
      StackMap locals:
      StackMap stack: java.security.AccessControlException
            astore 5 /* e */
        start local 5 // java.security.AccessControlException e
        52: .line 1392
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
        53: .line 1393
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.readPipeIsNotAllowedRequiredPermission:Ljava/lang/String;
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        54: .line 1394
            aload 1 /* command */
            aastore
            dup
            iconst_1
            aload 0 /* dir */
            aastore
            dup
            iconst_2
            aload 5 /* e */
            invokevirtual java.security.AccessControlException.getPermission:()Ljava/security/Permission;
            aastore
        55: .line 1392
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;)V
        end local 5 // java.security.AccessControlException e
        56: goto 61
        57: .line 1395
      StackMap locals:
      StackMap stack: java.lang.SecurityException
            pop
        58: .line 1396
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.readPipeIsNotAllowed:Ljava/lang/String;
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        59: .line 1397
            aload 1 /* command */
            aastore
            dup
            iconst_1
            aload 0 /* dir */
            aastore
        60: .line 1396
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;)V
        61: .line 1399
      StackMap locals:
      StackMap stack:
            iload 4 /* debug */
            ifeq 63
        62: .line 1400
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            ldc "readpipe returns null"
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
        63: .line 1402
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // boolean debug
        end local 3 // java.util.Map env
        end local 2 // java.lang.String encoding
        end local 1 // java.lang.String[] command
        end local 0 // java.io.File dir
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   64     0       dir  Ljava/io/File;
            0   64     1   command  [Ljava/lang/String;
            0   64     2  encoding  Ljava/lang/String;
            0   64     3       env  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            1   64     4     debug  Z
            6   48     5        pb  Ljava/lang/ProcessBuilder;
           10   11     6         p  Ljava/lang/Process;
           13   48     6         p  Ljava/lang/Process;
           12   13     7         e  Ljava/io/IOException;
           15   48     7   gobbler  Lorg/eclipse/jgit/util/FS$GobblerThread;
           17   48     8         r  Ljava/lang/String;
           21   31    11  lineRead  Ljava/io/BufferedReader;
           26   27    12         l  Ljava/lang/String;
           28   29    12         l  Ljava/lang/String;
           36   46     9        rc  I
           49   50     5         e  Ljava/io/IOException;
           52   56     5         e  Ljava/security/AccessControlException;
      Exception table:
        from    to  target  type
           9    10      11  Class java.io.IOException
          21    29      30  any
          18    32      32  any
          35    39      46  Class java.lang.InterruptedException
          40    46      46  Class java.lang.InterruptedException
           1    39      48  Class java.io.IOException
          40    48      48  Class java.io.IOException
           1    39      51  Class java.security.AccessControlException
          40    48      51  Class java.security.AccessControlException
           1    39      57  Class java.lang.SecurityException
          40    48      57  Class java.lang.SecurityException
    Exceptions:
      throws org.eclipse.jgit.errors.CommandFailedException
    Signature: (Ljava/io/File;[Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      org.eclipse.jgit.annotations.Nullable()
    MethodParameters:
          Name  Flags
      dir       
      command   
      encoding  
      env       

  protected abstract java.io.File discoverGitExe();
    descriptor: ()Ljava/io/File;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected java.io.File discoverGitSystemConfig();
    descriptor: ()Ljava/io/File;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 1493
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.discoverGitExe:()Ljava/io/File;
            astore 1 /* gitExe */
        start local 1 // java.io.File gitExe
         1: .line 1494
            aload 1 /* gitExe */
            ifnonnull 3
         2: .line 1495
            aconst_null
            areturn
         3: .line 1501
      StackMap locals: java.io.File
      StackMap stack:
            aload 1 /* gitExe */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
         4: .line 1502
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            aload 1 /* gitExe */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            ldc "--version"
            aastore
         5: .line 1503
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
         6: .line 1501
            invokestatic org.eclipse.jgit.util.FS.readPipe:(Ljava/io/File;[Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* v */
        start local 2 // java.lang.String v
         7: .line 1504
            goto 11
        end local 2 // java.lang.String v
      StackMap locals:
      StackMap stack: org.eclipse.jgit.errors.CommandFailedException
         8: astore 3 /* e */
        start local 3 // org.eclipse.jgit.errors.CommandFailedException e
         9: .line 1505
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            aload 3 /* e */
            invokevirtual org.eclipse.jgit.errors.CommandFailedException.getMessage:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;)V
        10: .line 1506
            aconst_null
            areturn
        end local 3 // org.eclipse.jgit.errors.CommandFailedException e
        start local 2 // java.lang.String v
        11: .line 1508
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* v */
            invokestatic org.eclipse.jgit.util.StringUtils.isEmptyOrNull:(Ljava/lang/String;)Z
            ifne 13
        12: .line 1509
            aload 2 /* v */
            ifnull 14
            aload 2 /* v */
            ldc "jgit"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 14
        13: .line 1510
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        14: .line 1515
      StackMap locals:
      StackMap stack:
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 3 /* env */
        start local 3 // java.util.Map env
        15: .line 1516
            aload 3 /* env */
            ldc "GIT_EDITOR"
            ldc "echo"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 1520
            aload 1 /* gitExe */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
        17: .line 1521
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            aload 1 /* gitExe */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            ldc "config"
            aastore
            dup
            iconst_2
            ldc "--system"
            aastore
            dup
            iconst_3
        18: .line 1522
            ldc "--edit"
            aastore
        19: .line 1523
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
            aload 3 /* env */
        20: .line 1520
            invokestatic org.eclipse.jgit.util.FS.readPipe:(Ljava/io/File;[Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
            astore 4 /* w */
        start local 4 // java.lang.String w
        21: .line 1524
            goto 25
        end local 4 // java.lang.String w
      StackMap locals: org.eclipse.jgit.util.FS java.io.File java.lang.String java.util.Map
      StackMap stack: org.eclipse.jgit.errors.CommandFailedException
        22: astore 5 /* e */
        start local 5 // org.eclipse.jgit.errors.CommandFailedException e
        23: .line 1525
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            aload 5 /* e */
            invokevirtual org.eclipse.jgit.errors.CommandFailedException.getMessage:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;)V
        24: .line 1526
            aconst_null
            areturn
        end local 5 // org.eclipse.jgit.errors.CommandFailedException e
        start local 4 // java.lang.String w
        25: .line 1528
      StackMap locals: java.lang.String
      StackMap stack:
            aload 4 /* w */
            invokestatic org.eclipse.jgit.util.StringUtils.isEmptyOrNull:(Ljava/lang/String;)Z
            ifeq 27
        26: .line 1529
            aconst_null
            areturn
        27: .line 1532
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 4 /* w */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            areturn
        end local 4 // java.lang.String w
        end local 3 // java.util.Map env
        end local 2 // java.lang.String v
        end local 1 // java.io.File gitExe
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   28     0    this  Lorg/eclipse/jgit/util/FS;
            1   28     1  gitExe  Ljava/io/File;
            7    8     2       v  Ljava/lang/String;
           11   28     2       v  Ljava/lang/String;
            9   11     3       e  Lorg/eclipse/jgit/errors/CommandFailedException;
           15   28     3     env  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           21   22     4       w  Ljava/lang/String;
           25   28     4       w  Ljava/lang/String;
           23   25     5       e  Lorg/eclipse/jgit/errors/CommandFailedException;
      Exception table:
        from    to  target  type
           3     7       8  Class org.eclipse.jgit.errors.CommandFailedException
          16    21      22  Class org.eclipse.jgit.errors.CommandFailedException

  public java.io.File getGitSystemConfig();
    descriptor: ()Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 1543
            aload 0 /* this */
            getfield org.eclipse.jgit.util.FS.gitSystemConfig:Lorg/eclipse/jgit/util/FS$Holder;
            ifnonnull 2
         1: .line 1544
            aload 0 /* this */
            new org.eclipse.jgit.util.FS$Holder
            dup
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.discoverGitSystemConfig:()Ljava/io/File;
            invokespecial org.eclipse.jgit.util.FS$Holder.<init>:(Ljava/lang/Object;)V
            putfield org.eclipse.jgit.util.FS.gitSystemConfig:Lorg/eclipse/jgit/util/FS$Holder;
         2: .line 1546
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jgit.util.FS.gitSystemConfig:Lorg/eclipse/jgit/util/FS$Holder;
            getfield org.eclipse.jgit.util.FS$Holder.value:Ljava/lang/Object;
            checkcast java.io.File
            areturn
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/eclipse/jgit/util/FS;

  public org.eclipse.jgit.util.FS setGitSystemConfig(java.io.File);
    descriptor: (Ljava/io/File;)Lorg/eclipse/jgit/util/FS;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File configFile
         0: .line 1558
            aload 0 /* this */
            new org.eclipse.jgit.util.FS$Holder
            dup
            aload 1 /* configFile */
            invokespecial org.eclipse.jgit.util.FS$Holder.<init>:(Ljava/lang/Object;)V
            putfield org.eclipse.jgit.util.FS.gitSystemConfig:Lorg/eclipse/jgit/util/FS$Holder;
         1: .line 1559
            aload 0 /* this */
            areturn
        end local 1 // java.io.File configFile
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/eclipse/jgit/util/FS;
            0    2     1  configFile  Ljava/io/File;
    MethodParameters:
            Name  Flags
      configFile  

  protected static java.io.File resolveGrandparentFile(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/io/File;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.io.File grandchild
         0: .line 1572
            aload 0 /* grandchild */
            ifnull 4
         1: .line 1573
            aload 0 /* grandchild */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            astore 1 /* parent */
        start local 1 // java.io.File parent
         2: .line 1574
            aload 1 /* parent */
            ifnull 4
         3: .line 1575
            aload 1 /* parent */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            areturn
        end local 1 // java.io.File parent
         4: .line 1577
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.io.File grandchild
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0  grandchild  Ljava/io/File;
            2    4     1      parent  Ljava/io/File;
    MethodParameters:
            Name  Flags
      grandchild  

  public java.lang.String readSymLink(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1590
            aload 1 /* path */
            invokestatic org.eclipse.jgit.util.FileUtils.readSymLink:(Ljava/io/File;)Ljava/lang/String;
            areturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  public boolean isSymLink(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1603
            aload 1 /* path */
            invokestatic org.eclipse.jgit.util.FileUtils.isSymlink:(Ljava/io/File;)Z
            ireturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  public boolean exists(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1616
            aload 1 /* path */
            invokestatic org.eclipse.jgit.util.FileUtils.exists:(Ljava/io/File;)Z
            ireturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    MethodParameters:
      Name  Flags
      path  

  public boolean isDirectory(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1629
            aload 1 /* path */
            invokestatic org.eclipse.jgit.util.FileUtils.isDirectory:(Ljava/io/File;)Z
            ireturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    MethodParameters:
      Name  Flags
      path  

  public boolean isFile(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1642
            aload 1 /* path */
            invokestatic org.eclipse.jgit.util.FileUtils.isFile:(Ljava/io/File;)Z
            ireturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    MethodParameters:
      Name  Flags
      path  

  public boolean isHidden(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1657
            aload 1 /* path */
            invokestatic org.eclipse.jgit.util.FileUtils.isHidden:(Ljava/io/File;)Z
            ireturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  public void setHidden(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.util.FS this
        start local 1 // java.io.File path
        start local 2 // boolean hidden
         0: .line 1671
            aload 1 /* path */
            iload 2 /* hidden */
            invokestatic org.eclipse.jgit.util.FileUtils.setHidden:(Ljava/io/File;Z)V
         1: .line 1672
            return
        end local 2 // boolean hidden
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/eclipse/jgit/util/FS;
            0    2     1    path  Ljava/io/File;
            0    2     2  hidden  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      path    
      hidden  

  public void createSymLink(java.io.File, java.lang.String);
    descriptor: (Ljava/io/File;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
        start local 2 // java.lang.String target
         0: .line 1685
            aload 1 /* path */
            aload 2 /* target */
            invokestatic org.eclipse.jgit.util.FileUtils.createSymLink:(Ljava/io/File;Ljava/lang/String;)Ljava/nio/file/Path;
            pop
         1: .line 1686
            return
        end local 2 // java.lang.String target
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/eclipse/jgit/util/FS;
            0    2     1    path  Ljava/io/File;
            0    2     2  target  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      path    
      target  

  public boolean createNewFile(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1703
            aload 1 /* path */
            invokevirtual java.io.File.createNewFile:()Z
            ireturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      path  

  public org.eclipse.jgit.util.FS$LockToken createNewFileAtomic(java.io.File);
    descriptor: (Ljava/io/File;)Lorg/eclipse/jgit/util/FS$LockToken;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 1771
            new org.eclipse.jgit.util.FS$LockToken
            dup
            aload 1 /* path */
            invokevirtual java.io.File.createNewFile:()Z
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            invokespecial org.eclipse.jgit.util.FS$LockToken.<init>:(ZLjava/util/Optional;)V
            areturn
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  path  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  public java.lang.String relativize(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.lang.String base
        start local 2 // java.lang.String other
         0: .line 1789
            aload 1 /* base */
            aload 2 /* other */
            getstatic java.io.File.separator:Ljava/lang/String;
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.isCaseSensitive:()Z
            invokestatic org.eclipse.jgit.util.FileUtils.relativizePath:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
            areturn
        end local 2 // java.lang.String other
        end local 1 // java.lang.String base
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/eclipse/jgit/util/FS;
            0    1     1   base  Ljava/lang/String;
            0    1     2  other  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      base   
      other  

  public org.eclipse.jgit.treewalk.WorkingTreeIterator$Entry[] list(java.io.File, org.eclipse.jgit.treewalk.FileTreeIterator$FileModeStrategy);
    descriptor: (Ljava/io/File;Lorg/eclipse/jgit/treewalk/FileTreeIterator$FileModeStrategy;)[Lorg/eclipse/jgit/treewalk/WorkingTreeIterator$Entry;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File directory
        start local 2 // org.eclipse.jgit.treewalk.FileTreeIterator$FileModeStrategy fileModeStrategy
         0: .line 1804
            aload 1 /* directory */
            invokevirtual java.io.File.listFiles:()[Ljava/io/File;
            astore 3 /* all */
        start local 3 // java.io.File[] all
         1: .line 1805
            aload 3 /* all */
            ifnonnull 3
         2: .line 1806
            getstatic org.eclipse.jgit.util.FS.NO_ENTRIES:[Lorg/eclipse/jgit/treewalk/WorkingTreeIterator$Entry;
            areturn
         3: .line 1808
      StackMap locals: java.io.File[]
      StackMap stack:
            aload 3 /* all */
            arraylength
            anewarray org.eclipse.jgit.treewalk.WorkingTreeIterator$Entry
            astore 4 /* result */
        start local 4 // org.eclipse.jgit.treewalk.WorkingTreeIterator$Entry[] result
         4: .line 1809
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: goto 8
         6: .line 1810
      StackMap locals: org.eclipse.jgit.treewalk.WorkingTreeIterator$Entry[] int
      StackMap stack:
            aload 4 /* result */
            iload 5 /* i */
            new org.eclipse.jgit.treewalk.FileTreeIterator$FileEntry
            dup
            aload 3 /* all */
            iload 5 /* i */
            aaload
            aload 0 /* this */
            aload 2 /* fileModeStrategy */
            invokespecial org.eclipse.jgit.treewalk.FileTreeIterator$FileEntry.<init>:(Ljava/io/File;Lorg/eclipse/jgit/util/FS;Lorg/eclipse/jgit/treewalk/FileTreeIterator$FileModeStrategy;)V
            aastore
         7: .line 1809
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 5 /* i */
            aload 4 /* result */
            arraylength
            if_icmplt 6
        end local 5 // int i
         9: .line 1812
            aload 4 /* result */
            areturn
        end local 4 // org.eclipse.jgit.treewalk.WorkingTreeIterator$Entry[] result
        end local 3 // java.io.File[] all
        end local 2 // org.eclipse.jgit.treewalk.FileTreeIterator$FileModeStrategy fileModeStrategy
        end local 1 // java.io.File directory
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   10     0              this  Lorg/eclipse/jgit/util/FS;
            0   10     1         directory  Ljava/io/File;
            0   10     2  fileModeStrategy  Lorg/eclipse/jgit/treewalk/FileTreeIterator$FileModeStrategy;
            1   10     3               all  [Ljava/io/File;
            4   10     4            result  [Lorg/eclipse/jgit/treewalk/WorkingTreeIterator$Entry;
            5    9     5                 i  I
    MethodParameters:
                  Name  Flags
      directory         
      fileModeStrategy  

  public org.eclipse.jgit.util.ProcessResult runHookIfPresent(org.eclipse.jgit.lib.Repository, java.lang.String, java.lang.String[]);
    descriptor: (Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;[Ljava/lang/String;)Lorg/eclipse/jgit/util/ProcessResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // org.eclipse.jgit.lib.Repository repository
        start local 2 // java.lang.String hookName
        start local 3 // java.lang.String[] args
         0: .line 1840
            aload 0 /* this */
            aload 1 /* repository */
            aload 2 /* hookName */
            aload 3 /* args */
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            getstatic java.lang.System.err:Ljava/io/PrintStream;
         1: .line 1841
            aconst_null
         2: .line 1840
            invokevirtual org.eclipse.jgit.util.FS.runHookIfPresent:(Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;[Ljava/lang/String;Ljava/io/PrintStream;Ljava/io/PrintStream;Ljava/lang/String;)Lorg/eclipse/jgit/util/ProcessResult;
            areturn
        end local 3 // java.lang.String[] args
        end local 2 // java.lang.String hookName
        end local 1 // org.eclipse.jgit.lib.Repository repository
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/eclipse/jgit/util/FS;
            0    3     1  repository  Lorg/eclipse/jgit/lib/Repository;
            0    3     2    hookName  Ljava/lang/String;
            0    3     3        args  [Ljava/lang/String;
    Exceptions:
      throws org.eclipse.jgit.api.errors.JGitInternalException
    MethodParameters:
            Name  Flags
      repository  
      hookName    final
      args        

  public org.eclipse.jgit.util.ProcessResult runHookIfPresent(org.eclipse.jgit.lib.Repository, java.lang.String, java.lang.String[], java.io.PrintStream, java.io.PrintStream, java.lang.String);
    descriptor: (Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;[Ljava/lang/String;Ljava/io/PrintStream;Ljava/io/PrintStream;Ljava/lang/String;)Lorg/eclipse/jgit/util/ProcessResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=7
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // org.eclipse.jgit.lib.Repository repository
        start local 2 // java.lang.String hookName
        start local 3 // java.lang.String[] args
        start local 4 // java.io.PrintStream outRedirect
        start local 5 // java.io.PrintStream errRedirect
        start local 6 // java.lang.String stdinArgs
         0: .line 1876
            new org.eclipse.jgit.util.ProcessResult
            dup
            getstatic org.eclipse.jgit.util.ProcessResult$Status.NOT_SUPPORTED:Lorg/eclipse/jgit/util/ProcessResult$Status;
            invokespecial org.eclipse.jgit.util.ProcessResult.<init>:(Lorg/eclipse/jgit/util/ProcessResult$Status;)V
            areturn
        end local 6 // java.lang.String stdinArgs
        end local 5 // java.io.PrintStream errRedirect
        end local 4 // java.io.PrintStream outRedirect
        end local 3 // java.lang.String[] args
        end local 2 // java.lang.String hookName
        end local 1 // org.eclipse.jgit.lib.Repository repository
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/eclipse/jgit/util/FS;
            0    1     1   repository  Lorg/eclipse/jgit/lib/Repository;
            0    1     2     hookName  Ljava/lang/String;
            0    1     3         args  [Ljava/lang/String;
            0    1     4  outRedirect  Ljava/io/PrintStream;
            0    1     5  errRedirect  Ljava/io/PrintStream;
            0    1     6    stdinArgs  Ljava/lang/String;
    Exceptions:
      throws org.eclipse.jgit.api.errors.JGitInternalException
    MethodParameters:
             Name  Flags
      repository   
      hookName     final
      args         
      outRedirect  
      errRedirect  
      stdinArgs    

  protected org.eclipse.jgit.util.ProcessResult internalRunHookIfPresent(org.eclipse.jgit.lib.Repository, java.lang.String, java.lang.String[], java.io.PrintStream, java.io.PrintStream, java.lang.String);
    descriptor: (Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;[Ljava/lang/String;Ljava/io/PrintStream;Ljava/io/PrintStream;Ljava/lang/String;)Lorg/eclipse/jgit/util/ProcessResult;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=13, args_size=7
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // org.eclipse.jgit.lib.Repository repository
        start local 2 // java.lang.String hookName
        start local 3 // java.lang.String[] args
        start local 4 // java.io.PrintStream outRedirect
        start local 5 // java.io.PrintStream errRedirect
        start local 6 // java.lang.String stdinArgs
         0: .line 1912
            aload 0 /* this */
            aload 1 /* repository */
            aload 2 /* hookName */
            invokevirtual org.eclipse.jgit.util.FS.findHook:(Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;)Ljava/io/File;
            astore 7 /* hookFile */
        start local 7 // java.io.File hookFile
         1: .line 1913
            aload 7 /* hookFile */
            ifnull 2
            aload 2 /* hookName */
            ifnonnull 3
         2: .line 1914
      StackMap locals: java.io.File
      StackMap stack:
            new org.eclipse.jgit.util.ProcessResult
            dup
            getstatic org.eclipse.jgit.util.ProcessResult$Status.NOT_PRESENT:Lorg/eclipse/jgit/util/ProcessResult$Status;
            invokespecial org.eclipse.jgit.util.ProcessResult.<init>:(Lorg/eclipse/jgit/util/ProcessResult$Status;)V
            areturn
         3: .line 1917
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* repository */
            aload 2 /* hookName */
            invokevirtual org.eclipse.jgit.util.FS.getRunDirectory:(Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;)Ljava/io/File;
            astore 8 /* runDirectory */
        start local 8 // java.io.File runDirectory
         4: .line 1918
            aload 8 /* runDirectory */
            ifnonnull 6
         5: .line 1919
            new org.eclipse.jgit.util.ProcessResult
            dup
            getstatic org.eclipse.jgit.util.ProcessResult$Status.NOT_PRESENT:Lorg/eclipse/jgit/util/ProcessResult$Status;
            invokespecial org.eclipse.jgit.util.ProcessResult.<init>:(Lorg/eclipse/jgit/util/ProcessResult$Status;)V
            areturn
         6: .line 1921
      StackMap locals: java.io.File
      StackMap stack:
            aload 7 /* hookFile */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            astore 9 /* cmd */
        start local 9 // java.lang.String cmd
         7: .line 1922
            aload 0 /* this */
            aload 0 /* this */
            aload 9 /* cmd */
            invokevirtual org.eclipse.jgit.util.FS.shellQuote:(Ljava/lang/String;)Ljava/lang/String;
            aload 3 /* args */
            invokevirtual org.eclipse.jgit.util.FS.runInShell:(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/ProcessBuilder;
            astore 10 /* hookProcess */
        start local 10 // java.lang.ProcessBuilder hookProcess
         8: .line 1923
            aload 10 /* hookProcess */
            aload 8 /* runDirectory */
            invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
            invokevirtual java.lang.ProcessBuilder.directory:(Ljava/io/File;)Ljava/lang/ProcessBuilder;
            pop
         9: .line 1924
            aload 10 /* hookProcess */
            invokevirtual java.lang.ProcessBuilder.environment:()Ljava/util/Map;
            astore 11 /* environment */
        start local 11 // java.util.Map environment
        10: .line 1925
            aload 11 /* environment */
            ldc "GIT_DIR"
        11: .line 1926
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
        12: .line 1925
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 1927
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.isBare:()Z
            ifne 17
        14: .line 1928
            aload 11 /* environment */
            ldc "GIT_WORK_TREE"
        15: .line 1929
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getWorkTree:()Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
        16: .line 1928
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 1932
      StackMap locals: java.lang.String java.lang.ProcessBuilder java.util.Map
      StackMap stack:
            new org.eclipse.jgit.util.ProcessResult
            dup
            aload 0 /* this */
            aload 10 /* hookProcess */
            aload 4 /* outRedirect */
        18: .line 1933
            aload 5 /* errRedirect */
            aload 6 /* stdinArgs */
        19: .line 1932
            invokevirtual org.eclipse.jgit.util.FS.runProcess:(Ljava/lang/ProcessBuilder;Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/lang/String;)I
        20: .line 1933
            getstatic org.eclipse.jgit.util.ProcessResult$Status.OK:Lorg/eclipse/jgit/util/ProcessResult$Status;
        21: .line 1932
            invokespecial org.eclipse.jgit.util.ProcessResult.<init>:(ILorg/eclipse/jgit/util/ProcessResult$Status;)V
        22: areturn
        23: .line 1934
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 12 /* e */
        start local 12 // java.io.IOException e
        24: .line 1935
            new org.eclipse.jgit.api.errors.JGitInternalException
            dup
        25: .line 1936
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.exceptionCaughtDuringExecutionOfHook:Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        26: .line 1937
            aload 2 /* hookName */
            aastore
        27: .line 1935
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        28: .line 1937
            aload 12 /* e */
        29: .line 1935
            invokespecial org.eclipse.jgit.api.errors.JGitInternalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 12 // java.io.IOException e
        30: .line 1938
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            astore 12 /* e */
        start local 12 // java.lang.InterruptedException e
        31: .line 1939
            new org.eclipse.jgit.api.errors.JGitInternalException
            dup
        32: .line 1940
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.exceptionHookExecutionInterrupted:Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        33: .line 1941
            aload 2 /* hookName */
            aastore
        34: .line 1939
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        35: .line 1941
            aload 12 /* e */
        36: .line 1939
            invokespecial org.eclipse.jgit.api.errors.JGitInternalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 12 // java.lang.InterruptedException e
        end local 11 // java.util.Map environment
        end local 10 // java.lang.ProcessBuilder hookProcess
        end local 9 // java.lang.String cmd
        end local 8 // java.io.File runDirectory
        end local 7 // java.io.File hookFile
        end local 6 // java.lang.String stdinArgs
        end local 5 // java.io.PrintStream errRedirect
        end local 4 // java.io.PrintStream outRedirect
        end local 3 // java.lang.String[] args
        end local 2 // java.lang.String hookName
        end local 1 // org.eclipse.jgit.lib.Repository repository
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   37     0          this  Lorg/eclipse/jgit/util/FS;
            0   37     1    repository  Lorg/eclipse/jgit/lib/Repository;
            0   37     2      hookName  Ljava/lang/String;
            0   37     3          args  [Ljava/lang/String;
            0   37     4   outRedirect  Ljava/io/PrintStream;
            0   37     5   errRedirect  Ljava/io/PrintStream;
            0   37     6     stdinArgs  Ljava/lang/String;
            1   37     7      hookFile  Ljava/io/File;
            4   37     8  runDirectory  Ljava/io/File;
            7   37     9           cmd  Ljava/lang/String;
            8   37    10   hookProcess  Ljava/lang/ProcessBuilder;
           10   37    11   environment  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           24   30    12             e  Ljava/io/IOException;
           31   37    12             e  Ljava/lang/InterruptedException;
      Exception table:
        from    to  target  type
          17    22      23  Class java.io.IOException
          17    22      30  Class java.lang.InterruptedException
    Exceptions:
      throws org.eclipse.jgit.api.errors.JGitInternalException
    MethodParameters:
             Name  Flags
      repository   
      hookName     final
      args         
      outRedirect  
      errRedirect  
      stdinArgs    

  java.lang.String shellQuote(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.lang.String cmd
         0: .line 1958
            aload 1 /* cmd */
            areturn
        end local 1 // java.lang.String cmd
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1   cmd  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      cmd   

  public java.io.File findHook(org.eclipse.jgit.lib.Repository, java.lang.String);
    descriptor: (Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;)Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // org.eclipse.jgit.lib.Repository repository
        start local 2 // java.lang.String hookName
         0: .line 1973
            aload 2 /* hookName */
            ifnonnull 2
         1: .line 1974
            aconst_null
            areturn
         2: .line 1976
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.util.FS.getHooksDirectory:(Lorg/eclipse/jgit/lib/Repository;)Ljava/io/File;
            astore 3 /* hookDir */
        start local 3 // java.io.File hookDir
         3: .line 1977
            aload 3 /* hookDir */
            ifnonnull 5
         4: .line 1978
            aconst_null
            areturn
         5: .line 1980
      StackMap locals: java.io.File
      StackMap stack:
            new java.io.File
            dup
            aload 3 /* hookDir */
            aload 2 /* hookName */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 4 /* hookFile */
        start local 4 // java.io.File hookFile
         6: .line 1981
            aload 4 /* hookFile */
            invokevirtual java.io.File.isAbsolute:()Z
            ifeq 10
         7: .line 1982
            aload 4 /* hookFile */
            invokevirtual java.io.File.exists:()Z
            ifeq 9
            getstatic org.eclipse.jgit.util.FS.DETECTED:Lorg/eclipse/jgit/util/FS;
            invokevirtual org.eclipse.jgit.util.FS.supportsExecute:()Z
            ifeq 29
         8: .line 1983
            getstatic org.eclipse.jgit.util.FS.DETECTED:Lorg/eclipse/jgit/util/FS;
            aload 4 /* hookFile */
            invokevirtual org.eclipse.jgit.util.FS.canExecute:(Ljava/io/File;)Z
            ifne 29
         9: .line 1984
      StackMap locals: java.io.File
      StackMap stack:
            aconst_null
            areturn
        10: .line 1988
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* repository */
            aload 2 /* hookName */
            invokevirtual org.eclipse.jgit.util.FS.getRunDirectory:(Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;)Ljava/io/File;
            astore 5 /* runDirectory */
        start local 5 // java.io.File runDirectory
        11: .line 1989
            aload 5 /* runDirectory */
            ifnonnull 13
        12: .line 1990
            aconst_null
            areturn
        13: .line 1992
      StackMap locals: java.io.File
      StackMap stack:
            aload 5 /* runDirectory */
            invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
        14: .line 1993
            aload 4 /* hookFile */
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
        15: .line 1992
            astore 6 /* hookPath */
        start local 6 // java.nio.file.Path hookPath
        16: .line 1994
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getFS:()Lorg/eclipse/jgit/util/FS;
            astore 7 /* fs */
        start local 7 // org.eclipse.jgit.util.FS fs
        17: .line 1995
            aload 7 /* fs */
            ifnonnull 19
        18: .line 1996
            getstatic org.eclipse.jgit.util.FS.DETECTED:Lorg/eclipse/jgit/util/FS;
            astore 7 /* fs */
        19: .line 1998
      StackMap locals: java.nio.file.Path org.eclipse.jgit.util.FS
      StackMap stack:
            aload 6 /* hookPath */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 21
            aload 7 /* fs */
            invokevirtual org.eclipse.jgit.util.FS.supportsExecute:()Z
            ifeq 22
        20: .line 1999
            aload 7 /* fs */
            aload 6 /* hookPath */
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            invokevirtual org.eclipse.jgit.util.FS.canExecute:(Ljava/io/File;)Z
            ifne 22
        21: .line 2000
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        22: .line 2002
      StackMap locals:
      StackMap stack:
            aload 6 /* hookPath */
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            astore 4 /* hookFile */
        end local 7 // org.eclipse.jgit.util.FS fs
        end local 6 // java.nio.file.Path hookPath
        end local 5 // java.io.File runDirectory
        23: .line 2003
            goto 29
      StackMap locals: org.eclipse.jgit.util.FS org.eclipse.jgit.lib.Repository java.lang.String java.io.File java.io.File
      StackMap stack: java.nio.file.InvalidPathException
        24: pop
        25: .line 2004
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            invokestatic org.eclipse.jgit.internal.JGitText.get:()Lorg/eclipse/jgit/internal/JGitText;
            getfield org.eclipse.jgit.internal.JGitText.invalidHooksPath:Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        26: .line 2005
            aload 4 /* hookFile */
            aastore
        27: .line 2004
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;)V
        28: .line 2006
            aconst_null
            areturn
        29: .line 2009
      StackMap locals:
      StackMap stack:
            aload 4 /* hookFile */
            areturn
        end local 4 // java.io.File hookFile
        end local 3 // java.io.File hookDir
        end local 2 // java.lang.String hookName
        end local 1 // org.eclipse.jgit.lib.Repository repository
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   30     0          this  Lorg/eclipse/jgit/util/FS;
            0   30     1    repository  Lorg/eclipse/jgit/lib/Repository;
            0   30     2      hookName  Ljava/lang/String;
            3   30     3       hookDir  Ljava/io/File;
            6   30     4      hookFile  Ljava/io/File;
           11   23     5  runDirectory  Ljava/io/File;
           16   23     6      hookPath  Ljava/nio/file/Path;
           17   23     7            fs  Lorg/eclipse/jgit/util/FS;
      Exception table:
        from    to  target  type
          10    12      24  Class java.nio.file.InvalidPathException
          13    21      24  Class java.nio.file.InvalidPathException
          22    23      24  Class java.nio.file.InvalidPathException
    MethodParameters:
            Name  Flags
      repository  
      hookName    

  private java.io.File getRunDirectory(org.eclipse.jgit.lib.Repository, java.lang.String);
    descriptor: (Lorg/eclipse/jgit/lib/Repository;Ljava/lang/String;)Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // org.eclipse.jgit.lib.Repository repository
        start local 2 // java.lang.String hookName
         0: .line 2014
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.isBare:()Z
            ifeq 2
         1: .line 2015
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            areturn
         2: .line 2017
      StackMap locals:
      StackMap stack:
            aload 2 /* hookName */
            dup
            astore 3
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 5
           -838846263: 3
           -685435242: 4
           -287722055: 5
           1179305509: 6
           1543065270: 7
              default: 9
          }
      StackMap locals: java.lang.String
      StackMap stack:
         3: aload 3
            ldc "update"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 9
      StackMap locals:
      StackMap stack:
         4: aload 3
            ldc "post-update"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 9
      StackMap locals:
      StackMap stack:
         5: aload 3
            ldc "pre-receive"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 9
      StackMap locals:
      StackMap stack:
         6: aload 3
            ldc "push-to-checkout"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 9
      StackMap locals:
      StackMap stack:
         7: aload 3
            ldc "post-receive"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 9
         8: .line 2023
      StackMap locals:
      StackMap stack:
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            areturn
         9: .line 2025
      StackMap locals:
      StackMap stack:
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getWorkTree:()Ljava/io/File;
            areturn
        end local 2 // java.lang.String hookName
        end local 1 // org.eclipse.jgit.lib.Repository repository
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/eclipse/jgit/util/FS;
            0   10     1  repository  Lorg/eclipse/jgit/lib/Repository;
            0   10     2    hookName  Ljava/lang/String;
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        org.eclipse.jgit.annotations.NonNull()
    MethodParameters:
            Name  Flags
      repository  
      hookName    

  private java.io.File getHooksDirectory(org.eclipse.jgit.lib.Repository);
    descriptor: (Lorg/eclipse/jgit/lib/Repository;)Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // org.eclipse.jgit.lib.Repository repository
         0: .line 2030
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getConfig:()Lorg/eclipse/jgit/lib/StoredConfig;
            astore 2 /* config */
        start local 2 // org.eclipse.jgit.lib.Config config
         1: .line 2031
            aload 2 /* config */
            ldc "core"
         2: .line 2032
            aconst_null
            ldc "hooksPath"
         3: .line 2031
            invokevirtual org.eclipse.jgit.lib.Config.getString:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* hooksDir */
        start local 3 // java.lang.String hooksDir
         4: .line 2033
            aload 3 /* hooksDir */
            ifnull 6
         5: .line 2034
            new java.io.File
            dup
            aload 3 /* hooksDir */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            areturn
         6: .line 2036
      StackMap locals: org.eclipse.jgit.lib.Config java.lang.String
      StackMap stack:
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            astore 4 /* dir */
        start local 4 // java.io.File dir
         7: .line 2037
            aload 4 /* dir */
            ifnonnull 8
            aconst_null
            goto 9
      StackMap locals: java.io.File
      StackMap stack:
         8: new java.io.File
            dup
            aload 4 /* dir */
            ldc "hooks"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
      StackMap locals:
      StackMap stack: java.io.File
         9: areturn
        end local 4 // java.io.File dir
        end local 3 // java.lang.String hooksDir
        end local 2 // org.eclipse.jgit.lib.Config config
        end local 1 // org.eclipse.jgit.lib.Repository repository
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/eclipse/jgit/util/FS;
            0   10     1  repository  Lorg/eclipse/jgit/lib/Repository;
            1   10     2      config  Lorg/eclipse/jgit/lib/Config;
            4   10     3    hooksDir  Ljava/lang/String;
            7   10     4         dir  Ljava/io/File;
    MethodParameters:
            Name  Flags
      repository  

  public int runProcess(java.lang.ProcessBuilder, java.io.OutputStream, java.io.OutputStream, java.lang.String);
    descriptor: (Ljava/lang/ProcessBuilder;Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/lang/String;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.lang.ProcessBuilder processBuilder
        start local 2 // java.io.OutputStream outRedirect
        start local 3 // java.io.OutputStream errRedirect
        start local 4 // java.lang.String stdinArgs
         0: .line 2068
            aload 4 /* stdinArgs */
            ifnonnull 1
            aconst_null
            goto 3
      StackMap locals:
      StackMap stack:
         1: new java.io.ByteArrayInputStream
            dup
         2: .line 2069
            aload 4 /* stdinArgs */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
         3: .line 2068
      StackMap locals:
      StackMap stack: java.io.ByteArrayInputStream
            astore 5 /* in */
        start local 5 // java.io.InputStream in
         4: .line 2070
            aload 0 /* this */
            aload 1 /* processBuilder */
            aload 2 /* outRedirect */
            aload 3 /* errRedirect */
            aload 5 /* in */
            invokevirtual org.eclipse.jgit.util.FS.runProcess:(Ljava/lang/ProcessBuilder;Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;)I
            ireturn
        end local 5 // java.io.InputStream in
        end local 4 // java.lang.String stdinArgs
        end local 3 // java.io.OutputStream errRedirect
        end local 2 // java.io.OutputStream outRedirect
        end local 1 // java.lang.ProcessBuilder processBuilder
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Lorg/eclipse/jgit/util/FS;
            0    5     1  processBuilder  Ljava/lang/ProcessBuilder;
            0    5     2     outRedirect  Ljava/io/OutputStream;
            0    5     3     errRedirect  Ljava/io/OutputStream;
            0    5     4       stdinArgs  Ljava/lang/String;
            4    5     5              in  Ljava/io/InputStream;
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException
    MethodParameters:
                Name  Flags
      processBuilder  
      outRedirect     
      errRedirect     
      stdinArgs       

  public int runProcess(java.lang.ProcessBuilder, java.io.OutputStream, java.io.OutputStream, java.io.InputStream);
    descriptor: (Ljava/lang/ProcessBuilder;Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=13, args_size=5
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.lang.ProcessBuilder processBuilder
        start local 2 // java.io.OutputStream outRedirect
        start local 3 // java.io.OutputStream errRedirect
        start local 4 // java.io.InputStream inRedirect
         0: .line 2105
            iconst_2
            invokestatic java.util.concurrent.Executors.newFixedThreadPool:(I)Ljava/util/concurrent/ExecutorService;
            astore 5 /* executor */
        start local 5 // java.util.concurrent.ExecutorService executor
         1: .line 2106
            aconst_null
            astore 6 /* process */
        start local 6 // java.lang.Process process
         2: .line 2109
            aconst_null
            astore 7 /* ioException */
        start local 7 // java.io.IOException ioException
         3: .line 2111
            aload 1 /* processBuilder */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 6 /* process */
         4: .line 2112
            aload 5 /* executor */
         5: .line 2113
            new org.eclipse.jgit.util.FS$StreamGobbler
            dup
            aload 6 /* process */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            aload 3 /* errRedirect */
            invokespecial org.eclipse.jgit.util.FS$StreamGobbler.<init>:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
         6: .line 2112
            invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
         7: .line 2114
            aload 5 /* executor */
         8: .line 2115
            new org.eclipse.jgit.util.FS$StreamGobbler
            dup
            aload 6 /* process */
            invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
            aload 2 /* outRedirect */
            invokespecial org.eclipse.jgit.util.FS$StreamGobbler.<init>:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
         9: .line 2114
            invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
        10: .line 2117
            aload 6 /* process */
            invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
            astore 8 /* outputStream */
        start local 8 // java.io.OutputStream outputStream
        11: .line 2119
            aload 4 /* inRedirect */
            ifnull 19
        12: .line 2120
            new org.eclipse.jgit.util.FS$StreamGobbler
            dup
            aload 4 /* inRedirect */
            aload 8 /* outputStream */
            invokespecial org.eclipse.jgit.util.FS$StreamGobbler.<init>:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
            invokevirtual org.eclipse.jgit.util.FS$StreamGobbler.copy:()V
        13: .line 2122
            goto 19
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException java.io.OutputStream
      StackMap stack: java.lang.Throwable
        14: astore 9
        15: .line 2124
            aload 8 /* outputStream */
            invokevirtual java.io.OutputStream.close:()V
        16: .line 2125
            goto 18
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException java.io.OutputStream java.lang.Throwable
      StackMap stack: java.io.IOException
        17: pop
        18: .line 2133
      StackMap locals:
      StackMap stack:
            aload 9
            athrow
        19: .line 2124
      StackMap locals:
      StackMap stack:
            aload 8 /* outputStream */
            invokevirtual java.io.OutputStream.close:()V
        20: .line 2125
            goto 22
      StackMap locals:
      StackMap stack: java.io.IOException
        21: pop
        22: .line 2134
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            istore 11
        23: .line 2138
            aload 5 /* executor */
            invokestatic org.eclipse.jgit.util.FS.shutdownAndAwaitTermination:(Ljava/util/concurrent/ExecutorService;)Z
            pop
        24: .line 2139
            aload 6 /* process */
            ifnull 50
        25: .line 2141
            aload 6 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            pop
        26: .line 2142
            goto 29
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException java.io.OutputStream top top int
      StackMap stack: java.lang.InterruptedException
        27: pop
        28: .line 2147
            invokestatic java.lang.Thread.interrupted:()Z
            pop
        29: .line 2152
      StackMap locals:
      StackMap stack:
            aload 4 /* inRedirect */
            ifnull 31
        30: .line 2153
            aload 4 /* inRedirect */
            invokevirtual java.io.InputStream.close:()V
        31: .line 2156
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        32: .line 2157
            goto 37
      StackMap locals:
      StackMap stack: java.io.IOException
        33: astore 12 /* e */
        start local 12 // java.io.IOException e
        34: .line 2158
            aload 7 /* ioException */
            ifnull 35
            aload 7 /* ioException */
            goto 36
      StackMap locals: java.io.IOException
      StackMap stack:
        35: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
        36: astore 7 /* ioException */
        end local 12 // java.io.IOException e
        37: .line 2161
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        38: .line 2162
            goto 43
      StackMap locals:
      StackMap stack: java.io.IOException
        39: astore 12 /* e */
        start local 12 // java.io.IOException e
        40: .line 2163
            aload 7 /* ioException */
            ifnull 41
            aload 7 /* ioException */
            goto 42
      StackMap locals: java.io.IOException
      StackMap stack:
        41: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
        42: astore 7 /* ioException */
        end local 12 // java.io.IOException e
        43: .line 2166
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.close:()V
        44: .line 2167
            goto 49
      StackMap locals:
      StackMap stack: java.io.IOException
        45: astore 12 /* e */
        start local 12 // java.io.IOException e
        46: .line 2168
            aload 7 /* ioException */
            ifnull 47
            aload 7 /* ioException */
            goto 48
      StackMap locals: java.io.IOException
      StackMap stack:
        47: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
        48: astore 7 /* ioException */
        end local 12 // java.io.IOException e
        49: .line 2170
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.destroy:()V
        50: .line 2134
      StackMap locals:
      StackMap stack:
            iload 11
            ireturn
        end local 8 // java.io.OutputStream outputStream
        51: .line 2135
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException
      StackMap stack: java.io.IOException
            astore 8 /* e */
        start local 8 // java.io.IOException e
        52: .line 2136
            aload 8 /* e */
            astore 7 /* ioException */
        end local 8 // java.io.IOException e
        53: .line 2138
            aload 5 /* executor */
            invokestatic org.eclipse.jgit.util.FS.shutdownAndAwaitTermination:(Ljava/util/concurrent/ExecutorService;)Z
            pop
        54: .line 2139
            aload 6 /* process */
            ifnull 109
        55: .line 2141
            aload 6 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            pop
        56: .line 2142
            goto 59
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        57: pop
        58: .line 2147
            invokestatic java.lang.Thread.interrupted:()Z
            pop
        59: .line 2152
      StackMap locals:
      StackMap stack:
            aload 4 /* inRedirect */
            ifnull 61
        60: .line 2153
            aload 4 /* inRedirect */
            invokevirtual java.io.InputStream.close:()V
        61: .line 2156
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        62: .line 2157
            goto 67
      StackMap locals:
      StackMap stack: java.io.IOException
        63: astore 12 /* e */
        start local 12 // java.io.IOException e
        64: .line 2158
            aload 7 /* ioException */
            ifnull 65
            aload 7 /* ioException */
            goto 66
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top top top java.io.IOException
      StackMap stack:
        65: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
        66: astore 7 /* ioException */
        end local 12 // java.io.IOException e
        67: .line 2161
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        68: .line 2162
            goto 73
      StackMap locals:
      StackMap stack: java.io.IOException
        69: astore 12 /* e */
        start local 12 // java.io.IOException e
        70: .line 2163
            aload 7 /* ioException */
            ifnull 71
            aload 7 /* ioException */
            goto 72
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top top top java.io.IOException
      StackMap stack:
        71: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
        72: astore 7 /* ioException */
        end local 12 // java.io.IOException e
        73: .line 2166
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.close:()V
        74: .line 2167
            goto 79
      StackMap locals:
      StackMap stack: java.io.IOException
        75: astore 12 /* e */
        start local 12 // java.io.IOException e
        76: .line 2168
            aload 7 /* ioException */
            ifnull 77
            aload 7 /* ioException */
            goto 78
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top top top java.io.IOException
      StackMap stack:
        77: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
        78: astore 7 /* ioException */
        end local 12 // java.io.IOException e
        79: .line 2170
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.destroy:()V
            goto 109
        80: .line 2137
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        81: .line 2138
            aload 5 /* executor */
            invokestatic org.eclipse.jgit.util.FS.shutdownAndAwaitTermination:(Ljava/util/concurrent/ExecutorService;)Z
            pop
        82: .line 2139
            aload 6 /* process */
            ifnull 108
        83: .line 2141
            aload 6 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            pop
        84: .line 2142
            goto 87
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top java.lang.Throwable
      StackMap stack: java.lang.InterruptedException
        85: pop
        86: .line 2147
            invokestatic java.lang.Thread.interrupted:()Z
            pop
        87: .line 2152
      StackMap locals:
      StackMap stack:
            aload 4 /* inRedirect */
            ifnull 89
        88: .line 2153
            aload 4 /* inRedirect */
            invokevirtual java.io.InputStream.close:()V
        89: .line 2156
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        90: .line 2157
            goto 95
      StackMap locals:
      StackMap stack: java.io.IOException
        91: astore 12 /* e */
        start local 12 // java.io.IOException e
        92: .line 2158
            aload 7 /* ioException */
            ifnull 93
            aload 7 /* ioException */
            goto 94
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top java.lang.Throwable top java.io.IOException
      StackMap stack:
        93: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
        94: astore 7 /* ioException */
        end local 12 // java.io.IOException e
        95: .line 2161
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top java.lang.Throwable
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        96: .line 2162
            goto 101
      StackMap locals:
      StackMap stack: java.io.IOException
        97: astore 12 /* e */
        start local 12 // java.io.IOException e
        98: .line 2163
            aload 7 /* ioException */
            ifnull 99
            aload 7 /* ioException */
            goto 100
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top java.lang.Throwable top java.io.IOException
      StackMap stack:
        99: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
       100: astore 7 /* ioException */
        end local 12 // java.io.IOException e
       101: .line 2166
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top java.lang.Throwable
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.close:()V
       102: .line 2167
            goto 107
      StackMap locals:
      StackMap stack: java.io.IOException
       103: astore 12 /* e */
        start local 12 // java.io.IOException e
       104: .line 2168
            aload 7 /* ioException */
            ifnull 105
            aload 7 /* ioException */
            goto 106
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top java.lang.Throwable top java.io.IOException
      StackMap stack:
       105: aload 12 /* e */
      StackMap locals:
      StackMap stack: java.io.IOException
       106: astore 7 /* ioException */
        end local 12 // java.io.IOException e
       107: .line 2170
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException top top java.lang.Throwable
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.destroy:()V
       108: .line 2172
      StackMap locals:
      StackMap stack:
            aload 10
            athrow
       109: .line 2174
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.OutputStream java.io.OutputStream java.io.InputStream java.util.concurrent.ExecutorService java.lang.Process java.io.IOException
      StackMap stack:
            aload 7 /* ioException */
            athrow
        end local 7 // java.io.IOException ioException
        end local 6 // java.lang.Process process
        end local 5 // java.util.concurrent.ExecutorService executor
        end local 4 // java.io.InputStream inRedirect
        end local 3 // java.io.OutputStream errRedirect
        end local 2 // java.io.OutputStream outRedirect
        end local 1 // java.lang.ProcessBuilder processBuilder
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0  110     0            this  Lorg/eclipse/jgit/util/FS;
            0  110     1  processBuilder  Ljava/lang/ProcessBuilder;
            0  110     2     outRedirect  Ljava/io/OutputStream;
            0  110     3     errRedirect  Ljava/io/OutputStream;
            0  110     4      inRedirect  Ljava/io/InputStream;
            1  110     5        executor  Ljava/util/concurrent/ExecutorService;
            2  110     6         process  Ljava/lang/Process;
            3  110     7     ioException  Ljava/io/IOException;
           11   51     8    outputStream  Ljava/io/OutputStream;
           52   53     8               e  Ljava/io/IOException;
           34   37    12               e  Ljava/io/IOException;
           64   67    12               e  Ljava/io/IOException;
           92   95    12               e  Ljava/io/IOException;
           40   43    12               e  Ljava/io/IOException;
           70   73    12               e  Ljava/io/IOException;
           98  101    12               e  Ljava/io/IOException;
           46   49    12               e  Ljava/io/IOException;
           76   79    12               e  Ljava/io/IOException;
          104  107    12               e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          11    14      14  any
          15    16      17  Class java.io.IOException
          19    20      21  Class java.io.IOException
          25    26      27  Class java.lang.InterruptedException
          31    32      33  Class java.io.IOException
          37    38      39  Class java.io.IOException
          43    44      45  Class java.io.IOException
           3    23      51  Class java.io.IOException
          55    56      57  Class java.lang.InterruptedException
          61    62      63  Class java.io.IOException
          67    68      69  Class java.io.IOException
          73    74      75  Class java.io.IOException
           3    23      80  any
          51    53      80  any
          83    84      85  Class java.lang.InterruptedException
          89    90      91  Class java.io.IOException
          95    96      97  Class java.io.IOException
         101   102     103  Class java.io.IOException
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException
    MethodParameters:
                Name  Flags
      processBuilder  
      outRedirect     
      errRedirect     
      inRedirect      

  private static boolean shutdownAndAwaitTermination(java.util.concurrent.ExecutorService);
    descriptor: (Ljava/util/concurrent/ExecutorService;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.util.concurrent.ExecutorService pool
         0: .line 2191
            iconst_1
            istore 1 /* hasShutdown */
        start local 1 // boolean hasShutdown
         1: .line 2192
            aload 0 /* pool */
            invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
         2: .line 2195
            aload 0 /* pool */
            ldc 60
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            ifne 11
         3: .line 2196
            aload 0 /* pool */
            invokeinterface java.util.concurrent.ExecutorService.shutdownNow:()Ljava/util/List;
            pop
         4: .line 2198
            aload 0 /* pool */
            ldc 60
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            ifne 11
         5: .line 2199
            iconst_0
            istore 1 /* hasShutdown */
         6: .line 2201
            goto 11
      StackMap locals: java.util.concurrent.ExecutorService int
      StackMap stack: java.lang.InterruptedException
         7: pop
         8: .line 2203
            aload 0 /* pool */
            invokeinterface java.util.concurrent.ExecutorService.shutdownNow:()Ljava/util/List;
            pop
         9: .line 2205
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        10: .line 2206
            iconst_0
            istore 1 /* hasShutdown */
        11: .line 2208
      StackMap locals:
      StackMap stack:
            iload 1 /* hasShutdown */
            ireturn
        end local 1 // boolean hasShutdown
        end local 0 // java.util.concurrent.ExecutorService pool
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         pool  Ljava/util/concurrent/ExecutorService;
            1   12     1  hasShutdown  Z
      Exception table:
        from    to  target  type
           2     6       7  Class java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      pool  

  public abstract java.lang.ProcessBuilder runInShell(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/ProcessBuilder;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      cmd   
      args  

  public org.eclipse.jgit.util.FS$ExecutionResult execute(java.lang.ProcessBuilder, java.io.InputStream);
    descriptor: (Ljava/lang/ProcessBuilder;Ljava/io/InputStream;)Lorg/eclipse/jgit/util/FS$ExecutionResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.lang.ProcessBuilder pb
        start local 2 // java.io.InputStream in
         0: .line 2239
            aconst_null
            astore 3
            aconst_null
            astore 4
         1: new org.eclipse.jgit.util.TemporaryBuffer$LocalFile
            dup
            aconst_null
            invokespecial org.eclipse.jgit.util.TemporaryBuffer$LocalFile.<init>:(Ljava/io/File;)V
            astore 5 /* stdout */
        start local 5 // org.eclipse.jgit.util.TemporaryBuffer stdout
         2: .line 2240
            new org.eclipse.jgit.util.TemporaryBuffer$Heap
            dup
            sipush 1024
         3: .line 2241
            ldc 1048576
         4: .line 2240
            invokespecial org.eclipse.jgit.util.TemporaryBuffer$Heap.<init>:(II)V
            astore 6 /* stderr */
        start local 6 // org.eclipse.jgit.util.TemporaryBuffer stderr
         5: .line 2242
            aload 0 /* this */
            aload 1 /* pb */
            aload 5 /* stdout */
            aload 6 /* stderr */
            aload 2 /* in */
            invokevirtual org.eclipse.jgit.util.FS.runProcess:(Ljava/lang/ProcessBuilder;Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;)I
            istore 7 /* rc */
        start local 7 // int rc
         6: .line 2243
            new org.eclipse.jgit.util.FS$ExecutionResult
            dup
            aload 5 /* stdout */
            aload 6 /* stderr */
            iload 7 /* rc */
            invokespecial org.eclipse.jgit.util.FS$ExecutionResult.<init>:(Lorg/eclipse/jgit/util/TemporaryBuffer;Lorg/eclipse/jgit/util/TemporaryBuffer;I)V
         7: .line 2244
            aload 6 /* stderr */
            ifnull 8
            aload 6 /* stderr */
            invokevirtual org.eclipse.jgit.util.TemporaryBuffer.close:()V
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.InputStream java.lang.Throwable java.lang.Throwable org.eclipse.jgit.util.TemporaryBuffer org.eclipse.jgit.util.TemporaryBuffer int
      StackMap stack: org.eclipse.jgit.util.FS$ExecutionResult
         8: aload 5 /* stdout */
            ifnull 9
            aload 5 /* stdout */
            invokevirtual org.eclipse.jgit.util.TemporaryBuffer.close:()V
         9: .line 2243
      StackMap locals:
      StackMap stack: org.eclipse.jgit.util.FS$ExecutionResult
            areturn
        end local 7 // int rc
      StackMap locals: org.eclipse.jgit.util.FS java.lang.ProcessBuilder java.io.InputStream java.lang.Throwable java.lang.Throwable org.eclipse.jgit.util.TemporaryBuffer org.eclipse.jgit.util.TemporaryBuffer
      StackMap stack: java.lang.Throwable
        10: astore 3
        11: .line 2244
            aload 6 /* stderr */
            ifnull 12
            aload 6 /* stderr */
            invokevirtual org.eclipse.jgit.util.TemporaryBuffer.close:()V
        end local 6 // org.eclipse.jgit.util.TemporaryBuffer stderr
      StackMap locals:
      StackMap stack:
        12: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 4
            aload 3
            ifnonnull 14
            aload 4
            astore 3
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 3
            aload 4
            if_acmpeq 15
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 5 /* stdout */
            ifnull 16
            aload 5 /* stdout */
            invokevirtual org.eclipse.jgit.util.TemporaryBuffer.close:()V
        end local 5 // org.eclipse.jgit.util.TemporaryBuffer stdout
      StackMap locals:
      StackMap stack:
        16: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 4
            aload 3
            ifnonnull 18
            aload 4
            astore 3
            goto 19
      StackMap locals:
      StackMap stack:
        18: aload 3
            aload 4
            if_acmpeq 19
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        19: aload 3
            athrow
        end local 2 // java.io.InputStream in
        end local 1 // java.lang.ProcessBuilder pb
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   20     0    this  Lorg/eclipse/jgit/util/FS;
            0   20     1      pb  Ljava/lang/ProcessBuilder;
            0   20     2      in  Ljava/io/InputStream;
            2   16     5  stdout  Lorg/eclipse/jgit/util/TemporaryBuffer;
            5   12     6  stderr  Lorg/eclipse/jgit/util/TemporaryBuffer;
            6   10     7      rc  I
      Exception table:
        from    to  target  type
           5     7      10  any
           2     8      13  any
          10    13      13  any
           1     9      17  any
          10    17      17  any
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      pb    
      in    

  public org.eclipse.jgit.util.FS$Attributes getAttributes(java.io.File);
    descriptor: (Ljava/io/File;)Lorg/eclipse/jgit/util/FS$Attributes;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=14, locals=10, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File path
         0: .line 2402
            aload 0 /* this */
            aload 1 /* path */
            invokevirtual org.eclipse.jgit.util.FS.isDirectory:(Ljava/io/File;)Z
            istore 2 /* isDirectory */
        start local 2 // boolean isDirectory
         1: .line 2403
            iload 2 /* isDirectory */
            ifne 2
            aload 1 /* path */
            invokevirtual java.io.File.isFile:()Z
            ifeq 2
            iconst_1
            goto 3
      StackMap locals: int
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 3 /* isFile */
        start local 3 // boolean isFile
         4: .line 2404
            getstatic org.eclipse.jgit.util.FS.$assertionsDisabled:Z
            ifne 5
            aload 1 /* path */
            invokevirtual java.io.File.exists:()Z
            iload 2 /* isDirectory */
            if_icmpeq 5
            iload 3 /* isFile */
            ifne 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 2405
      StackMap locals: int
      StackMap stack:
            iload 2 /* isDirectory */
            ifne 6
            iload 3 /* isFile */
            ifne 6
            iconst_0
            goto 7
      StackMap locals:
      StackMap stack:
         6: iconst_1
      StackMap locals:
      StackMap stack: int
         7: istore 4 /* exists */
        start local 4 // boolean exists
         8: .line 2406
            iload 4 /* exists */
            ifeq 9
            iload 2 /* isDirectory */
            ifne 9
            aload 0 /* this */
            aload 1 /* path */
            invokevirtual org.eclipse.jgit.util.FS.canExecute:(Ljava/io/File;)Z
            ifeq 9
            iconst_1
            goto 10
      StackMap locals: int
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 5 /* canExecute */
        start local 5 // boolean canExecute
        11: .line 2407
            iconst_0
            istore 6 /* isSymlink */
        start local 6 // boolean isSymlink
        12: .line 2408
            iload 4 /* exists */
            ifeq 13
            aload 0 /* this */
            aload 1 /* path */
            invokevirtual org.eclipse.jgit.util.FS.lastModifiedInstant:(Ljava/io/File;)Ljava/time/Instant;
            goto 14
      StackMap locals: int int
      StackMap stack:
        13: getstatic java.time.Instant.EPOCH:Ljava/time/Instant;
      StackMap locals:
      StackMap stack: java.time.Instant
        14: astore 7 /* lastModified */
        start local 7 // java.time.Instant lastModified
        15: .line 2409
            lconst_0
            lstore 8 /* createTime */
        start local 8 // long createTime
        16: .line 2410
            new org.eclipse.jgit.util.FS$Attributes
            dup
            aload 0 /* this */
            aload 1 /* path */
            iload 4 /* exists */
            iload 2 /* isDirectory */
            iload 5 /* canExecute */
        17: .line 2411
            iload 6 /* isSymlink */
            iload 3 /* isFile */
            lload 8 /* createTime */
            aload 7 /* lastModified */
            ldc -1
        18: .line 2410
            invokespecial org.eclipse.jgit.util.FS$Attributes.<init>:(Lorg/eclipse/jgit/util/FS;Ljava/io/File;ZZZZZJLjava/time/Instant;J)V
            areturn
        end local 8 // long createTime
        end local 7 // java.time.Instant lastModified
        end local 6 // boolean isSymlink
        end local 5 // boolean canExecute
        end local 4 // boolean exists
        end local 3 // boolean isFile
        end local 2 // boolean isDirectory
        end local 1 // java.io.File path
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   19     0          this  Lorg/eclipse/jgit/util/FS;
            0   19     1          path  Ljava/io/File;
            1   19     2   isDirectory  Z
            4   19     3        isFile  Z
            8   19     4        exists  Z
           11   19     5    canExecute  Z
           12   19     6     isSymlink  Z
           15   19     7  lastModified  Ljava/time/Instant;
           16   19     8    createTime  J
    MethodParameters:
      Name  Flags
      path  

  public java.io.File normalize(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.io.File file
         0: .line 2423
            aload 1 /* file */
            areturn
        end local 1 // java.io.File file
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  file  Ljava/io/File;
    MethodParameters:
      Name  Flags
      file  

  public java.lang.String normalize(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jgit.util.FS this
        start local 1 // java.lang.String name
         0: .line 2435
            aload 1 /* name */
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.eclipse.jgit.util.FS this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jgit/util/FS;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  static org.slf4j.Logger access$0();
    descriptor: ()Lorg/slf4j/Logger;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 89
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String lambda$0();
    descriptor: ()Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1256
            ldc "user.home"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "FS.java"
NestMembers:
  org.eclipse.jgit.util.FS$Attributes  org.eclipse.jgit.util.FS$ExecutionResult  org.eclipse.jgit.util.FS$FSFactory  org.eclipse.jgit.util.FS$FileStoreAttributes  org.eclipse.jgit.util.FS$GobblerThread  org.eclipse.jgit.util.FS$Holder  org.eclipse.jgit.util.FS$LockToken  org.eclipse.jgit.util.FS$StreamGobbler
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public FileEntry = org.eclipse.jgit.treewalk.FileTreeIterator$FileEntry of org.eclipse.jgit.treewalk.FileTreeIterator
  public abstract FileModeStrategy = org.eclipse.jgit.treewalk.FileTreeIterator$FileModeStrategy of org.eclipse.jgit.treewalk.FileTreeIterator
  public abstract Entry = org.eclipse.jgit.treewalk.WorkingTreeIterator$Entry of org.eclipse.jgit.treewalk.WorkingTreeIterator
  public Attributes = org.eclipse.jgit.util.FS$Attributes of org.eclipse.jgit.util.FS
  public ExecutionResult = org.eclipse.jgit.util.FS$ExecutionResult of org.eclipse.jgit.util.FS
  public FSFactory = org.eclipse.jgit.util.FS$FSFactory of org.eclipse.jgit.util.FS
  public final FileStoreAttributes = org.eclipse.jgit.util.FS$FileStoreAttributes of org.eclipse.jgit.util.FS
  private GobblerThread = org.eclipse.jgit.util.FS$GobblerThread of org.eclipse.jgit.util.FS
  private Holder = org.eclipse.jgit.util.FS$Holder of org.eclipse.jgit.util.FS
  public LockToken = org.eclipse.jgit.util.FS$LockToken of org.eclipse.jgit.util.FS
  private StreamGobbler = org.eclipse.jgit.util.FS$StreamGobbler of org.eclipse.jgit.util.FS
  public final Status = org.eclipse.jgit.util.ProcessResult$Status of org.eclipse.jgit.util.ProcessResult
  public Heap = org.eclipse.jgit.util.TemporaryBuffer$Heap of org.eclipse.jgit.util.TemporaryBuffer
  public LocalFile = org.eclipse.jgit.util.TemporaryBuffer$LocalFile of org.eclipse.jgit.util.TemporaryBuffer