public class org.graalvm.component.installer.SystemUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.component.installer.SystemUtils
  super_class: java.lang.Object
{
  public static final char DELIMITER_CHAR;
    descriptor: C
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 47

  public static final java.lang.String DELIMITER;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "/"

  private static final java.lang.String DOT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "."

  private static final java.lang.String DOTDOT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: ".."

  private static final java.lang.String SPLIT_DELIMITER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.regex.Pattern OLD_VERSION_PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static boolean licenseTracking;
    descriptor: Z
    flags: (0x0008) ACC_STATIC

  private static volatile int[] $SWITCH_TABLE$org$graalvm$component$installer$SystemUtils$OS;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 73
            ldc "/"
            invokestatic java.util.regex.Pattern.quote:(Ljava/lang/String;)Ljava/lang/String;
            putstatic org.graalvm.component.installer.SystemUtils.SPLIT_DELIMITER:Ljava/lang/String;
         1: .line 302
            ldc "([0-9]+\\.[0-9]+(\\.[0-9]+)?(\\.[0-9]+)?)(-([a-z]+)([0-9]+)?)?"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.graalvm.component.installer.SystemUtils.OLD_VERSION_PATTERN:Ljava/util/regex/Pattern;
         2: .line 372
            iconst_0
            putstatic org.graalvm.component.installer.SystemUtils.licenseTracking:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.SystemUtils this
         0: .line 58
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.component.installer.SystemUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/component/installer/SystemUtils;

  public static java.nio.file.Path fromCommonString(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // java.lang.String p
         0: .line 110
            aload 0 /* p */
            getstatic org.graalvm.component.installer.SystemUtils.SPLIT_DELIMITER:Ljava/lang/String;
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 1 /* comps */
        start local 1 // java.lang.String[] comps
         1: .line 111
            aload 1 /* comps */
            arraylength
            iconst_1
            if_icmpne 3
         2: .line 112
            aload 1 /* comps */
            iconst_0
            aaload
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
         3: .line 114
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 1 /* comps */
            arraylength
            iconst_1
            isub
            istore 2 /* l */
        start local 2 // int l
         4: .line 115
            aload 1 /* comps */
            iconst_0
            aaload
            astore 3 /* s */
        start local 3 // java.lang.String s
         5: .line 116
            aload 1 /* comps */
            iconst_1
            aload 1 /* comps */
            iconst_0
            iload 2 /* l */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 117
            aload 1 /* comps */
            iload 2 /* l */
            ldc ""
            aastore
         7: .line 118
            aload 3 /* s */
            aload 1 /* comps */
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
        end local 3 // java.lang.String s
        end local 2 // int l
        end local 1 // java.lang.String[] comps
        end local 0 // java.lang.String p
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0      p  Ljava/lang/String;
            1    8     1  comps  [Ljava/lang/String;
            4    8     2      l  I
            5    8     3      s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      p     

  public static java.nio.file.Path fromUserString(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String p
         0: .line 129
            aload 0 /* p */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
        end local 0 // java.lang.String p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     p  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      p     

  public static java.nio.file.Path fileName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String s
         0: .line 140
            aload 0 /* s */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            ifge 2
         1: .line 141
            bipush 47
            getstatic java.io.File.separatorChar:C
            if_icmpeq 3
            aload 0 /* s */
            getstatic java.io.File.separatorChar:C
            invokevirtual java.lang.String.indexOf:(I)I
            iflt 3
         2: .line 142
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            aload 0 /* s */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 144
      StackMap locals:
      StackMap stack:
            ldc "."
            aload 0 /* s */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            ldc ".."
            aload 0 /* s */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 145
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            aload 0 /* s */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 147
      StackMap locals:
      StackMap stack:
            aload 0 /* s */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     

  public static java.lang.String toCommonPath(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.nio.file.Path p
         0: .line 158
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 159
            iconst_0
            istore 2 /* next */
        start local 2 // boolean next
         2: .line 160
            aload 0 /* p */
            invokeinterface java.nio.file.Path.iterator:()Ljava/util/Iterator;
            astore 4
            goto 11
      StackMap locals: java.nio.file.Path java.lang.StringBuilder int top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            astore 3 /* comp */
        start local 3 // java.nio.file.Path comp
         4: .line 161
            iload 2 /* next */
            ifeq 6
         5: .line 162
            aload 1 /* sb */
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         6: .line 164
      StackMap locals: java.nio.file.Path java.lang.StringBuilder int java.nio.file.Path java.util.Iterator
      StackMap stack:
            aload 3 /* comp */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 5 /* compS */
        start local 5 // java.lang.String compS
         7: .line 165
            getstatic java.io.File.separatorChar:C
            bipush 47
            if_icmpeq 9
         8: .line 166
            aload 5 /* compS */
            getstatic java.io.File.separator:Ljava/lang/String;
            ldc "/"
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 5 /* compS */
         9: .line 168
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* sb */
            aload 5 /* compS */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 169
            iconst_1
            istore 2 /* next */
        end local 5 // java.lang.String compS
        end local 3 // java.nio.file.Path comp
        11: .line 160
      StackMap locals: java.nio.file.Path java.lang.StringBuilder int top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        12: .line 171
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // boolean next
        end local 1 // java.lang.StringBuilder sb
        end local 0 // java.nio.file.Path p
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0      p  Ljava/nio/file/Path;
            1   13     1     sb  Ljava/lang/StringBuilder;
            2   13     2   next  Z
            4   11     3   comp  Ljava/nio/file/Path;
            7   11     5  compS  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      p     

  public static boolean isWindows();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 180
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* osName */
        start local 0 // java.lang.String osName
         1: .line 181
            aload 0 /* osName */
            ifnull 2
            aload 0 /* osName */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // java.lang.String osName
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    3     0  osName  Ljava/lang/String;

  public static boolean isLinux();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 190
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* osName */
        start local 0 // java.lang.String osName
         1: .line 191
            aload 0 /* osName */
            ifnull 2
            aload 0 /* osName */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            ldc "linux"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // java.lang.String osName
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    3     0  osName  Ljava/lang/String;

  public static boolean isMac();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 200
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* osName */
        start local 0 // java.lang.String osName
         1: .line 201
            aload 0 /* osName */
            ifnull 2
            aload 0 /* osName */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            ldc "mac"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // java.lang.String osName
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    3     0  osName  Ljava/lang/String;

  public static java.nio.file.Path fromCommonRelative(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String p
         0: .line 213
            aload 0 /* p */
            ifnonnull 2
         1: .line 214
            aconst_null
            areturn
         2: .line 216
      StackMap locals:
      StackMap stack:
            aconst_null
            aload 0 /* p */
            invokestatic org.graalvm.component.installer.SystemUtils.checkRelativePath:(Ljava/nio/file/Path;Ljava/lang/String;)[Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fromArray:([Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
        end local 0 // java.lang.String p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     p  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      p     

  private static java.nio.file.Path fromArray(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.lang.String[] comps
         0: .line 220
            aload 0 /* comps */
            arraylength
            iconst_1
            if_icmpne 2
         1: .line 221
            aload 0 /* comps */
            iconst_0
            aaload
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
         2: .line 223
      StackMap locals:
      StackMap stack:
            aload 0 /* comps */
            arraylength
            iconst_1
            isub
            istore 1 /* l */
        start local 1 // int l
         3: .line 224
            aload 0 /* comps */
            iconst_0
            aaload
            astore 2 /* s */
        start local 2 // java.lang.String s
         4: .line 225
            aload 0 /* comps */
            iconst_1
            aload 0 /* comps */
            iconst_0
            iload 1 /* l */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 226
            aload 0 /* comps */
            iload 1 /* l */
            ldc ""
            aastore
         6: .line 227
            aload 2 /* s */
            aload 0 /* comps */
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
        end local 2 // java.lang.String s
        end local 1 // int l
        end local 0 // java.lang.String[] comps
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0  comps  [Ljava/lang/String;
            3    7     1      l  I
            4    7     2      s  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      comps  

  public static java.nio.file.Path resolveRelative(java.nio.file.Path, java.lang.String);
    descriptor: (Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.nio.file.Path baseDir
        start local 1 // java.lang.String p
         0: .line 231
            aload 0 /* baseDir */
            ifnonnull 2
         1: .line 232
            aconst_null
            areturn
         2: .line 234
      StackMap locals:
      StackMap stack:
            aload 1 /* p */
            ifnonnull 4
         3: .line 235
            aconst_null
            areturn
         4: .line 237
      StackMap locals:
      StackMap stack:
            aload 0 /* baseDir */
            aload 1 /* p */
            invokestatic org.graalvm.component.installer.SystemUtils.checkRelativePath:(Ljava/nio/file/Path;Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* comps */
        start local 2 // java.lang.String[] comps
         5: .line 238
            aload 0 /* baseDir */
            aload 2 /* comps */
            invokestatic org.graalvm.component.installer.SystemUtils.fromArray:([Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            areturn
        end local 2 // java.lang.String[] comps
        end local 1 // java.lang.String p
        end local 0 // java.nio.file.Path baseDir
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0  baseDir  Ljava/nio/file/Path;
            0    6     1        p  Ljava/lang/String;
            5    6     2    comps  [Ljava/lang/String;
    MethodParameters:
         Name  Flags
      baseDir  
      p        

  public static java.nio.file.Path fromCommonRelative(java.nio.file.Path, java.lang.String);
    descriptor: (Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.nio.file.Path base
        start local 1 // java.lang.String p
         0: .line 242
            aload 1 /* p */
            ifnonnull 2
         1: .line 243
            aconst_null
            areturn
         2: .line 244
      StackMap locals:
      StackMap stack:
            aload 0 /* base */
            ifnonnull 4
         3: .line 245
            aload 1 /* p */
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
         4: .line 247
      StackMap locals:
      StackMap stack:
            aload 0 /* base */
            aload 1 /* p */
            invokestatic org.graalvm.component.installer.SystemUtils.checkRelativePath:(Ljava/nio/file/Path;Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* comps */
        start local 2 // java.lang.String[] comps
         5: .line 248
            aload 0 /* base */
            aload 2 /* comps */
            invokestatic org.graalvm.component.installer.SystemUtils.fromArray:([Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolveSibling:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            areturn
        end local 2 // java.lang.String[] comps
        end local 1 // java.lang.String p
        end local 0 // java.nio.file.Path base
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   base  Ljava/nio/file/Path;
            0    6     1      p  Ljava/lang/String;
            5    6     2  comps  [Ljava/lang/String;
    MethodParameters:
      Name  Flags
      base  
      p     

  public static void checkCommonRelative(java.nio.file.Path, java.lang.String);
    descriptor: (Ljava/nio/file/Path;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.nio.file.Path base
        start local 1 // java.lang.String p
         0: .line 259
            aload 1 /* p */
            ifnonnull 2
         1: .line 260
            return
         2: .line 262
      StackMap locals:
      StackMap stack:
            aload 0 /* base */
            aload 1 /* p */
            invokestatic org.graalvm.component.installer.SystemUtils.checkRelativePath:(Ljava/nio/file/Path;Ljava/lang/String;)[Ljava/lang/String;
            pop
         3: .line 263
            return
        end local 1 // java.lang.String p
        end local 0 // java.nio.file.Path base
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  base  Ljava/nio/file/Path;
            0    4     1     p  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      base  
      p     

  private static java.lang.String[] checkRelativePath(java.nio.file.Path, java.lang.String);
    descriptor: (Ljava/nio/file/Path;Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // java.nio.file.Path base
        start local 1 // java.lang.String p
         0: .line 266
            aload 1 /* p */
            ldc "/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 267
            new java.lang.IllegalArgumentException
            dup
            ldc "Absolute path"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 269
      StackMap locals:
      StackMap stack:
            aload 1 /* p */
            getstatic org.graalvm.component.installer.SystemUtils.SPLIT_DELIMITER:Ljava/lang/String;
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* comps */
        start local 2 // java.lang.String[] comps
         3: .line 270
            aload 0 /* base */
            ifnonnull 4
            iconst_0
            goto 5
      StackMap locals: java.lang.String[]
      StackMap stack:
         4: aload 0 /* base */
            invokeinterface java.nio.file.Path.normalize:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.getNameCount:()I
            iconst_1
            isub
      StackMap locals:
      StackMap stack: int
         5: istore 3 /* d */
        start local 3 // int d
         6: .line 271
            iconst_0
            istore 4 /* fromIndex */
        start local 4 // int fromIndex
         7: .line 272
            iconst_0
            istore 5 /* toIndex */
        start local 5 // int toIndex
         8: .line 273
            aload 2 /* comps */
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 23
      StackMap locals: java.nio.file.Path java.lang.String java.lang.String[] int int int top int int java.lang.String[]
      StackMap stack:
         9: aload 9
            iload 7
            aaload
            astore 6 /* s */
        start local 6 // java.lang.String s
        10: .line 274
            aload 6 /* s */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 13
        11: .line 275
            iinc 4 /* fromIndex */ 1
        12: .line 276
            goto 22
        13: .line 278
      StackMap locals: java.nio.file.Path java.lang.String java.lang.String[] int int int java.lang.String int int java.lang.String[]
      StackMap stack:
            ldc ".."
            aload 6 /* s */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        14: .line 279
            iinc 3 /* d */ -1
        15: .line 280
            iload 3 /* d */
            ifge 18
        16: .line 281
            new java.lang.IllegalArgumentException
            dup
            ldc "Relative path reaches above root"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 284
      StackMap locals:
      StackMap stack:
            iinc 3 /* d */ 1
        18: .line 286
      StackMap locals:
      StackMap stack:
            iload 5 /* toIndex */
            iload 4 /* fromIndex */
            if_icmpge 20
        19: .line 287
            aload 2 /* comps */
            iload 5 /* toIndex */
            aload 2 /* comps */
            iload 4 /* fromIndex */
            aaload
            aastore
        20: .line 289
      StackMap locals:
      StackMap stack:
            iinc 4 /* fromIndex */ 1
        21: .line 290
            iinc 5 /* toIndex */ 1
        end local 6 // java.lang.String s
        22: .line 273
      StackMap locals: java.nio.file.Path java.lang.String java.lang.String[] int int int top int int java.lang.String[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        23: iload 7
            iload 8
            if_icmplt 9
        24: .line 292
            iload 4 /* fromIndex */
            iload 5 /* toIndex */
            if_icmpne 26
        25: .line 293
            aload 2 /* comps */
            areturn
        26: .line 296
      StackMap locals: java.nio.file.Path java.lang.String java.lang.String[] int int int
      StackMap stack:
            iload 5 /* toIndex */
            anewarray java.lang.String
            astore 6 /* newcomps */
        start local 6 // java.lang.String[] newcomps
        27: .line 297
            aload 2 /* comps */
            iconst_0
            aload 6 /* newcomps */
            iconst_0
            iload 5 /* toIndex */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        28: .line 298
            aload 6 /* newcomps */
            areturn
        end local 6 // java.lang.String[] newcomps
        end local 5 // int toIndex
        end local 4 // int fromIndex
        end local 3 // int d
        end local 2 // java.lang.String[] comps
        end local 1 // java.lang.String p
        end local 0 // java.nio.file.Path base
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   29     0       base  Ljava/nio/file/Path;
            0   29     1          p  Ljava/lang/String;
            3   29     2      comps  [Ljava/lang/String;
            6   29     3          d  I
            7   29     4  fromIndex  I
            8   29     5    toIndex  I
           10   22     6          s  Ljava/lang/String;
           27   29     6   newcomps  [Ljava/lang/String;
    MethodParameters:
      Name  Flags
      base  
      p     

  public static java.lang.String normalizeOldVersions(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // java.lang.String v
         0: .line 315
            aload 0 /* v */
            ifnonnull 2
         1: .line 316
            aconst_null
            areturn
         2: .line 318
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.component.installer.SystemUtils.OLD_VERSION_PATTERN:Ljava/util/regex/Pattern;
            aload 0 /* v */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 1 /* m */
        start local 1 // java.util.regex.Matcher m
         3: .line 319
            aload 1 /* m */
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifne 5
         4: .line 320
            aload 0 /* v */
            areturn
         5: .line 322
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            aload 1 /* m */
            iconst_1
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 2 /* numbers */
        start local 2 // java.lang.String numbers
         6: .line 323
            aload 1 /* m */
            iconst_5
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 3 /* rel */
        start local 3 // java.lang.String rel
         7: .line 324
            aload 1 /* m */
            bipush 6
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 4 /* relNo */
        start local 4 // java.lang.String relNo
         8: .line 326
            aload 2 /* numbers */
            ldc "0."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 10
         9: .line 327
            aload 0 /* v */
            areturn
        10: .line 330
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* rel */
            ifnonnull 14
        11: .line 331
            aload 1 /* m */
            iconst_3
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            ifnonnull 13
        12: .line 332
            new java.lang.StringBuilder
            dup
            aload 2 /* numbers */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".0"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        13: .line 334
      StackMap locals:
      StackMap stack:
            aload 2 /* numbers */
            areturn
        14: .line 337
      StackMap locals:
      StackMap stack:
            aload 1 /* m */
            iconst_3
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            ifnonnull 16
        15: .line 338
            new java.lang.StringBuilder
            dup
            aload 2 /* numbers */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".0"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* numbers */
        16: .line 340
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 2 /* numbers */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "-0."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* rel */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* relNo */
            ifnonnull 17
            ldc ""
            goto 18
      StackMap locals:
      StackMap stack: java.lang.StringBuilder
        17: new java.lang.StringBuilder
            dup
            ldc "."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* relNo */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
      StackMap locals: java.lang.String java.util.regex.Matcher java.lang.String java.lang.String java.lang.String
      StackMap stack: java.lang.StringBuilder java.lang.String
        18: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 4 // java.lang.String relNo
        end local 3 // java.lang.String rel
        end local 2 // java.lang.String numbers
        end local 1 // java.util.regex.Matcher m
        end local 0 // java.lang.String v
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0        v  Ljava/lang/String;
            3   19     1        m  Ljava/util/regex/Matcher;
            6   19     2  numbers  Ljava/lang/String;
            7   19     3      rel  Ljava/lang/String;
            8   19     4    relNo  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      v     

  public static java.nio.file.Path getGraalVMJDKRoot(org.graalvm.component.installer.model.ComponentRegistry);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentRegistry;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.model.ComponentRegistry reg
         0: .line 345
            ldc "macos"
         1: .line 346
            aload 0 /* reg */
            invokevirtual org.graalvm.component.installer.model.ComponentRegistry.getGraalCapabilities:()Ljava/util/Map;
            ldc "os_name"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
         2: .line 345
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
         3: .line 346
            ifeq 5
         4: .line 347
            ldc "Contents"
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "Home"
            aastore
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
         5: .line 349
      StackMap locals:
      StackMap stack:
            ldc ""
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
        end local 0 // org.graalvm.component.installer.model.ComponentRegistry reg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0   reg  Lorg/graalvm/component/installer/model/ComponentRegistry;
    MethodParameters:
      Name  Flags
      reg   

  public static java.lang.String findFileOwner(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.nio.file.Path file
         0: .line 361
            aload 0 /* file */
            invokeinterface java.nio.file.Path.getFileSystem:()Ljava/nio/file/FileSystem;
            invokevirtual java.nio.file.FileSystem.provider:()Ljava/nio/file/spi/FileSystemProvider;
            aload 0 /* file */
            ldc Ljava/nio/file/attribute/PosixFileAttributeView;
            iconst_0
            anewarray java.nio.file.LinkOption
            invokevirtual java.nio.file.spi.FileSystemProvider.getFileAttributeView:(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView;
            checkcast java.nio.file.attribute.PosixFileAttributeView
            astore 1 /* posix */
        start local 1 // java.nio.file.attribute.PosixFileAttributeView posix
         1: .line 362
            aload 1 /* posix */
            ifnull 3
         2: .line 363
            aload 1 /* posix */
            invokeinterface java.nio.file.attribute.PosixFileAttributeView.getOwner:()Ljava/nio/file/attribute/UserPrincipal;
            invokeinterface java.nio.file.attribute.UserPrincipal.getName:()Ljava/lang/String;
            areturn
         3: .line 365
      StackMap locals: java.nio.file.attribute.PosixFileAttributeView
      StackMap stack:
            aload 0 /* file */
            invokeinterface java.nio.file.Path.getFileSystem:()Ljava/nio/file/FileSystem;
            invokevirtual java.nio.file.FileSystem.provider:()Ljava/nio/file/spi/FileSystemProvider;
            aload 0 /* file */
            ldc Ljava/nio/file/attribute/AclFileAttributeView;
            iconst_0
            anewarray java.nio.file.LinkOption
            invokevirtual java.nio.file.spi.FileSystemProvider.getFileAttributeView:(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView;
            checkcast java.nio.file.attribute.AclFileAttributeView
            astore 2 /* acl */
        start local 2 // java.nio.file.attribute.AclFileAttributeView acl
         4: .line 366
            aload 2 /* acl */
            ifnull 6
         5: .line 367
            aload 2 /* acl */
            invokeinterface java.nio.file.attribute.AclFileAttributeView.getOwner:()Ljava/nio/file/attribute/UserPrincipal;
            invokeinterface java.nio.file.attribute.UserPrincipal.getName:()Ljava/lang/String;
            areturn
         6: .line 369
      StackMap locals: java.nio.file.attribute.AclFileAttributeView
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.nio.file.attribute.AclFileAttributeView acl
        end local 1 // java.nio.file.attribute.PosixFileAttributeView posix
        end local 0 // java.nio.file.Path file
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   file  Ljava/nio/file/Path;
            1    7     1  posix  Ljava/nio/file/attribute/PosixFileAttributeView;
            4    7     2    acl  Ljava/nio/file/attribute/AclFileAttributeView;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  public static boolean isLicenseTrackingEnabled();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 375
            getstatic org.graalvm.component.installer.SystemUtils.licenseTracking:Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.String parseURLParameters(java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=13, args_size=2
        start local 0 // java.lang.String s
        start local 1 // java.util.Map params
         0: .line 379
            aload 0 /* s */
            bipush 63
            invokevirtual java.lang.String.indexOf:(I)I
            istore 2 /* q */
        start local 2 // int q
         1: .line 380
            iload 2 /* q */
            iconst_m1
            if_icmpne 3
         2: .line 381
            aload 0 /* s */
            areturn
         3: .line 383
      StackMap locals: int
      StackMap stack:
            aload 0 /* s */
            iload 2 /* q */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* queryString */
        start local 3 // java.lang.String queryString
         4: .line 384
            aload 3 /* queryString */
            ldc "&"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 20
      StackMap locals: java.lang.String java.util.Map int java.lang.String top int int java.lang.String[]
      StackMap stack:
         5: aload 7
            iload 5
            aaload
            astore 4 /* parSpec */
        start local 4 // java.lang.String parSpec
         6: .line 385
            aload 4 /* parSpec */
            ldc "="
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 8 /* nameAndVal */
        start local 8 // java.lang.String[] nameAndVal
         7: .line 390
            aload 8 /* nameAndVal */
            iconst_0
            aaload
            ldc "UTF-8"
            invokestatic java.net.URLDecoder.decode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* n */
        start local 9 // java.lang.String n
         8: .line 391
            aload 9 /* n */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 10
         9: .line 392
            goto 19
        10: .line 394
      StackMap locals: java.lang.String java.util.Map int java.lang.String java.lang.String int int java.lang.String[] java.lang.String[] java.lang.String
      StackMap stack:
            aload 8 /* nameAndVal */
            arraylength
            iconst_1
            if_icmple 11
            aload 8 /* nameAndVal */
            iconst_1
            aaload
            ldc "UTF-8"
            invokestatic java.net.URLDecoder.decode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            goto 12
      StackMap locals:
      StackMap stack:
        11: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
        12: astore 10 /* v */
        start local 10 // java.lang.String v
        13: .line 395
            aload 1 /* params */
            aload 9 /* n */
            aload 10 /* v */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 396
            goto 19
        end local 10 // java.lang.String v
        end local 9 // java.lang.String n
      StackMap locals: java.lang.String java.util.Map int java.lang.String java.lang.String int int java.lang.String[] java.lang.String[]
      StackMap stack: java.io.UnsupportedEncodingException
        15: astore 11 /* ex */
        start local 11 // java.io.UnsupportedEncodingException ex
        16: .line 397
            new java.net.MalformedURLException
            dup
            aload 11 /* ex */
            invokevirtual java.io.UnsupportedEncodingException.getLocalizedMessage:()Ljava/lang/String;
            invokespecial java.net.MalformedURLException.<init>:(Ljava/lang/String;)V
            astore 12 /* newEx */
        start local 12 // java.net.MalformedURLException newEx
        17: .line 398
            aload 12 /* newEx */
            aload 11 /* ex */
            invokevirtual java.net.MalformedURLException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        18: .line 399
            aload 12 /* newEx */
            athrow
        end local 12 // java.net.MalformedURLException newEx
        end local 11 // java.io.UnsupportedEncodingException ex
        end local 8 // java.lang.String[] nameAndVal
        end local 4 // java.lang.String parSpec
        19: .line 384
      StackMap locals: java.lang.String java.util.Map int java.lang.String top int int java.lang.String[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        20: iload 5
            iload 6
            if_icmplt 5
        21: .line 402
            aload 0 /* s */
            iconst_0
            iload 2 /* q */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            areturn
        end local 3 // java.lang.String queryString
        end local 2 // int q
        end local 1 // java.util.Map params
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0            s  Ljava/lang/String;
            0   22     1       params  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            1   22     2            q  I
            4   22     3  queryString  Ljava/lang/String;
            6   19     4      parSpec  Ljava/lang/String;
            7   19     8   nameAndVal  [Ljava/lang/String;
            8   15     9            n  Ljava/lang/String;
           13   15    10            v  Ljava/lang/String;
           16   19    11           ex  Ljava/io/UnsupportedEncodingException;
           17   19    12        newEx  Ljava/net/MalformedURLException;
      Exception table:
        from    to  target  type
           7     9      15  Class java.io.UnsupportedEncodingException
          10    14      15  Class java.io.UnsupportedEncodingException
    Exceptions:
      throws java.net.MalformedURLException
    Signature: (Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
        Name  Flags
      s       
      params  

  public static int getJavaMajorVersion(org.graalvm.component.installer.CommandInput);
    descriptor: (Lorg/graalvm/component/installer/CommandInput;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.CommandInput cmd
         0: .line 406
            aload 0 /* cmd */
            invokeinterface org.graalvm.component.installer.CommandInput.getLocalRegistry:()Lorg/graalvm/component/installer/model/ComponentRegistry;
            ifnull 1
            aload 0 /* cmd */
            invokeinterface org.graalvm.component.installer.CommandInput.getLocalRegistry:()Lorg/graalvm/component/installer/model/ComponentRegistry;
            invokevirtual org.graalvm.component.installer.model.ComponentRegistry.getJavaVersion:()Ljava/lang/String;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: java.lang.String
         2: astore 1 /* v */
        start local 1 // java.lang.String v
         3: .line 407
            aload 1 /* v */
            ifnonnull 5
         4: .line 408
            aload 0 /* cmd */
            ldc "java.specification.version"
            iconst_1
            invokeinterface org.graalvm.component.installer.CommandInput.getParameter:(Ljava/lang/String;Z)Ljava/lang/String;
            pop
         5: .line 410
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* v */
            ifnull 7
         6: .line 411
            aload 1 /* v */
            invokestatic org.graalvm.component.installer.SystemUtils.interpretJavaMajorVersion:(Ljava/lang/String;)I
            ireturn
         7: .line 413
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.component.installer.SystemUtils.getJavaMajorVersion:()I
            ireturn
        end local 1 // java.lang.String v
        end local 0 // org.graalvm.component.installer.CommandInput cmd
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0   cmd  Lorg/graalvm/component/installer/CommandInput;
            3    8     1     v  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      cmd   

  public static int getJavaMajorVersion();
    descriptor: ()I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 418
            ldc "java.specification.version"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* v */
        start local 0 // java.lang.String v
         1: .line 419
            aload 0 /* v */
            invokestatic org.graalvm.component.installer.SystemUtils.interpretJavaMajorVersion:(Ljava/lang/String;)I
            ireturn
        end local 0 // java.lang.String v
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    2     0     v  Ljava/lang/String;

  public static int interpretJavaMajorVersion(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String v
         0: .line 430
            aload 0 /* v */
            ldc "1."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 3
         1: .line 431
            aload 0 /* v */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* s */
        start local 1 // java.lang.String s
         2: .line 432
            goto 4
        end local 1 // java.lang.String s
         3: .line 433
      StackMap locals:
      StackMap stack:
            aload 0 /* v */
            astore 1 /* s */
        start local 1 // java.lang.String s
         4: .line 436
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* s */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
         5: ireturn
         6: .line 437
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
            pop
         7: .line 438
            iconst_0
            ireturn
        end local 1 // java.lang.String s
        end local 0 // java.lang.String v
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0     v  Ljava/lang/String;
            2    3     1     s  Ljava/lang/String;
            4    8     1     s  Ljava/lang/String;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.NumberFormatException
    MethodParameters:
      Name  Flags
      v     

  public static java.nio.file.Path getRuntimeLibDir(java.nio.file.Path, boolean);
    descriptor: (Ljava/nio/file/Path;Z)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.nio.file.Path graalPath
        start local 1 // boolean archDir
         0: .line 452
            aload 0 /* graalPath */
            invokestatic org.graalvm.component.installer.SystemUtils.getRuntimeBaseDir:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* base */
        start local 3 // java.nio.file.Path base
         1: .line 453
            invokestatic org.graalvm.component.installer.SystemUtils.$SWITCH_TABLE$org$graalvm$component$installer$SystemUtils$OS:()[I
            invokestatic org.graalvm.component.installer.SystemUtils$OS.get:()Lorg/graalvm/component/installer/SystemUtils$OS;
            invokevirtual org.graalvm.component.installer.SystemUtils$OS.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 11
                    2: 2
                    3: 9
                    4: 13
              default: 13
          }
         2: .line 455
      StackMap locals: java.nio.file.Path int top java.nio.file.Path
      StackMap stack:
            ldc "os.arch"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* arch */
        start local 4 // java.lang.String arch
         3: .line 456
            aload 3 /* base */
            ldc "lib"
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 5 /* temp */
        start local 5 // java.nio.file.Path temp
         4: .line 457
            iload 1 /* archDir */
            ifeq 5
            invokestatic org.graalvm.component.installer.SystemUtils.getJavaMajorVersion:()I
            bipush 10
            if_icmplt 7
         5: .line 458
      StackMap locals: java.lang.String java.nio.file.Path
      StackMap stack:
            aload 5 /* temp */
            astore 2 /* newLibPath */
        start local 2 // java.nio.file.Path newLibPath
         6: .line 459
            goto 14
        end local 2 // java.nio.file.Path newLibPath
         7: .line 460
      StackMap locals:
      StackMap stack:
            aload 5 /* temp */
            aload 4 /* arch */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* newLibPath */
        start local 2 // java.nio.file.Path newLibPath
         8: .line 462
            goto 14
        end local 5 // java.nio.file.Path temp
        end local 4 // java.lang.String arch
        end local 2 // java.nio.file.Path newLibPath
         9: .line 464
      StackMap locals:
      StackMap stack:
            aload 3 /* base */
            ldc "lib"
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* newLibPath */
        start local 2 // java.nio.file.Path newLibPath
        10: .line 465
            goto 14
        end local 2 // java.nio.file.Path newLibPath
        11: .line 467
      StackMap locals:
      StackMap stack:
            aload 3 /* base */
            ldc "bin"
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* newLibPath */
        start local 2 // java.nio.file.Path newLibPath
        12: .line 468
            goto 14
        end local 2 // java.nio.file.Path newLibPath
        13: .line 471
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        start local 2 // java.nio.file.Path newLibPath
        14: .line 473
      StackMap locals: java.nio.file.Path int java.nio.file.Path java.nio.file.Path
      StackMap stack:
            aload 2 /* newLibPath */
            areturn
        end local 3 // java.nio.file.Path base
        end local 2 // java.nio.file.Path newLibPath
        end local 1 // boolean archDir
        end local 0 // java.nio.file.Path graalPath
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0   graalPath  Ljava/nio/file/Path;
            0   15     1     archDir  Z
            6    7     2  newLibPath  Ljava/nio/file/Path;
            8    9     2  newLibPath  Ljava/nio/file/Path;
           10   11     2  newLibPath  Ljava/nio/file/Path;
           12   13     2  newLibPath  Ljava/nio/file/Path;
           14   15     2  newLibPath  Ljava/nio/file/Path;
            1   15     3        base  Ljava/nio/file/Path;
            3    9     4        arch  Ljava/lang/String;
            4    9     5        temp  Ljava/nio/file/Path;
    MethodParameters:
           Name  Flags
      graalPath  
      archDir    

  public static java.nio.file.Path getRuntimeBaseDir(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.nio.file.Path jdkInstallDir
         0: .line 483
            invokestatic org.graalvm.component.installer.SystemUtils.getJavaMajorVersion:()I
            istore 1 /* v */
        start local 1 // int v
         1: .line 484
            iload 1 /* v */
            bipush 10
            if_icmplt 3
         2: .line 485
            aload 0 /* jdkInstallDir */
            areturn
         3: .line 486
      StackMap locals: int
      StackMap stack:
            iload 1 /* v */
            ifle 5
         4: .line 487
            aload 0 /* jdkInstallDir */
            ldc "jre"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
         5: .line 490
      StackMap locals:
      StackMap stack:
            aload 0 /* jdkInstallDir */
            ldc "jre"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 2 /* jre */
        start local 2 // java.nio.file.Path jre
         6: .line 491
            aload 2 /* jre */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 8
            aload 2 /* jre */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 8
         7: .line 492
            aload 2 /* jre */
            areturn
         8: .line 494
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aload 0 /* jdkInstallDir */
            areturn
        end local 2 // java.nio.file.Path jre
        end local 1 // int v
        end local 0 // java.nio.file.Path jdkInstallDir
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0  jdkInstallDir  Ljava/nio/file/Path;
            1    9     1              v  I
            6    9     2            jre  Ljava/nio/file/Path;
    MethodParameters:
               Name  Flags
      jdkInstallDir  

  public static java.nio.file.Path copySubtree(java.nio.file.Path, java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.nio.file.Path from
        start local 1 // java.nio.file.Path to
         0: .line 499
            aload 0 /* from */
            new org.graalvm.component.installer.SystemUtils$CopyDirVisitor
            dup
            aload 0 /* from */
            aload 1 /* to */
            invokespecial org.graalvm.component.installer.SystemUtils$CopyDirVisitor.<init>:(Ljava/nio/file/Path;Ljava/nio/file/Path;)V
            invokestatic java.nio.file.Files.walkFileTree:(Ljava/nio/file/Path;Ljava/nio/file/FileVisitor;)Ljava/nio/file/Path;
            pop
         1: .line 500
            aload 1 /* to */
            areturn
        end local 1 // java.nio.file.Path to
        end local 0 // java.nio.file.Path from
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  from  Ljava/nio/file/Path;
            0    2     1    to  Ljava/nio/file/Path;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      from  
      to    

  public static byte[] toHashBytes(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=1
        start local 0 // java.lang.String hashS
         0: .line 540
            aload 0 /* hashS */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 1 /* val */
        start local 1 // java.lang.String val
         1: .line 541
            aload 1 /* val */
            invokevirtual java.lang.String.length:()I
            iconst_4
            if_icmpge 3
         2: .line 542
            aconst_null
            areturn
         3: .line 544
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* val */
            iconst_2
            invokevirtual java.lang.String.charAt:(I)C
            istore 2 /* c */
        start local 2 // char c
         4: .line 545
            iload 2 /* c */
            bipush 48
            if_icmplt 5
            iload 2 /* c */
            bipush 57
            if_icmple 7
      StackMap locals: int
      StackMap stack:
         5: iload 2 /* c */
            bipush 65
            if_icmplt 6
            iload 2 /* c */
            bipush 70
            if_icmple 7
      StackMap locals:
      StackMap stack:
         6: iload 2 /* c */
            bipush 97
            if_icmplt 8
            iload 2 /* c */
            bipush 102
            if_icmpgt 8
      StackMap locals:
      StackMap stack:
         7: iconst_0
            goto 9
      StackMap locals:
      StackMap stack:
         8: iconst_1
      StackMap locals:
      StackMap stack: int
         9: istore 3 /* divided */
        start local 3 // boolean divided
        10: .line 548
            iload 3 /* divided */
            ifeq 16
        11: .line 549
            aload 1 /* val */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            iconst_3
            irem
            ifne 12
            iconst_1
            goto 13
      StackMap locals: int
      StackMap stack:
        12: iconst_0
      StackMap locals:
      StackMap stack: int
        13: istore 4 /* lenOK */
        start local 4 // boolean lenOK
        14: .line 550
            aload 1 /* val */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            iconst_3
            idiv
            istore 5 /* s */
        start local 5 // int s
        15: .line 551
            goto 20
        end local 5 // int s
        end local 4 // boolean lenOK
        16: .line 552
      StackMap locals:
      StackMap stack:
            aload 1 /* val */
            invokevirtual java.lang.String.length:()I
            iconst_2
            irem
            ifne 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 4 /* lenOK */
        start local 4 // boolean lenOK
        19: .line 553
            aload 1 /* val */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            iconst_2
            idiv
            istore 5 /* s */
        start local 5 // int s
        20: .line 555
      StackMap locals: int int
      StackMap stack:
            iload 4 /* lenOK */
            ifne 22
        21: .line 556
            aconst_null
            areturn
        22: .line 558
      StackMap locals:
      StackMap stack:
            iload 5 /* s */
            newarray 8
            astore 6 /* digest */
        start local 6 // byte[] digest
        23: .line 559
            iconst_0
            istore 7 /* dI */
        start local 7 // int dI
        24: .line 560
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        25: goto 36
        26: .line 563
      StackMap locals: byte[] int int
      StackMap stack:
            aload 1 /* val */
            iload 8 /* i */
            iload 8 /* i */
            iconst_2
            iadd
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            bipush 16
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
            istore 9 /* b */
        start local 9 // int b
        27: .line 564
            goto 30
        end local 9 // int b
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
        28: pop
        29: .line 565
            aconst_null
            areturn
        start local 9 // int b
        30: .line 567
      StackMap locals: int
      StackMap stack:
            iload 9 /* b */
            ifge 32
        31: .line 568
            aconst_null
            areturn
        32: .line 570
      StackMap locals:
      StackMap stack:
            aload 6 /* digest */
            iload 7 /* dI */
            iinc 7 /* dI */ 1
            iload 9 /* b */
            i2b
            bastore
        33: .line 571
            iload 3 /* divided */
            ifeq 35
        34: .line 572
            iinc 8 /* i */ 1
        end local 9 // int b
        35: .line 560
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 2
      StackMap locals:
      StackMap stack:
        36: iload 8 /* i */
            iconst_1
            iadd
            aload 1 /* val */
            invokevirtual java.lang.String.length:()I
            if_icmplt 26
        end local 8 // int i
        37: .line 575
            aload 6 /* digest */
            areturn
        end local 7 // int dI
        end local 6 // byte[] digest
        end local 5 // int s
        end local 4 // boolean lenOK
        end local 3 // boolean divided
        end local 2 // char c
        end local 1 // java.lang.String val
        end local 0 // java.lang.String hashS
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   38     0    hashS  Ljava/lang/String;
            1   38     1      val  Ljava/lang/String;
            4   38     2        c  C
           10   38     3  divided  Z
           14   16     4    lenOK  Z
           19   38     4    lenOK  Z
           15   16     5        s  I
           20   38     5        s  I
           23   38     6   digest  [B
           24   38     7       dI  I
           25   37     8        i  I
           27   28     9        b  I
           30   35     9        b  I
      Exception table:
        from    to  target  type
          26    27      28  Class java.lang.NumberFormatException
    MethodParameters:
       Name  Flags
      hashS  

  public static java.lang.String fingerPrint(byte[]);
    descriptor: ([B)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte[] digest
         0: .line 586
            aload 0 /* digest */
            iconst_1
            invokestatic org.graalvm.component.installer.SystemUtils.fingerPrint:([BZ)Ljava/lang/String;
            areturn
        end local 0 // byte[] digest
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  digest  [B
    MethodParameters:
        Name  Flags
      digest  

  public static java.lang.String fingerPrint(byte[], boolean);
    descriptor: ([BZ)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // byte[] digest
        start local 1 // boolean delimiter
         0: .line 598
            aload 0 /* digest */
            ifnonnull 2
         1: .line 599
            aconst_null
            areturn
         2: .line 601
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* digest */
            arraylength
            iconst_3
            imul
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         3: .line 602
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 9
         5: .line 603
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            iload 1 /* delimiter */
            ifeq 7
            iload 3 /* i */
            ifle 7
         6: .line 604
            aload 2 /* sb */
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         7: .line 606
      StackMap locals:
      StackMap stack:
            aload 2 /* sb */
            ldc "%02x"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* digest */
            iload 3 /* i */
            baload
            sipush 255
            iand
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 602
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 3 /* i */
            aload 0 /* digest */
            arraylength
            if_icmplt 5
        end local 3 // int i
        10: .line 608
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder sb
        end local 1 // boolean delimiter
        end local 0 // byte[] digest
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0     digest  [B
            0   11     1  delimiter  Z
            3   11     2         sb  Ljava/lang/StringBuilder;
            4   10     3          i  I
    MethodParameters:
           Name  Flags
      digest     
      delimiter  

  public static java.lang.String digestString(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.lang.String s
        start local 1 // boolean delimiters
         0: .line 620
            ldc "SHA-256"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 2 /* dg */
        start local 2 // java.security.MessageDigest dg
         1: .line 621
            aload 2 /* dg */
            aload 0 /* s */
            invokevirtual java.lang.String.getBytes:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
         2: .line 622
            aload 2 /* dg */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 3 /* digest */
        start local 3 // byte[] digest
         3: .line 623
            aload 3 /* digest */
            iload 1 /* delimiters */
            invokestatic org.graalvm.component.installer.SystemUtils.fingerPrint:([BZ)Ljava/lang/String;
         4: areturn
        end local 3 // byte[] digest
        end local 2 // java.security.MessageDigest dg
         5: .line 624
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 2 /* ex */
        start local 2 // java.security.NoSuchAlgorithmException ex
         6: .line 625
            new org.graalvm.component.installer.FailedOperationException
            dup
            aload 2 /* ex */
            invokevirtual java.security.NoSuchAlgorithmException.getLocalizedMessage:()Ljava/lang/String;
            aload 2 /* ex */
            invokespecial org.graalvm.component.installer.FailedOperationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.NoSuchAlgorithmException ex
        end local 1 // boolean delimiters
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0           s  Ljava/lang/String;
            0    7     1  delimiters  Z
            1    5     2          dg  Ljava/security/MessageDigest;
            3    5     3      digest  [B
            6    7     2          ex  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           0     4       5  Class java.security.NoSuchAlgorithmException
    MethodParameters:
            Name  Flags
      s           
      delimiters  

  public static java.lang.String patternOsName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.String os
         0: .line 630
            aload 0 /* os */
            ifnonnull 2
         1: .line 631
            aconst_null
            areturn
         2: .line 633
      StackMap locals:
      StackMap stack:
            aload 0 /* os */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 1 /* lc */
        start local 1 // java.lang.String lc
         3: .line 634
            aload 1 /* lc */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
          -1338956761: 4
            103652211: 5
              default: 7
          }
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
         4: aload 2
            ldc "darwin"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 7
      StackMap locals:
      StackMap stack:
         5: aload 2
            ldc "macos"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 7
         6: .line 637
      StackMap locals:
      StackMap stack:
            ldc "(:?darwin|macos)"
            areturn
         7: .line 639
      StackMap locals:
      StackMap stack:
            aload 1 /* lc */
            areturn
        end local 1 // java.lang.String lc
        end local 0 // java.lang.String os
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0    os  Ljava/lang/String;
            3    8     1    lc  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      os    

  public static java.lang.String patternOsArch(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.String arch
         0: .line 644
            aload 0 /* arch */
            ifnonnull 2
         1: .line 645
            aconst_null
            areturn
         2: .line 647
      StackMap locals:
      StackMap stack:
            aload 0 /* arch */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 1 /* lc */
        start local 1 // java.lang.String lc
         3: .line 648
            aload 1 /* lc */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
           -806050265: 4
             92926582: 5
              default: 7
          }
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
         4: aload 2
            ldc "x86_64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 7
      StackMap locals:
      StackMap stack:
         5: aload 2
            ldc "amd64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 7
         6: .line 651
      StackMap locals:
      StackMap stack:
            ldc "(:?amd64|x86_64)"
            areturn
         7: .line 653
      StackMap locals:
      StackMap stack:
            aload 1 /* lc */
            areturn
        end local 1 // java.lang.String lc
        end local 0 // java.lang.String arch
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  arch  Ljava/lang/String;
            3    8     1    lc  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      arch  

  public static java.lang.String normalizeArchitecture(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.String os
        start local 1 // java.lang.String arch
         0: .line 665
            aload 1 /* arch */
            ifnonnull 2
         1: .line 666
            aconst_null
            areturn
         2: .line 668
      StackMap locals:
      StackMap stack:
            aload 1 /* arch */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 1
           -806050265: 3
              default: 5
          }
      StackMap locals: java.lang.String
      StackMap stack:
         3: aload 2
            ldc "x86_64"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            goto 5
         4: .line 670
      StackMap locals:
      StackMap stack:
            ldc "amd64"
            areturn
         5: .line 672
      StackMap locals:
      StackMap stack:
            aload 1 /* arch */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String arch
        end local 0 // java.lang.String os
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0    os  Ljava/lang/String;
            0    6     1  arch  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      os    
      arch  

  public static java.lang.String normalizeOSName(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.String os
        start local 1 // java.lang.String arch
         0: .line 684
            aload 0 /* os */
            ifnonnull 2
         1: .line 685
            aconst_null
            areturn
         2: .line 687
      StackMap locals:
      StackMap stack:
            aload 0 /* os */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 1
          -1338956761: 3
              default: 5
          }
      StackMap locals: java.lang.String
      StackMap stack:
         3: aload 2
            ldc "darwin"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            goto 5
         4: .line 689
      StackMap locals:
      StackMap stack:
            ldc "macos"
            areturn
         5: .line 691
      StackMap locals:
      StackMap stack:
            aload 0 /* os */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String arch
        end local 0 // java.lang.String os
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0    os  Ljava/lang/String;
            0    6     1  arch  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      os    
      arch  

  public static byte[] computeFileDigest(java.nio.file.Path, java.lang.String);
    descriptor: (Ljava/nio/file/Path;Ljava/lang/String;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // java.nio.file.Path localFile
        start local 1 // java.lang.String digestAlgo
         0: .line 704
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* localFile */
            iconst_1
            anewarray java.nio.file.OpenOption
            dup
            iconst_0
            getstatic java.nio.file.StandardOpenOption.READ:Ljava/nio/file/StandardOpenOption;
            aastore
            invokestatic java.nio.channels.FileChannel.open:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/FileChannel;
            astore 4 /* s */
        start local 4 // java.nio.channels.SeekableByteChannel s
         2: .line 705
            sipush 4096
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 5 /* bb */
        start local 5 // java.nio.ByteBuffer bb
         3: .line 706
            aload 0 /* localFile */
            invokestatic java.nio.file.Files.size:(Ljava/nio/file/Path;)J
            lstore 6 /* size */
        start local 6 // long size
         4: .line 707
            ldc "SHA-256"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 8 /* dg */
        start local 8 // java.security.MessageDigest dg
         5: .line 708
            goto 15
         6: .line 709
      StackMap locals: java.nio.file.Path java.lang.String java.lang.Throwable java.lang.Throwable java.nio.channels.SeekableByteChannel java.nio.ByteBuffer long java.security.MessageDigest
      StackMap stack:
            aload 5 /* bb */
            invokevirtual java.nio.ByteBuffer.limit:()I
            i2l
            lload 6 /* size */
            lcmp
            ifle 8
         7: .line 710
            aload 5 /* bb */
            lload 6 /* size */
            l2i
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
            pop
         8: .line 712
      StackMap locals:
      StackMap stack:
            aload 4 /* s */
            aload 5 /* bb */
            invokeinterface java.nio.channels.SeekableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 9 /* r */
        start local 9 // int r
         9: .line 713
            iload 9 /* r */
            ifge 11
        10: .line 714
            goto 16
        11: .line 716
      StackMap locals: int
      StackMap stack:
            aload 5 /* bb */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
        12: .line 717
            aload 8 /* dg */
            aload 5 /* bb */
            invokevirtual java.security.MessageDigest.update:(Ljava/nio/ByteBuffer;)V
        13: .line 718
            aload 5 /* bb */
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/ByteBuffer;
            pop
        14: .line 719
            lload 6 /* size */
            iload 9 /* r */
            i2l
            lsub
            lstore 6 /* size */
        end local 9 // int r
        15: .line 708
      StackMap locals:
      StackMap stack:
            lload 6 /* size */
            lconst_0
            lcmp
            ifgt 6
        16: .line 721
      StackMap locals:
      StackMap stack:
            aload 8 /* dg */
            invokevirtual java.security.MessageDigest.digest:()[B
        17: .line 722
            aload 4 /* s */
            ifnull 18
            aload 4 /* s */
            invokeinterface java.nio.channels.SeekableByteChannel.close:()V
        18: .line 721
      StackMap locals:
      StackMap stack: byte[]
            areturn
        end local 8 // java.security.MessageDigest dg
        end local 6 // long size
        end local 5 // java.nio.ByteBuffer bb
      StackMap locals: java.nio.file.Path java.lang.String java.lang.Throwable java.lang.Throwable java.nio.channels.SeekableByteChannel
      StackMap stack: java.lang.Throwable
        19: astore 2
        20: .line 722
            aload 4 /* s */
            ifnull 21
            aload 4 /* s */
            invokeinterface java.nio.channels.SeekableByteChannel.close:()V
        end local 4 // java.nio.channels.SeekableByteChannel s
      StackMap locals:
      StackMap stack:
        21: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: astore 3
            aload 2
            ifnonnull 23
            aload 3
            astore 2
            goto 24
      StackMap locals:
      StackMap stack:
        23: aload 2
            aload 3
            if_acmpeq 24
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        24: aload 2
            athrow
      StackMap locals: java.nio.file.Path java.lang.String
      StackMap stack: java.security.NoSuchAlgorithmException
        25: astore 2 /* ex */
        start local 2 // java.security.NoSuchAlgorithmException ex
        26: .line 723
            new java.io.IOException
            dup
            aload 2 /* ex */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.NoSuchAlgorithmException ex
        end local 1 // java.lang.String digestAlgo
        end local 0 // java.nio.file.Path localFile
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0   localFile  Ljava/nio/file/Path;
            0   27     1  digestAlgo  Ljava/lang/String;
            2   21     4           s  Ljava/nio/channels/SeekableByteChannel;
            3   19     5          bb  Ljava/nio/ByteBuffer;
            4   19     6        size  J
            5   19     8          dg  Ljava/security/MessageDigest;
            9   15     9           r  I
           26   27     2          ex  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           2    17      19  any
           1    18      22  any
          19    22      22  any
           0    18      25  Class java.security.NoSuchAlgorithmException
          19    25      25  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      localFile   
      digestAlgo  

  public static boolean isRemotePath(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String pathOrURL
         0: .line 738
            new java.net.URL
            dup
            aload 0 /* pathOrURL */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 1 /* u */
        start local 1 // java.net.URL u
         1: .line 739
            aload 1 /* u */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            astore 2 /* proto */
        start local 2 // java.lang.String proto
         2: .line 740
            ldc "file"
            aload 2 /* proto */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 741
            new java.lang.IllegalArgumentException
            dup
            ldc "Absolute file:// URLs are not permitted."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 743
      StackMap locals: java.net.URL java.lang.String
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.lang.String proto
        end local 1 // java.net.URL u
         5: .line 745
      StackMap locals: java.lang.String
      StackMap stack: java.net.MalformedURLException
            pop
         6: .line 749
            aload 0 /* pathOrURL */
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            pop
         7: .line 750
            iconst_0
            ireturn
        end local 0 // java.lang.String pathOrURL
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0  pathOrURL  Ljava/lang/String;
            1    5     1          u  Ljava/net/URL;
            2    5     2      proto  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     4       5  Class java.net.MalformedURLException
    MethodParameters:
           Name  Flags
      pathOrURL  

  static int[] $SWITCH_TABLE$org$graalvm$component$installer$SystemUtils$OS();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 58
            getstatic org.graalvm.component.installer.SystemUtils.$SWITCH_TABLE$org$graalvm$component$installer$SystemUtils$OS:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.graalvm.component.installer.SystemUtils$OS.values:()[Lorg/graalvm/component/installer/SystemUtils$OS;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.graalvm.component.installer.SystemUtils$OS.LINUX:Lorg/graalvm/component/installer/SystemUtils$OS;
            invokevirtual org.graalvm.component.installer.SystemUtils$OS.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.graalvm.component.installer.SystemUtils$OS.MAC:Lorg/graalvm/component/installer/SystemUtils$OS;
            invokevirtual org.graalvm.component.installer.SystemUtils$OS.ordinal:()I
            iconst_3
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.graalvm.component.installer.SystemUtils$OS.UNKNOWN:Lorg/graalvm/component/installer/SystemUtils$OS;
            invokevirtual org.graalvm.component.installer.SystemUtils$OS.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.graalvm.component.installer.SystemUtils$OS.WINDOWS:Lorg/graalvm/component/installer/SystemUtils$OS;
            invokevirtual org.graalvm.component.installer.SystemUtils$OS.ordinal:()I
            iconst_1
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic org.graalvm.component.installer.SystemUtils.$SWITCH_TABLE$org$graalvm$component$installer$SystemUtils$OS:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
}
SourceFile: "SystemUtils.java"
NestMembers:
  org.graalvm.component.installer.SystemUtils$CopyDirVisitor  org.graalvm.component.installer.SystemUtils$OS
InnerClasses:
  public CopyDirVisitor = org.graalvm.component.installer.SystemUtils$CopyDirVisitor of org.graalvm.component.installer.SystemUtils
  public final OS = org.graalvm.component.installer.SystemUtils$OS of org.graalvm.component.installer.SystemUtils