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 115
            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 116
            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 124
            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 695
            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 697
            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 705
            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 718
            iload 0 /* asynch */
            invokestatic org.eclipse.jgit.util.FS$FileStoreAttributes.setBackground:(Z)V
         1: .line 719
            return
        end local 0 // boolean asynch
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  asynch  Z
    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 742
            getstatic org.eclipse.jgit.util.FS.factory:Lorg/eclipse/jgit/util/FS$FSFactory;
            ifnonnull 2
         1: .line 743
            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 745
      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 760
            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 770
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 772
            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 780
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 781
            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 782
            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 783
            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 812
            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 823
            aload 0 /* this */
            getfield org.eclipse.jgit.util.FS.supportSymlinks:Ljava/lang/Boolean;
            ifnonnull 2
         1: .line 824
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.detectSymlinkSupport:()V
         2: .line 826
      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=5, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 830
            aconst_null
            astore 1 /* tempFile */
        start local 1 // java.io.File tempFile
         1: .line 832
            ldc "tempsymlinktarget"
            ldc ""
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 1 /* tempFile */
         2: .line 833
            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 834
            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 835
            aload 0 /* this */
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            putfield org.eclipse.jgit.util.FS.supportSymlinks:Ljava/lang/Boolean;
         5: .line 836
            aload 2 /* linkName */
            invokevirtual java.io.File.delete:()Z
            pop
        end local 2 // java.io.File linkName
         6: .line 837
            goto 21
         7: .line 838
      StackMap locals: org.eclipse.jgit.util.FS java.io.File
      StackMap stack: java.lang.Throwable
            pop
         8: .line 839
            aload 0 /* this */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            putfield org.eclipse.jgit.util.FS.supportSymlinks:Ljava/lang/Boolean;
         9: .line 841
            aload 1 /* tempFile */
            ifnull 26
        10: .line 843
            aload 1 /* tempFile */
            invokestatic org.eclipse.jgit.util.FileUtils.delete:(Ljava/io/File;)V
        11: .line 844
            goto 26
      StackMap locals:
      StackMap stack: java.io.IOException
        12: astore 4 /* e */
        start local 4 // java.io.IOException e
        13: .line 845
            new java.lang.RuntimeException
            dup
            aload 4 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.io.IOException e
        14: .line 840
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        15: .line 841
            aload 1 /* tempFile */
            ifnull 20
        16: .line 843
            aload 1 /* tempFile */
            invokestatic org.eclipse.jgit.util.FileUtils.delete:(Ljava/io/File;)V
        17: .line 844
            goto 20
      StackMap locals: org.eclipse.jgit.util.FS java.io.File top java.lang.Throwable
      StackMap stack: java.io.IOException
        18: astore 4 /* e */
        start local 4 // java.io.IOException e
        19: .line 845
            new java.lang.RuntimeException
            dup
            aload 4 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.io.IOException e
        20: .line 848
      StackMap locals:
      StackMap stack:
            aload 3
            athrow
        21: .line 841
      StackMap locals: org.eclipse.jgit.util.FS java.io.File
      StackMap stack:
            aload 1 /* tempFile */
            ifnull 26
        22: .line 843
            aload 1 /* tempFile */
            invokestatic org.eclipse.jgit.util.FileUtils.delete:(Ljava/io/File;)V
        23: .line 844
            goto 26
      StackMap locals:
      StackMap stack: java.io.IOException
        24: astore 4 /* e */
        start local 4 // java.io.IOException e
        25: .line 845
            new java.lang.RuntimeException
            dup
            aload 4 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.io.IOException e
        26: .line 849
      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;
           13   14     4         e  Ljava/io/IOException;
           19   20     4         e  Ljava/io/IOException;
           25   26     4         e  Ljava/io/IOException;
      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 903
            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 917
            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 931
            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 948
            aload 1 /* f */
            lload 2 /* time */
            invokestatic org.eclipse.jgit.util.FileUtils.setLastModified:(Ljava/io/File;J)V
         1: .line 949
            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 963
            aload 1 /* p */
            aload 2 /* time */
            invokestatic org.eclipse.jgit.util.FileUtils.setLastModified:(Ljava/nio/file/Path;Ljava/time/Instant;)V
         1: .line 964
            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 977
            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 990
            aload 1 /* f */
            invokestatic org.eclipse.jgit.util.FileUtils.delete:(Ljava/io/File;)V
         1: .line 991
            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 1012
            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 1013
            aload 3 /* abspn */
            invokevirtual java.io.File.isAbsolute:()Z
            ifeq 3
         2: .line 1014
            aload 3 /* abspn */
            areturn
         3: .line 1015
      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 1030
            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 1031
            aload 1 /* p */
            ifnonnull 4
         2: .line 1032
            new org.eclipse.jgit.util.FS$Holder
            dup
            aload 0 /* this */
            invokevirtual org.eclipse.jgit.util.FS.userHomeImpl:()Ljava/io/File;
            invokespecial org.eclipse.jgit.util.FS$Holder.<init>:(Ljava/lang/Object;)V
            astore 1 /* p */
         3: .line 1033
            aload 0 /* this */
            aload 1 /* p */
            putfield org.eclipse.jgit.util.FS.userHome:Lorg/eclipse/jgit/util/FS$Holder;
         4: .line 1035
      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;>;

  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 1047
            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 1048
            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 1068
            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=3, locals=2, args_size=1
        start local 0 // org.eclipse.jgit.util.FS this
         0: .line 1078
            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 1077
            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 1080
            aload 1 /* home */
            ifnull 3
            aload 1 /* home */
            invokevirtual java.lang.String.length:()I
            ifne 4
         3: .line 1081
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            areturn
         4: .line 1082
      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 1097
            aload 0 /* path */
            ifnonnull 2
         1: .line 1098
            aconst_null
            areturn
         2: .line 1100
      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 1101
            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 1102
            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 1104
            aload 10 /* file */
            invokevirtual java.io.File.isFile:()Z
            ifeq 15
         8: .line 1105
            aload 10 /* file */
            invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
         9: areturn
        10: .line 1107
      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 1108
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
        12: .line 1109
            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 1110
            aload 10 /* file */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            aastore
        14: .line 1108
            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 1101
      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 1100
            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 1114
            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 1134
            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 1159
            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 1161
            iload 4 /* debug */
            ifeq 5
         2: .line 1162
            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 1163
            aload 0 /* dir */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 1162
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
         5: .line 1165
      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 1166
            aload 5 /* pb */
            aload 0 /* dir */
            invokevirtual java.lang.ProcessBuilder.directory:(Ljava/io/File;)Ljava/lang/ProcessBuilder;
            pop
         7: .line 1167
            aload 3 /* env */
            ifnull 9
         8: .line 1168
            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 1172
      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 1173
            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 1175
            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 1177
      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 1178
            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 1179
            aload 7 /* gobbler */
            invokevirtual org.eclipse.jgit.util.FS$GobblerThread.start:()V
        16: .line 1180
            aconst_null
            astore 8 /* r */
        start local 8 // java.lang.String r
        17: .line 1181
            aconst_null
            astore 9
            aconst_null
            astore 10
        18: new java.io.BufferedReader
            dup
        19: .line 1182
            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 1181
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            astore 11 /* lineRead */
        start local 11 // java.io.BufferedReader lineRead
        21: .line 1183
            aload 11 /* lineRead */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 8 /* r */
        22: .line 1184
            iload 4 /* debug */
            ifeq 29
        23: .line 1185
            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 1186
            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 1188
            goto 27
        start local 12 // java.lang.String l
        26: .line 1189
      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 1188
      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 1192
      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 1196
      StackMap locals:
      StackMap stack:
            aload 6 /* p */
            invokevirtual java.lang.Process.waitFor:()I
            istore 9 /* rc */
        start local 9 // int rc
        36: .line 1197
            aload 7 /* gobbler */
            invokevirtual org.eclipse.jgit.util.FS$GobblerThread.join:()V
        37: .line 1198
            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 1199
            aload 8 /* r */
        39: areturn
        40: .line 1201
      StackMap locals: int
      StackMap stack:
            iload 4 /* debug */
            ifeq 42
        41: .line 1202
            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 1204
      StackMap locals:
      StackMap stack:
            new org.eclipse.jgit.errors.CommandFailedException
            dup
            iload 9 /* rc */
        43: .line 1205
            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 1206
            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 1204
            invokespecial org.eclipse.jgit.errors.CommandFailedException.<init>:(ILjava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 9 // int rc
        46: .line 1208
      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 1194
            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 1212
      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 1213
            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 1214
      StackMap locals:
      StackMap stack: java.security.AccessControlException
            astore 5 /* e */
        start local 5 // java.security.AccessControlException e
        52: .line 1215
            getstatic org.eclipse.jgit.util.FS.LOG:Lorg/slf4j/Logger;
        53: .line 1216
            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 1217
            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 1215
            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 1218
      StackMap locals:
      StackMap stack: java.lang.SecurityException
            pop
        58: .line 1219
            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 1220
            aload 1 /* command */
            aastore
            dup
            iconst_1
            aload 0 /* dir */
            aastore
        60: .line 1219
            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 1222
      StackMap locals:
      StackMap stack:
            iload 4 /* debug */
            ifeq 63
        62: .line 1223
            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 1225
      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 1316
            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 1317
            aload 1 /* gitExe */
            ifnonnull 3
         2: .line 1318
            aconst_null
            areturn
         3: .line 1324
      StackMap locals: java.io.File
      StackMap stack:
            aload 1 /* gitExe */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
         4: .line 1325
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "git"
            aastore
            dup
            iconst_1
            ldc "--version"
            aastore
         5: .line 1326
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
         6: .line 1324
            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 1327
            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 1328
            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 1329
            aconst_null
            areturn
        end local 3 // org.eclipse.jgit.errors.CommandFailedException e
        start local 2 // java.lang.String v
        11: .line 1331
      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 1332
            aload 2 /* v */
            ifnull 14
            aload 2 /* v */
            ldc "jgit"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 14
        13: .line 1333
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        14: .line 1338
      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 1339
            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 1343
            aload 1 /* gitExe */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
        17: .line 1344
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "git"
            aastore
            dup
            iconst_1
            ldc "config"
            aastore
            dup
            iconst_2
            ldc "--system"
            aastore
            dup
            iconst_3
            ldc "--edit"
            aastore
        18: .line 1345
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
            aload 3 /* env */
        19: .line 1343
            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
        20: .line 1346
            goto 24
        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
        21: astore 5 /* e */
        start local 5 // org.eclipse.jgit.errors.CommandFailedException e
        22: .line 1347
            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
        23: .line 1348
            aconst_null
            areturn
        end local 5 // org.eclipse.jgit.errors.CommandFailedException e
        start local 4 // java.lang.String w
        24: .line 1350
      StackMap locals: java.lang.String
      StackMap stack:
            aload 4 /* w */
            invokestatic org.eclipse.jgit.util.StringUtils.isEmptyOrNull:(Ljava/lang/String;)Z
            ifeq 26
        25: .line 1351
            aconst_null
            areturn
        26: .line 1354
      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   27     0    this  Lorg/eclipse/jgit/util/FS;
            1   27     1  gitExe  Ljava/io/File;
            7    8     2       v  Ljava/lang/String;
           11   27     2       v  Ljava/lang/String;
            9   11     3       e  Lorg/eclipse/jgit/errors/CommandFailedException;
           15   27     3     env  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           20   21     4       w  Ljava/lang/String;
           24   27     4       w  Ljava/lang/String;
           22   24     5       e  Lorg/eclipse/jgit/errors/CommandFailedException;
      Exception table:
        from    to  target  type
           3     7       8  Class org.eclipse.jgit.errors.CommandFailedException
          16    20      21  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 1365
            aload 0 /* this */
            getfield org.eclipse.jgit.util.FS.gitSystemConfig:Lorg/eclipse/jgit/util/FS$Holder;
            ifnonnull 2
         1: .line 1366
            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 1368
      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 1380
            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 1381
            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 1394
            aload 0 /* grandchild */
            ifnull 4
         1: .line 1395
            aload 0 /* grandchild */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            astore 1 /* parent */
        start local 1 // java.io.File parent
         2: .line 1396
            aload 1 /* parent */
            ifnull 4
         3: .line 1397
            aload 1 /* parent */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            areturn
        end local 1 // java.io.File parent
         4: .line 1399
      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 1412
            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 1425
            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 1438
            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 1451
            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 1464
            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 1479
            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 1493
            aload 1 /* path */
            iload 2 /* hidden */
            invokestatic org.eclipse.jgit.util.FileUtils.setHidden:(Ljava/io/File;Z)V
         1: .line 1494
            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 1507
            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 1508
            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 1525
            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 1593
            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 1611
            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 1626
            aload 1 /* directory */
            invokevirtual java.io.File.listFiles:()[Ljava/io/File;
            astore 3 /* all */
        start local 3 // java.io.File[] all
         1: .line 1627
            aload 3 /* all */
            ifnonnull 3
         2: .line 1628
            getstatic org.eclipse.jgit.util.FS.NO_ENTRIES:[Lorg/eclipse/jgit/treewalk/WorkingTreeIterator$Entry;
            areturn
         3: .line 1630
      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 1631
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: goto 8
         6: .line 1632
      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 1631
            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 1634
            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 1662
            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 1663
            aconst_null
         2: .line 1662
            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 1698
            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=14, 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 1734
            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 1735
            aload 7 /* hookFile */
            ifnonnull 3
         2: .line 1736
            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 1738
      StackMap locals: java.io.File
      StackMap stack:
            aload 7 /* hookFile */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            astore 8 /* hookPath */
        start local 8 // java.lang.String hookPath
         4: .line 1740
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.isBare:()Z
            ifeq 7
         5: .line 1741
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            astore 9 /* runDirectory */
        start local 9 // java.io.File runDirectory
         6: goto 8
        end local 9 // java.io.File runDirectory
         7: .line 1743
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getWorkTree:()Ljava/io/File;
            astore 9 /* runDirectory */
        start local 9 // java.io.File runDirectory
         8: .line 1744
      StackMap locals: java.io.File
      StackMap stack:
            aload 0 /* this */
            aload 9 /* runDirectory */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
         9: .line 1745
            aload 8 /* hookPath */
        10: .line 1744
            invokevirtual org.eclipse.jgit.util.FS.relativize:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 10 /* cmd */
        start local 10 // java.lang.String cmd
        11: .line 1746
            aload 0 /* this */
            aload 10 /* cmd */
            aload 3 /* args */
            invokevirtual org.eclipse.jgit.util.FS.runInShell:(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/ProcessBuilder;
            astore 11 /* hookProcess */
        start local 11 // java.lang.ProcessBuilder hookProcess
        12: .line 1747
            aload 11 /* hookProcess */
            aload 9 /* runDirectory */
            invokevirtual java.lang.ProcessBuilder.directory:(Ljava/io/File;)Ljava/lang/ProcessBuilder;
            pop
        13: .line 1748
            aload 11 /* hookProcess */
            invokevirtual java.lang.ProcessBuilder.environment:()Ljava/util/Map;
            astore 12 /* environment */
        start local 12 // java.util.Map environment
        14: .line 1749
            aload 12 /* environment */
            ldc "GIT_DIR"
        15: .line 1750
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
        16: .line 1749
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 1751
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.isBare:()Z
            ifne 21
        18: .line 1752
            aload 12 /* environment */
            ldc "GIT_WORK_TREE"
        19: .line 1753
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getWorkTree:()Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
        20: .line 1752
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 1756
      StackMap locals: java.lang.String java.lang.ProcessBuilder java.util.Map
      StackMap stack:
            new org.eclipse.jgit.util.ProcessResult
            dup
            aload 0 /* this */
            aload 11 /* hookProcess */
            aload 4 /* outRedirect */
        22: .line 1757
            aload 5 /* errRedirect */
            aload 6 /* stdinArgs */
        23: .line 1756
            invokevirtual org.eclipse.jgit.util.FS.runProcess:(Ljava/lang/ProcessBuilder;Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/lang/String;)I
        24: .line 1757
            getstatic org.eclipse.jgit.util.ProcessResult$Status.OK:Lorg/eclipse/jgit/util/ProcessResult$Status;
        25: .line 1756
            invokespecial org.eclipse.jgit.util.ProcessResult.<init>:(ILorg/eclipse/jgit/util/ProcessResult$Status;)V
        26: areturn
        27: .line 1758
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 13 /* e */
        start local 13 // java.io.IOException e
        28: .line 1759
            new org.eclipse.jgit.api.errors.JGitInternalException
            dup
        29: .line 1760
            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
        30: .line 1761
            aload 2 /* hookName */
            aastore
        31: .line 1759
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        32: .line 1761
            aload 13 /* e */
        33: .line 1759
            invokespecial org.eclipse.jgit.api.errors.JGitInternalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 13 // java.io.IOException e
        34: .line 1762
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            astore 13 /* e */
        start local 13 // java.lang.InterruptedException e
        35: .line 1763
            new org.eclipse.jgit.api.errors.JGitInternalException
            dup
        36: .line 1764
            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
        37: .line 1765
            aload 2 /* hookName */
            aastore
        38: .line 1763
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        39: .line 1765
            aload 13 /* e */
        40: .line 1763
            invokespecial org.eclipse.jgit.api.errors.JGitInternalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 13 // java.lang.InterruptedException e
        end local 12 // java.util.Map environment
        end local 11 // java.lang.ProcessBuilder hookProcess
        end local 10 // java.lang.String cmd
        end local 9 // java.io.File runDirectory
        end local 8 // java.lang.String hookPath
        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   41     0          this  Lorg/eclipse/jgit/util/FS;
            0   41     1    repository  Lorg/eclipse/jgit/lib/Repository;
            0   41     2      hookName  Ljava/lang/String;
            0   41     3          args  [Ljava/lang/String;
            0   41     4   outRedirect  Ljava/io/PrintStream;
            0   41     5   errRedirect  Ljava/io/PrintStream;
            0   41     6     stdinArgs  Ljava/lang/String;
            1   41     7      hookFile  Ljava/io/File;
            4   41     8      hookPath  Ljava/lang/String;
            6    7     9  runDirectory  Ljava/io/File;
            8   41     9  runDirectory  Ljava/io/File;
           11   41    10           cmd  Ljava/lang/String;
           12   41    11   hookProcess  Ljava/lang/ProcessBuilder;
           14   41    12   environment  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           28   34    13             e  Ljava/io/IOException;
           35   41    13             e  Ljava/lang/InterruptedException;
      Exception table:
        from    to  target  type
          21    26      27  Class java.io.IOException
          21    26      34  Class java.lang.InterruptedException
    Exceptions:
      throws org.eclipse.jgit.api.errors.JGitInternalException
    MethodParameters:
             Name  Flags
      repository   
      hookName     final
      args         
      outRedirect  
      errRedirect  
      stdinArgs    

  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=5, 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 1782
            aload 1 /* repository */
            invokevirtual org.eclipse.jgit.lib.Repository.getDirectory:()Ljava/io/File;
            astore 3 /* gitDir */
        start local 3 // java.io.File gitDir
         1: .line 1783
            aload 3 /* gitDir */
            ifnonnull 3
         2: .line 1784
            aconst_null
            areturn
         3: .line 1785
      StackMap locals: java.io.File
      StackMap stack:
            new java.io.File
            dup
            new java.io.File
            dup
            aload 3 /* gitDir */
         4: .line 1786
            ldc "hooks"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            aload 2 /* hookName */
         5: .line 1785
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 4 /* hookFile */
        start local 4 // java.io.File hookFile
         6: .line 1787
            aload 4 /* hookFile */
            invokevirtual java.io.File.isFile:()Z
            ifeq 7
            aload 4 /* hookFile */
            goto 8
      StackMap locals: java.io.File
      StackMap stack:
         7: aconst_null
      StackMap locals:
      StackMap stack: java.io.File
         8: areturn
        end local 4 // java.io.File hookFile
        end local 3 // java.io.File gitDir
        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    9     0        this  Lorg/eclipse/jgit/util/FS;
            0    9     1  repository  Lorg/eclipse/jgit/lib/Repository;
            0    9     2    hookName  Ljava/lang/String;
            1    9     3      gitDir  Ljava/io/File;
            6    9     4    hookFile  Ljava/io/File;
    MethodParameters:
            Name  Flags
      repository  
      hookName    

  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 1818
            aload 4 /* stdinArgs */
            ifnonnull 1
            aconst_null
            goto 3
      StackMap locals:
      StackMap stack:
         1: new java.io.ByteArrayInputStream
            dup
         2: .line 1819
            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 1818
      StackMap locals:
      StackMap stack: java.io.ByteArrayInputStream
            astore 5 /* in */
        start local 5 // java.io.InputStream in
         4: .line 1820
            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 1855
            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 1856
            aconst_null
            astore 6 /* process */
        start local 6 // java.lang.Process process
         2: .line 1859
            aconst_null
            astore 7 /* ioException */
        start local 7 // java.io.IOException ioException
         3: .line 1861
            aload 1 /* processBuilder */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 6 /* process */
         4: .line 1862
            aload 5 /* executor */
         5: .line 1863
            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 1862
            invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
         7: .line 1864
            aload 5 /* executor */
         8: .line 1865
            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 1864
            invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
        10: .line 1867
            aload 6 /* process */
            invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
            astore 8 /* outputStream */
        start local 8 // java.io.OutputStream outputStream
        11: .line 1869
            aload 4 /* inRedirect */
            ifnull 19
        12: .line 1870
            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 1872
            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 1874
            aload 8 /* outputStream */
            invokevirtual java.io.OutputStream.close:()V
        16: .line 1875
            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 1883
      StackMap locals:
      StackMap stack:
            aload 9
            athrow
        19: .line 1874
      StackMap locals:
      StackMap stack:
            aload 8 /* outputStream */
            invokevirtual java.io.OutputStream.close:()V
        20: .line 1875
            goto 22
      StackMap locals:
      StackMap stack: java.io.IOException
        21: pop
        22: .line 1884
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            istore 11
        23: .line 1888
            aload 5 /* executor */
            invokestatic org.eclipse.jgit.util.FS.shutdownAndAwaitTermination:(Ljava/util/concurrent/ExecutorService;)Z
            pop
        24: .line 1889
            aload 6 /* process */
            ifnull 50
        25: .line 1891
            aload 6 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            pop
        26: .line 1892
            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 1897
            invokestatic java.lang.Thread.interrupted:()Z
            pop
        29: .line 1902
      StackMap locals:
      StackMap stack:
            aload 4 /* inRedirect */
            ifnull 31
        30: .line 1903
            aload 4 /* inRedirect */
            invokevirtual java.io.InputStream.close:()V
        31: .line 1906
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        32: .line 1907
            goto 37
      StackMap locals:
      StackMap stack: java.io.IOException
        33: astore 12 /* e */
        start local 12 // java.io.IOException e
        34: .line 1908
            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 1911
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        38: .line 1912
            goto 43
      StackMap locals:
      StackMap stack: java.io.IOException
        39: astore 12 /* e */
        start local 12 // java.io.IOException e
        40: .line 1913
            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 1916
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.close:()V
        44: .line 1917
            goto 49
      StackMap locals:
      StackMap stack: java.io.IOException
        45: astore 12 /* e */
        start local 12 // java.io.IOException e
        46: .line 1918
            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 1920
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.destroy:()V
        50: .line 1884
      StackMap locals:
      StackMap stack:
            iload 11
            ireturn
        end local 8 // java.io.OutputStream outputStream
        51: .line 1885
      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 1886
            aload 8 /* e */
            astore 7 /* ioException */
        end local 8 // java.io.IOException e
        53: .line 1888
            aload 5 /* executor */
            invokestatic org.eclipse.jgit.util.FS.shutdownAndAwaitTermination:(Ljava/util/concurrent/ExecutorService;)Z
            pop
        54: .line 1889
            aload 6 /* process */
            ifnull 109
        55: .line 1891
            aload 6 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            pop
        56: .line 1892
            goto 59
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        57: pop
        58: .line 1897
            invokestatic java.lang.Thread.interrupted:()Z
            pop
        59: .line 1902
      StackMap locals:
      StackMap stack:
            aload 4 /* inRedirect */
            ifnull 61
        60: .line 1903
            aload 4 /* inRedirect */
            invokevirtual java.io.InputStream.close:()V
        61: .line 1906
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        62: .line 1907
            goto 67
      StackMap locals:
      StackMap stack: java.io.IOException
        63: astore 12 /* e */
        start local 12 // java.io.IOException e
        64: .line 1908
            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 1911
      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 1912
            goto 73
      StackMap locals:
      StackMap stack: java.io.IOException
        69: astore 12 /* e */
        start local 12 // java.io.IOException e
        70: .line 1913
            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 1916
      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 1917
            goto 79
      StackMap locals:
      StackMap stack: java.io.IOException
        75: astore 12 /* e */
        start local 12 // java.io.IOException e
        76: .line 1918
            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 1920
      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 1887
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        81: .line 1888
            aload 5 /* executor */
            invokestatic org.eclipse.jgit.util.FS.shutdownAndAwaitTermination:(Ljava/util/concurrent/ExecutorService;)Z
            pop
        82: .line 1889
            aload 6 /* process */
            ifnull 108
        83: .line 1891
            aload 6 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            pop
        84: .line 1892
            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 1897
            invokestatic java.lang.Thread.interrupted:()Z
            pop
        87: .line 1902
      StackMap locals:
      StackMap stack:
            aload 4 /* inRedirect */
            ifnull 89
        88: .line 1903
            aload 4 /* inRedirect */
            invokevirtual java.io.InputStream.close:()V
        89: .line 1906
      StackMap locals:
      StackMap stack:
            aload 6 /* process */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        90: .line 1907
            goto 95
      StackMap locals:
      StackMap stack: java.io.IOException
        91: astore 12 /* e */
        start local 12 // java.io.IOException e
        92: .line 1908
            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 1911
      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 1912
            goto 101
      StackMap locals:
      StackMap stack: java.io.IOException
        97: astore 12 /* e */
        start local 12 // java.io.IOException e
        98: .line 1913
            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 1916
      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 1917
            goto 107
      StackMap locals:
      StackMap stack: java.io.IOException
       103: astore 12 /* e */
        start local 12 // java.io.IOException e
       104: .line 1918
            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 1920
      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 1922
      StackMap locals:
      StackMap stack:
            aload 10
            athrow
       109: .line 1924
      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 1941
            iconst_1
            istore 1 /* hasShutdown */
        start local 1 // boolean hasShutdown
         1: .line 1942
            aload 0 /* pool */
            invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
         2: .line 1945
            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 1946
            aload 0 /* pool */
            invokeinterface java.util.concurrent.ExecutorService.shutdownNow:()Ljava/util/List;
            pop
         4: .line 1948
            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 1949
            iconst_0
            istore 1 /* hasShutdown */
         6: .line 1951
            goto 11
      StackMap locals: java.util.concurrent.ExecutorService int
      StackMap stack: java.lang.InterruptedException
         7: pop
         8: .line 1953
            aload 0 /* pool */
            invokeinterface java.util.concurrent.ExecutorService.shutdownNow:()Ljava/util/List;
            pop
         9: .line 1955
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        10: .line 1956
            iconst_0
            istore 1 /* hasShutdown */
        11: .line 1958
      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 1989
            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 1990
            new org.eclipse.jgit.util.TemporaryBuffer$Heap
            dup
            sipush 1024
         3: .line 1991
            ldc 1048576
         4: .line 1990
            invokespecial org.eclipse.jgit.util.TemporaryBuffer$Heap.<init>:(II)V
            astore 6 /* stderr */
        start local 6 // org.eclipse.jgit.util.TemporaryBuffer stderr
         5: .line 1992
            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 1993
            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 1994
            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 1993
      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 1994
            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 2152
            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 2153
            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 2154
            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 2155
      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 2156
            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 2157
            iconst_0
            istore 6 /* isSymlink */
        start local 6 // boolean isSymlink
        12: .line 2158
            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 2159
            lconst_0
            lstore 8 /* createTime */
        start local 8 // long createTime
        16: .line 2160
            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 2161
            iload 6 /* isSymlink */
            iload 3 /* isFile */
            lload 8 /* createTime */
            aload 7 /* lastModified */
            ldc -1
        18: .line 2160
            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 2173
            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 2185
            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 116
            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 1078
            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