abstract class org.jf.util.ClassFileNameHandler$FileSystemEntry
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: org.jf.util.ClassFileNameHandler$FileSystemEntry
  super_class: java.lang.Object
{
  public final org.jf.util.ClassFileNameHandler$DirectoryEntry parent;
    descriptor: Lorg/jf/util/ClassFileNameHandler$DirectoryEntry;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    RuntimeVisibleAnnotations: 
      javax.annotation.Nullable()

  public final java.lang.String logicalName;
    descriptor: Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    RuntimeVisibleAnnotations: 
      javax.annotation.Nonnull()

  protected java.lang.String physicalName;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    RuntimeVisibleAnnotations: 
      javax.annotation.Nullable()

  final org.jf.util.ClassFileNameHandler this$0;
    descriptor: Lorg/jf/util/ClassFileNameHandler;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private void <init>(org.jf.util.ClassFileNameHandler, org.jf.util.ClassFileNameHandler$DirectoryEntry, java.lang.String);
    descriptor: (Lorg/jf/util/ClassFileNameHandler;Lorg/jf/util/ClassFileNameHandler$DirectoryEntry;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.jf.util.ClassFileNameHandler$FileSystemEntry this
        start local 2 // org.jf.util.ClassFileNameHandler$DirectoryEntry parent
        start local 3 // java.lang.String logicalName
         0: .line 247
            aload 0 /* this */
            aload 1
            putfield org.jf.util.ClassFileNameHandler$FileSystemEntry.this$0:Lorg/jf/util/ClassFileNameHandler;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 245
            aload 0 /* this */
            aconst_null
            putfield org.jf.util.ClassFileNameHandler$FileSystemEntry.physicalName:Ljava/lang/String;
         2: .line 248
            aload 0 /* this */
            aload 2 /* parent */
            putfield org.jf.util.ClassFileNameHandler$FileSystemEntry.parent:Lorg/jf/util/ClassFileNameHandler$DirectoryEntry;
         3: .line 249
            aload 0 /* this */
            aload 3 /* logicalName */
            putfield org.jf.util.ClassFileNameHandler$FileSystemEntry.logicalName:Ljava/lang/String;
         4: .line 250
            return
        end local 3 // java.lang.String logicalName
        end local 2 // org.jf.util.ClassFileNameHandler$DirectoryEntry parent
        end local 0 // org.jf.util.ClassFileNameHandler$FileSystemEntry this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/jf/util/ClassFileNameHandler$FileSystemEntry;
            0    5     2       parent  Lorg/jf/util/ClassFileNameHandler$DirectoryEntry;
            0    5     3  logicalName  Ljava/lang/String;
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER, location=[INNER_TYPE]
        javax.annotation.Nullable()
      METHOD_FORMAL_PARAMETER
        javax.annotation.Nonnull()
    RuntimeVisibleParameterAnnotations: 
      0:
        javax.annotation.Nullable()
      1:
        javax.annotation.Nonnull()
      2:
    MethodParameters:
             Name  Flags
      this$0       final
      parent       
      logicalName  

  public java.lang.String getNormalizedName(boolean);
    descriptor: (Z)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.jf.util.ClassFileNameHandler$FileSystemEntry this
        start local 1 // boolean preserveCase
         0: .line 253
            aload 0 /* this */
            getfield org.jf.util.ClassFileNameHandler$FileSystemEntry.logicalName:Ljava/lang/String;
            astore 2 /* elementName */
        start local 2 // java.lang.String elementName
         1: .line 254
            iload 1 /* preserveCase */
            ifne 3
            aload 0 /* this */
            getfield org.jf.util.ClassFileNameHandler$FileSystemEntry.parent:Lorg/jf/util/ClassFileNameHandler$DirectoryEntry;
            ifnull 3
            aload 0 /* this */
            getfield org.jf.util.ClassFileNameHandler$FileSystemEntry.parent:Lorg/jf/util/ClassFileNameHandler$DirectoryEntry;
            invokevirtual org.jf.util.ClassFileNameHandler$DirectoryEntry.isCaseSensitive:()Z
            ifne 3
         2: .line 255
            aload 2 /* elementName */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            astore 2 /* elementName */
         3: .line 258
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.jf.util.ClassFileNameHandler$FileSystemEntry.this$0:Lorg/jf/util/ClassFileNameHandler;
            getfield org.jf.util.ClassFileNameHandler.modifyWindowsReservedFilenames:Z
            ifeq 5
            aload 2 /* elementName */
            invokestatic org.jf.util.ClassFileNameHandler.isReservedFileName:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 259
            aload 2 /* elementName */
            ldc "#"
            invokestatic org.jf.util.ClassFileNameHandler.addSuffixBeforeExtension:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* elementName */
         5: .line 262
      StackMap locals:
      StackMap stack:
            aload 2 /* elementName */
            invokestatic org.jf.util.ClassFileNameHandler.utf8Length:(Ljava/lang/String;)I
            istore 3 /* utf8Length */
        start local 3 // int utf8Length
         6: .line 263
            iload 3 /* utf8Length */
            aload 0 /* this */
            getfield org.jf.util.ClassFileNameHandler$FileSystemEntry.this$0:Lorg/jf/util/ClassFileNameHandler;
            invokevirtual org.jf.util.ClassFileNameHandler.getMaxFilenameLength:()I
            if_icmple 8
         7: .line 264
            aload 2 /* elementName */
            iload 3 /* utf8Length */
            aload 0 /* this */
            getfield org.jf.util.ClassFileNameHandler$FileSystemEntry.this$0:Lorg/jf/util/ClassFileNameHandler;
            invokevirtual org.jf.util.ClassFileNameHandler.getMaxFilenameLength:()I
            isub
            invokestatic org.jf.util.ClassFileNameHandler.shortenPathComponent:(Ljava/lang/String;I)Ljava/lang/String;
            astore 2 /* elementName */
         8: .line 266
      StackMap locals: int
      StackMap stack:
            aload 2 /* elementName */
            areturn
        end local 3 // int utf8Length
        end local 2 // java.lang.String elementName
        end local 1 // boolean preserveCase
        end local 0 // org.jf.util.ClassFileNameHandler$FileSystemEntry this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lorg/jf/util/ClassFileNameHandler$FileSystemEntry;
            0    9     1  preserveCase  Z
            1    9     2   elementName  Ljava/lang/String;
            6    9     3    utf8Length  I
    RuntimeVisibleAnnotations: 
      javax.annotation.Nonnull()
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        javax.annotation.Nonnull()
    MethodParameters:
              Name  Flags
      preserveCase  

  public java.lang.String getPhysicalName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jf.util.ClassFileNameHandler$FileSystemEntry this
         0: .line 271
            aload 0 /* this */
            getfield org.jf.util.ClassFileNameHandler$FileSystemEntry.physicalName:Ljava/lang/String;
            areturn
        end local 0 // org.jf.util.ClassFileNameHandler$FileSystemEntry this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jf/util/ClassFileNameHandler$FileSystemEntry;
    RuntimeVisibleAnnotations: 
      javax.annotation.Nullable()
    RuntimeVisibleTypeAnnotations: 
      METHOD_RETURN
        javax.annotation.Nullable()

  public void setSuffix(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jf.util.ClassFileNameHandler$FileSystemEntry this
        start local 1 // int suffix
         0: .line 275
            iload 1 /* suffix */
            iflt 1
            iload 1 /* suffix */
            ldc 99999
            if_icmple 2
         1: .line 276
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "suffix must be in [0, 100000)"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jf.util.ClassFileNameHandler$FileSystemEntry.physicalName:Ljava/lang/String;
            ifnull 4
         3: .line 280
            new java.lang.IllegalStateException
            dup
            ldc "The suffix can only be set once"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            iload 1 /* suffix */
            invokevirtual org.jf.util.ClassFileNameHandler$FileSystemEntry.makePhysicalName:(I)Ljava/lang/String;
            putfield org.jf.util.ClassFileNameHandler$FileSystemEntry.physicalName:Ljava/lang/String;
         5: .line 283
            return
        end local 1 // int suffix
        end local 0 // org.jf.util.ClassFileNameHandler$FileSystemEntry this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/jf/util/ClassFileNameHandler$FileSystemEntry;
            0    6     1  suffix  I
    MethodParameters:
        Name  Flags
      suffix  

  protected abstract java.lang.String makePhysicalName(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      suffix  
}
SourceFile: "ClassFileNameHandler.java"
NestHost: org.jf.util.ClassFileNameHandler
InnerClasses:
  private DirectoryEntry = org.jf.util.ClassFileNameHandler$DirectoryEntry of org.jf.util.ClassFileNameHandler
  private abstract FileSystemEntry = org.jf.util.ClassFileNameHandler$FileSystemEntry of org.jf.util.ClassFileNameHandler