public class org.graalvm.component.installer.persist.DirectoryStorage implements org.graalvm.component.installer.model.ManagementStorage
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.component.installer.persist.DirectoryStorage
  super_class: java.lang.Object
{
  public static final java.lang.String META_LICENSE_FILE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "LICENSE_PATH"

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

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

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

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

  private static final java.lang.String PATH_REPLACED_FILES;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "replaced-files.properties"

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

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

  private static final java.lang.String LICENSE_CONTENTS_ID;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "licenses/{0}.id"

  static final java.lang.String LICENSE_FILE_TEMPLATE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "licenses/{0}.accepted/_all"

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

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

  protected final java.nio.file.Path registryPath;
    descriptor: Ljava/nio/file/Path;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.nio.file.Path graalHomePath;
    descriptor: Ljava/nio/file/Path;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final org.graalvm.component.installer.Feedback feedback;
    descriptor: Lorg/graalvm/component/installer/Feedback;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.util.Properties loaded;
    descriptor: Ljava/util/Properties;
    flags: (0x0002) ACC_PRIVATE

  private org.graalvm.component.installer.model.ComponentInfo graalCore;
    descriptor: Lorg/graalvm/component/installer/model/ComponentInfo;
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

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

  private java.lang.String javaVersion;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private org.graalvm.component.installer.Config config;
    descriptor: Lorg/graalvm/component/installer/Config;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 151
            ldc "\\b([a-z-._]+):([0-9a-f]+)\\b"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.graalvm.component.installer.persist.DirectoryStorage.SOURCE_REVISION:Ljava/util/regex/Pattern;
         1: .line 154
            iconst_3
            anewarray java.lang.String
            dup
            iconst_0
         2: .line 155
            ldc "graalvm_version"
            aastore
            dup
            iconst_1
         3: .line 156
            ldc "os_name"
            aastore
            dup
            iconst_2
         4: .line 157
            ldc "os_arch"
            aastore
         5: .line 154
            putstatic org.graalvm.component.installer.persist.DirectoryStorage.REQUIRED_ATTRIBUTES:[Ljava/lang/String;
         6: .line 161
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.component.installer.Feedback, java.nio.file.Path, java.nio.file.Path);
    descriptor: (Lorg/graalvm/component/installer/Feedback;Ljava/nio/file/Path;Ljava/nio/file/Path;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // org.graalvm.component.installer.Feedback feedback
        start local 2 // java.nio.file.Path storagePath
        start local 3 // java.nio.file.Path graalHomePath
         0: .line 166
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 167
            aload 0 /* this */
            aload 1 /* feedback */
            putfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
         2: .line 168
            aload 0 /* this */
            aload 2 /* storagePath */
            putfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
         3: .line 169
            aload 0 /* this */
            aload 3 /* graalHomePath */
            putfield org.graalvm.component.installer.persist.DirectoryStorage.graalHomePath:Ljava/nio/file/Path;
         4: .line 170
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            invokestatic org.graalvm.component.installer.SystemUtils.getJavaMajorVersion:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield org.graalvm.component.installer.persist.DirectoryStorage.javaVersion:Ljava/lang/String;
         5: .line 171
            return
        end local 3 // java.nio.file.Path graalHomePath
        end local 2 // java.nio.file.Path storagePath
        end local 1 // org.graalvm.component.installer.Feedback feedback
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0    6     1       feedback  Lorg/graalvm/component/installer/Feedback;
            0    6     2    storagePath  Ljava/nio/file/Path;
            0    6     3  graalHomePath  Ljava/nio/file/Path;
    MethodParameters:
               Name  Flags
      feedback       
      storagePath    
      graalHomePath  

  public org.graalvm.component.installer.Config getConfig();
    descriptor: ()Lorg/graalvm/component/installer/Config;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 174
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.config:Lorg/graalvm/component/installer/Config;
            areturn
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/component/installer/persist/DirectoryStorage;

  public void setConfig(org.graalvm.component.installer.Config);
    descriptor: (Lorg/graalvm/component/installer/Config;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // org.graalvm.component.installer.Config config
         0: .line 178
            aload 0 /* this */
            aload 1 /* config */
            putfield org.graalvm.component.installer.persist.DirectoryStorage.config:Lorg/graalvm/component/installer/Config;
         1: .line 179
            return
        end local 1 // org.graalvm.component.installer.Config config
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0    2     1  config  Lorg/graalvm/component/installer/Config;
    MethodParameters:
        Name  Flags
      config  

  public java.lang.String getJavaVersion();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 182
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.javaVersion:Ljava/lang/String;
            areturn
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/component/installer/persist/DirectoryStorage;

  public void setJavaVersion(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.lang.String javaVersion
         0: .line 186
            aload 0 /* this */
            aload 1 /* javaVersion */
            putfield org.graalvm.component.installer.persist.DirectoryStorage.javaVersion:Ljava/lang/String;
         1: .line 187
            return
        end local 1 // java.lang.String javaVersion
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0    2     1  javaVersion  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      javaVersion  

  public java.util.Map<java.lang.String, java.lang.String> loadGraalVersionInfo();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 191
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalHomePath:Ljava/nio/file/Path;
            ldc "release"
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonString:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 1 /* graalVersionFile */
        start local 1 // java.nio.file.Path graalVersionFile
         1: .line 192
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: aload 1 /* graalVersionFile */
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.newInputStream:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;
            astore 4 /* istm */
        start local 4 // java.io.InputStream istm
         3: .line 193
            aload 0 /* this */
            aload 4 /* istm */
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.load:(Ljava/io/InputStream;)Ljava/util/Map;
         4: .line 194
            aload 4 /* istm */
            ifnull 5
            aload 4 /* istm */
            invokevirtual java.io.InputStream.close:()V
         5: .line 193
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.util.Map
            areturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: astore 2
         7: .line 194
            aload 4 /* istm */
            ifnull 8
            aload 4 /* istm */
            invokevirtual java.io.InputStream.close:()V
        end local 4 // java.io.InputStream istm
      StackMap locals:
      StackMap stack:
         8: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 3
            aload 2
            ifnonnull 10
            aload 3
            astore 2
            goto 11
      StackMap locals:
      StackMap stack:
        10: aload 2
            aload 3
            if_acmpeq 11
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        11: aload 2
            athrow
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path
      StackMap stack: java.io.IOException
        12: astore 2 /* ex */
        start local 2 // java.io.IOException ex
        13: .line 195
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "ERROR_ReadingRealeaseFile"
            aload 2 /* ex */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* graalVersionFile */
            aastore
            dup
            iconst_1
            aload 2 /* ex */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 2 // java.io.IOException ex
        end local 1 // java.nio.file.Path graalVersionFile
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   14     0              this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            1   14     1  graalVersionFile  Ljava/nio/file/Path;
            3    8     4              istm  Ljava/io/InputStream;
           13   14     2                ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     4       6  any
           2     5       9  any
           6     9       9  any
           1     5      12  Class java.io.IOException
           6    12      12  Class java.io.IOException
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;

  public org.graalvm.component.installer.Version getGraalVMVersion();
    descriptor: ()Lorg/graalvm/component/installer/Version;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 200
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.loadGraalVersionInfo:()Ljava/util/Map;
            ldc "graalvm_version"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* s */
        start local 1 // java.lang.String s
         1: .line 201
            aload 1 /* s */
            invokestatic org.graalvm.component.installer.Version.fromString:(Ljava/lang/String;)Lorg/graalvm/component/installer/Version;
            areturn
        end local 1 // java.lang.String s
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            1    2     1     s  Ljava/lang/String;

  private java.util.Map<java.lang.String, java.lang.String> load(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=10, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.io.InputStream istm
         0: .line 206
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* graalAttributes */
        start local 2 // java.util.Map graalAttributes
         1: .line 207
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 3 /* props */
        start local 3 // java.util.Properties props
         2: .line 208
            aload 3 /* props */
            aload 1 /* istm */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         3: .line 209
            aconst_null
            astore 4 /* srcText */
        start local 4 // java.lang.String srcText
         4: .line 210
            aload 3 /* props */
            invokevirtual java.util.Properties.propertyNames:()Ljava/util/Enumeration;
            invokestatic java.util.Collections.list:(Ljava/util/Enumeration;)Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 6
            goto 20
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.io.InputStream java.util.Map java.util.Properties java.lang.String top java.util.Iterator
      StackMap stack:
         5: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* key */
        start local 5 // java.lang.String key
         6: .line 211
            aload 3 /* props */
            aload 5 /* key */
            ldc ""
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* val */
        start local 7 // java.lang.String val
         7: .line 213
            aload 5 /* key */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 8 /* lowerKey */
        start local 8 // java.lang.String lowerKey
         8: .line 214
            aload 7 /* val */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 10
            aload 7 /* val */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 34
            if_icmpne 10
            aload 7 /* val */
            invokevirtual java.lang.String.length:()I
            iconst_1
            if_icmple 10
            aload 7 /* val */
            aload 7 /* val */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            bipush 34
            if_icmpne 10
         9: .line 215
            aload 7 /* val */
            iconst_1
            aload 7 /* val */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 7 /* val */
        10: .line 217
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.io.InputStream java.util.Map java.util.Properties java.lang.String java.lang.String java.util.Iterator java.lang.String java.lang.String
      StackMap stack:
            ldc "source"
            aload 8 /* lowerKey */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        11: .line 218
            getstatic org.graalvm.component.installer.persist.DirectoryStorage.SOURCE_REVISION:Ljava/util/regex/Pattern;
            aload 7 /* val */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 9 /* m */
        start local 9 // java.util.regex.Matcher m
        12: .line 219
            aload 7 /* val */
            astore 4 /* srcText */
        13: .line 220
            goto 17
        14: .line 221
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            aload 9 /* m */
            iconst_1
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            ifnull 15
            aload 9 /* m */
            iconst_2
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            ifnull 15
            aload 9 /* m */
            iconst_1
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 15
            aload 9 /* m */
            iconst_2
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 16
        15: .line 222
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "ERROR_ReleaseSourceRevisions"
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalHomePath:Ljava/nio/file/Path;
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        16: .line 224
      StackMap locals:
      StackMap stack:
            aload 2 /* graalAttributes */
            new java.lang.StringBuilder
            dup
            ldc "source_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* m */
            iconst_1
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 9 /* m */
            iconst_2
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 220
      StackMap locals:
      StackMap stack:
            aload 9 /* m */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifne 14
        end local 9 // java.util.regex.Matcher m
        18: .line 226
            goto 20
        19: .line 227
      StackMap locals:
      StackMap stack:
            aload 2 /* graalAttributes */
            aload 8 /* lowerKey */
            aload 7 /* val */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // java.lang.String lowerKey
        end local 7 // java.lang.String val
        end local 5 // java.lang.String key
        20: .line 210
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.io.InputStream java.util.Map java.util.Properties java.lang.String top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        21: .line 230
            getstatic org.graalvm.component.installer.persist.DirectoryStorage.REQUIRED_ATTRIBUTES:[Ljava/lang/String;
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 26
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.io.InputStream java.util.Map java.util.Properties java.lang.String top int int java.lang.String[]
      StackMap stack:
        22: aload 8
            iload 6
            aaload
            astore 5 /* a */
        start local 5 // java.lang.String a
        23: .line 231
            aload 2 /* graalAttributes */
            aload 5 /* a */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 25
        24: .line 232
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "STORAGE_InvalidReleaseFile"
            aconst_null
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 5 // java.lang.String a
        25: .line 230
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        26: iload 6
            iload 7
            if_icmplt 22
        27: .line 235
            aload 2 /* graalAttributes */
            ldc "edition"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            ifnonnull 32
            aload 4 /* srcText */
            ifnull 32
        28: .line 237
            aload 4 /* srcText */
            ldc "vm-enterprise:"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 31
        29: .line 238
            aload 2 /* graalAttributes */
            ldc "edition"
            ldc "ee"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        30: .line 239
            goto 32
        31: .line 240
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.io.InputStream java.util.Map java.util.Properties java.lang.String
      StackMap stack:
            aload 2 /* graalAttributes */
            ldc "edition"
            ldc "ce"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        32: .line 243
      StackMap locals:
      StackMap stack:
            aload 2 /* graalAttributes */
            ldc "java_version"
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.javaVersion:Ljava/lang/String;
            invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        33: .line 244
            aload 2 /* graalAttributes */
            areturn
        end local 4 // java.lang.String srcText
        end local 3 // java.util.Properties props
        end local 2 // java.util.Map graalAttributes
        end local 1 // java.io.InputStream istm
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   34     0             this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   34     1             istm  Ljava/io/InputStream;
            1   34     2  graalAttributes  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            2   34     3            props  Ljava/util/Properties;
            4   34     4          srcText  Ljava/lang/String;
            6   20     5              key  Ljava/lang/String;
            7   20     7              val  Ljava/lang/String;
            8   20     8         lowerKey  Ljava/lang/String;
           12   18     9                m  Ljava/util/regex/Matcher;
           23   25     5                a  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/io/InputStream;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      istm  

  public java.util.Set<java.lang.String> listComponentIDs();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 255
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 2
         1: .line 256
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            areturn
         2: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            astore 1 /* d */
        start local 1 // java.io.File d
         3: .line 259
            aload 1 /* d */
            new org.graalvm.component.installer.persist.DirectoryStorage$1
            dup
            aload 0 /* this */
            invokespecial org.graalvm.component.installer.persist.DirectoryStorage$1.<init>:(Lorg/graalvm/component/installer/persist/DirectoryStorage;)V
            invokevirtual java.io.File.listFiles:(Ljava/io/FileFilter;)[Ljava/io/File;
            astore 2 /* files */
        start local 2 // java.io.File[] files
         4: .line 269
            aload 2 /* files */
            ifnull 16
         5: .line 270
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 3 /* result */
        start local 3 // java.util.Set result
         6: .line 271
            aload 2 /* files */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 12
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.io.File java.io.File[] java.util.Set top int int java.io.File[]
      StackMap stack:
         7: aload 7
            iload 5
            aaload
            astore 4 /* f */
        start local 4 // java.io.File f
         8: .line 272
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            aload 4 /* f */
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.relativize:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 8 /* s */
        start local 8 // java.lang.String s
         9: .line 273
            aload 8 /* s */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 9 /* lastDot */
        start local 9 // int lastDot
        10: .line 274
            aload 3 /* result */
            aload 8 /* s */
            iconst_0
            iload 9 /* lastDot */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // int lastDot
        end local 8 // java.lang.String s
        end local 4 // java.io.File f
        11: .line 271
            iinc 5 1
      StackMap locals:
      StackMap stack:
        12: iload 5
            iload 6
            if_icmplt 7
        13: .line 277
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalHomePath:Ljava/nio/file/Path;
            ldc "bin"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 15
        14: .line 278
            aload 3 /* result */
            ldc "org.graalvm"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 280
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.io.File java.io.File[] java.util.Set
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 3 // java.util.Set result
        16: .line 282
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "File listing of "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* d */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " returned null."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.io.File[] files
        end local 1 // java.io.File d
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            3   17     1        d  Ljava/io/File;
            4   17     2    files  [Ljava/io/File;
            6   16     3   result  Ljava/util/Set<Ljava/lang/String;>;
            8   11     4        f  Ljava/io/File;
            9   11     8        s  Ljava/lang/String;
           10   11     9  lastDot  I
    Exceptions:
      throws java.io.IOException
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  private static java.lang.String computeTag(java.util.Properties);
    descriptor: (Ljava/util/Properties;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.util.Properties data
         0: .line 287
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: new java.io.StringWriter
            dup
            invokespecial java.io.StringWriter.<init>:()V
            astore 3 /* wr */
        start local 3 // java.io.StringWriter wr
         2: .line 288
            aload 0 /* data */
            aload 3 /* wr */
            ldc ""
            invokevirtual java.util.Properties.store:(Ljava/io/Writer;Ljava/lang/String;)V
         3: .line 292
            aload 3 /* wr */
            invokevirtual java.io.StringWriter.toString:()Ljava/lang/String;
            ldc "#.*\r?\n\r?"
            ldc ""
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            iconst_0
            invokestatic org.graalvm.component.installer.SystemUtils.digestString:(Ljava/lang/String;Z)Ljava/lang/String;
         4: .line 293
            aload 3 /* wr */
            ifnull 5
            aload 3 /* wr */
            invokevirtual java.io.StringWriter.close:()V
         5: .line 292
      StackMap locals: java.util.Properties java.lang.Throwable java.lang.Throwable java.io.StringWriter
      StackMap stack: java.lang.String
            areturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: astore 1
         7: .line 293
            aload 3 /* wr */
            ifnull 8
            aload 3 /* wr */
            invokevirtual java.io.StringWriter.close:()V
        end local 3 // java.io.StringWriter wr
      StackMap locals:
      StackMap stack:
         8: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 2
            aload 1
            ifnonnull 10
            aload 2
            astore 1
            goto 11
      StackMap locals:
      StackMap stack:
        10: aload 1
            aload 2
            if_acmpeq 11
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        11: aload 1
            athrow
        end local 0 // java.util.Properties data
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  data  Ljava/util/Properties;
            2    8     3    wr  Ljava/io/StringWriter;
      Exception table:
        from    to  target  type
           2     4       6  any
           1     5       9  any
           6     9       9  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      data  

  org.graalvm.component.installer.model.ComponentInfo loadMetadataFrom(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Lorg/graalvm/component/installer/model/ComponentInfo;
    flags: (0x0000) 
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.io.InputStream fileStream
         0: .line 297
            aload 0 /* this */
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putfield org.graalvm.component.installer.persist.DirectoryStorage.loaded:Ljava/util/Properties;
         1: .line 298
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.loaded:Ljava/util/Properties;
            aload 1 /* fileStream */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         2: .line 300
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.loaded:Ljava/util/Properties;
            ldc "x-GraalVM-Serial"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* serial */
        start local 2 // java.lang.String serial
         3: .line 301
            aload 2 /* serial */
            ifnonnull 5
         4: .line 302
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.loaded:Ljava/util/Properties;
            invokestatic org.graalvm.component.installer.persist.DirectoryStorage.computeTag:(Ljava/util/Properties;)Ljava/lang/String;
            astore 2 /* serial */
         5: .line 304
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            ldc "Bundle-Symbolic-Name"
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.getRequiredProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* id */
        start local 3 // java.lang.String id
         6: .line 305
            aload 0 /* this */
            ldc "Bundle-Name"
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.getRequiredProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
         7: .line 306
            aload 0 /* this */
            ldc "Bundle-Version"
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.getRequiredProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* version */
        start local 5 // java.lang.String version
         8: .line 308
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.loaded:Ljava/util/Properties;
            new org.graalvm.component.installer.model.ComponentInfo
            dup
            aload 3 /* id */
            aload 4 /* name */
            aload 5 /* version */
            aload 2 /* serial */
            invokespecial org.graalvm.component.installer.model.ComponentInfo.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            invokestatic org.graalvm.component.installer.persist.DirectoryStorage.propertiesToMeta:(Ljava/util/Properties;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/Feedback;)Lorg/graalvm/component/installer/model/ComponentInfo;
            areturn
        end local 5 // java.lang.String version
        end local 4 // java.lang.String name
        end local 3 // java.lang.String id
        end local 2 // java.lang.String serial
        end local 1 // java.io.InputStream fileStream
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0    9     1  fileStream  Ljava/io/InputStream;
            3    9     2      serial  Ljava/lang/String;
            6    9     3          id  Ljava/lang/String;
            7    9     4        name  Ljava/lang/String;
            8    9     5     version  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      fileStream  

  public static org.graalvm.component.installer.model.ComponentInfo propertiesToMeta(java.util.Properties, org.graalvm.component.installer.model.ComponentInfo, org.graalvm.component.installer.Feedback);
    descriptor: (Ljava/util/Properties;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/Feedback;)Lorg/graalvm/component/installer/model/ComponentInfo;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=9, locals=12, args_size=3
        start local 0 // java.util.Properties loaded
        start local 1 // org.graalvm.component.installer.model.ComponentInfo ci
        start local 2 // org.graalvm.component.installer.Feedback fb
         0: .line 312
            aload 0 /* loaded */
            ldc "x-GraalVM-Stability"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* stability */
        start local 3 // java.lang.String stability
         1: .line 313
            aload 3 /* stability */
            ifnull 3
         2: .line 314
            aload 1 /* ci */
            aload 3 /* stability */
            invokestatic org.graalvm.component.installer.model.StabilityLevel.valueOfMixedCase:(Ljava/lang/String;)Lorg/graalvm/component/installer/model/StabilityLevel;
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setStability:(Lorg/graalvm/component/installer/model/StabilityLevel;)V
         3: .line 316
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* loaded */
            ldc "x-GraalVM-License-Path"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* license */
        start local 4 // java.lang.String license
         4: .line 317
            aload 4 /* license */
            ifnull 7
         5: .line 318
            aconst_null
            aload 4 /* license */
            invokestatic org.graalvm.component.installer.SystemUtils.checkCommonRelative:(Ljava/nio/file/Path;Ljava/lang/String;)V
         6: .line 319
            aload 1 /* ci */
            aload 4 /* license */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setLicensePath:(Ljava/lang/String;)V
         7: .line 321
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* loaded */
            invokevirtual java.util.Properties.stringPropertyNames:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 26
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
         8: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* s */
        start local 5 // java.lang.String s
         9: .line 322
            aload 5 /* s */
            ldc "Bundle-RequireCapability-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 13
        10: .line 323
            aload 5 /* s */
            ldc "Bundle-RequireCapability-"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 7 /* k */
        start local 7 // java.lang.String k
        11: .line 324
            aload 0 /* loaded */
            aload 5 /* s */
            ldc ""
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* v */
        start local 8 // java.lang.String v
        12: .line 325
            aload 1 /* ci */
            aload 7 /* k */
            aload 8 /* v */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.addRequiredValue:(Ljava/lang/String;Ljava/lang/String;)V
        end local 8 // java.lang.String v
        end local 7 // java.lang.String k
        13: .line 327
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String java.lang.String java.util.Iterator
      StackMap stack:
            aload 5 /* s */
            ldc "Bundle-ProvideCapability-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 26
        14: .line 328
            aload 5 /* s */
            ldc "Bundle-ProvideCapability-"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 7 /* k */
        start local 7 // java.lang.String k
        15: .line 329
            aload 0 /* loaded */
            aload 5 /* s */
            ldc ""
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* v */
        start local 8 // java.lang.String v
        16: .line 330
            aload 8 /* v */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmpge 18
        17: .line 331
            goto 26
        18: .line 333
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 8 /* v */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 9 /* val */
        start local 9 // java.lang.String val
        19: .line 335
            aload 8 /* v */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            lookupswitch { // 2
                   34: 22
                   86: 20
              default: 24
          }
        20: .line 337
      StackMap locals: java.lang.String
      StackMap stack:
            aload 9 /* val */
            invokestatic org.graalvm.component.installer.Version.fromString:(Ljava/lang/String;)Lorg/graalvm/component/installer/Version;
            astore 10 /* o */
        start local 10 // java.lang.Object o
        21: .line 338
            goto 25
        end local 10 // java.lang.Object o
        22: .line 340
      StackMap locals:
      StackMap stack:
            aload 9 /* val */
            astore 10 /* o */
        start local 10 // java.lang.Object o
        23: .line 341
            goto 25
        end local 10 // java.lang.Object o
        24: .line 343
      StackMap locals:
      StackMap stack:
            goto 26
        start local 10 // java.lang.Object o
        25: .line 345
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* ci */
            aload 7 /* k */
            aload 10 /* o */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.provideValue:(Ljava/lang/String;Ljava/lang/Object;)V
        end local 10 // java.lang.Object o
        end local 9 // java.lang.String val
        end local 8 // java.lang.String v
        end local 7 // java.lang.String k
        end local 5 // java.lang.String s
        26: .line 321
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        27: .line 348
            new java.util.LinkedHashSet
            dup
            invokespecial java.util.LinkedHashSet.<init>:()V
            astore 5 /* deps */
        start local 5 // java.util.Set deps
        28: .line 349
            aload 0 /* loaded */
            ldc "Require-Bundle"
            ldc ""
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 34
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String java.util.Set top int int java.lang.String[]
      StackMap stack:
        29: aload 9
            iload 7
            aaload
            astore 6 /* s */
        start local 6 // java.lang.String s
        30: .line 350
            aload 6 /* s */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 10 /* p */
        start local 10 // java.lang.String p
        31: .line 351
            aload 10 /* p */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 33
        32: .line 352
            aload 5 /* deps */
            aload 6 /* s */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // java.lang.String p
        end local 6 // java.lang.String s
        33: .line 349
      StackMap locals:
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        34: iload 7
            iload 8
            if_icmplt 29
        35: .line 355
            aload 5 /* deps */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 37
        36: .line 356
            aload 1 /* ci */
            aload 5 /* deps */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setDependencies:(Ljava/util/Set;)V
        37: .line 358
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String java.util.Set
      StackMap stack:
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
            aload 0 /* loaded */
            ldc "x-GraalVM-Polyglot-Part"
            ldc ""
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 39
        38: .line 359
            aload 1 /* ci */
            iconst_1
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setPolyglotRebuild:(Z)V
        39: .line 361
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* ll */
        start local 6 // java.util.List ll
        40: .line 362
            aload 0 /* loaded */
            ldc "x-GraalVM-Working-Directories"
            ldc ""
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            ldc ":"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 47
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String java.util.Set java.util.List top int int java.lang.String[]
      StackMap stack:
        41: aload 10
            iload 8
            aaload
            astore 7 /* s */
        start local 7 // java.lang.String s
        42: .line 363
            aload 7 /* s */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 11 /* p */
        start local 11 // java.lang.String p
        43: .line 364
            aload 11 /* p */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 46
        44: .line 365
            aconst_null
            aload 11 /* p */
            invokestatic org.graalvm.component.installer.SystemUtils.checkCommonRelative:(Ljava/nio/file/Path;Ljava/lang/String;)V
        45: .line 366
            aload 6 /* ll */
            aload 11 /* p */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // java.lang.String p
        end local 7 // java.lang.String s
        46: .line 362
      StackMap locals:
      StackMap stack:
            iinc 8 1
      StackMap locals:
      StackMap stack:
        47: iload 8
            iload 9
            if_icmplt 41
        48: .line 369
            aload 1 /* ci */
            aload 6 /* ll */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.addWorkingDirectories:(Ljava/util/Collection;)V
        49: .line 370
            aload 0 /* loaded */
            ldc "x-GraalVM-License-Type"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* licType */
        start local 7 // java.lang.String licType
        50: .line 371
            aload 7 /* licType */
            ifnull 52
        51: .line 372
            aload 1 /* ci */
            aload 7 /* licType */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setLicenseType:(Ljava/lang/String;)V
        52: .line 374
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String java.util.Set java.util.List java.lang.String
      StackMap stack:
            aload 0 /* loaded */
            ldc "x-GraalVM-Message-PostInst"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* postInst */
        start local 8 // java.lang.String postInst
        53: .line 375
            aload 8 /* postInst */
            ifnull 56
        54: .line 376
            aload 8 /* postInst */
            ldc "\\n"
            ldc "\n"
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            ldc "\\\\"
            ldc "\\"
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 9 /* text */
        start local 9 // java.lang.String text
        55: .line 377
            aload 1 /* ci */
            aload 9 /* text */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setPostinstMessage:(Ljava/lang/String;)V
        end local 9 // java.lang.String text
        56: .line 379
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* loaded */
            ldc "x-GraalVM-Component-Origin"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* u */
        start local 9 // java.lang.String u
        57: .line 380
            aload 9 /* u */
            ifnull 61
        58: .line 382
            aload 1 /* ci */
            new java.net.URL
            dup
            aload 9 /* u */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setRemoteURL:(Ljava/net/URL;)V
        59: .line 383
            goto 61
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String java.util.Set java.util.List java.lang.String java.lang.String java.lang.String
      StackMap stack: java.net.MalformedURLException
        60: pop
        61: .line 387
      StackMap locals:
      StackMap stack:
            aload 0 /* loaded */
            ldc "x-GraalVM-Component-Distribution"
            getstatic org.graalvm.component.installer.model.DistributionType.OPTIONAL:Lorg/graalvm/component/installer/model/DistributionType;
            invokevirtual org.graalvm.component.installer.model.DistributionType.name:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 10 /* dtn */
        start local 10 // java.lang.String dtn
        62: .line 389
            aload 1 /* ci */
            aload 10 /* dtn */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokestatic org.graalvm.component.installer.model.DistributionType.valueOf:(Ljava/lang/String;)Lorg/graalvm/component/installer/model/DistributionType;
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setDistributionType:(Lorg/graalvm/component/installer/model/DistributionType;)V
        63: .line 390
            goto 68
      StackMap locals: java.util.Properties org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.Feedback java.lang.String java.lang.String java.util.Set java.util.List java.lang.String java.lang.String java.lang.String java.lang.String
      StackMap stack: java.lang.IllegalArgumentException
        64: pop
        65: .line 391
            new org.graalvm.component.installer.MetadataException
            dup
            ldc "x-GraalVM-Component-Distribution"
        66: .line 392
            aload 2 /* fb */
            ldc Lorg/graalvm/component/installer/persist/DirectoryStorage;
            invokeinterface org.graalvm.component.installer.Feedback.withBundle:(Ljava/lang/Class;)Lorg/graalvm/component/installer/Feedback;
            ldc "ERROR_InvalidDistributionType"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 10 /* dtn */
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.l10n:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        67: .line 391
            invokespecial org.graalvm.component.installer.MetadataException.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            athrow
        68: .line 394
      StackMap locals:
      StackMap stack:
            aload 1 /* ci */
            areturn
        end local 10 // java.lang.String dtn
        end local 9 // java.lang.String u
        end local 8 // java.lang.String postInst
        end local 7 // java.lang.String licType
        end local 6 // java.util.List ll
        end local 5 // java.util.Set deps
        end local 4 // java.lang.String license
        end local 3 // java.lang.String stability
        end local 2 // org.graalvm.component.installer.Feedback fb
        end local 1 // org.graalvm.component.installer.model.ComponentInfo ci
        end local 0 // java.util.Properties loaded
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   69     0     loaded  Ljava/util/Properties;
            0   69     1         ci  Lorg/graalvm/component/installer/model/ComponentInfo;
            0   69     2         fb  Lorg/graalvm/component/installer/Feedback;
            1   69     3  stability  Ljava/lang/String;
            4   69     4    license  Ljava/lang/String;
            9   26     5          s  Ljava/lang/String;
           11   13     7          k  Ljava/lang/String;
           12   13     8          v  Ljava/lang/String;
           15   26     7          k  Ljava/lang/String;
           16   26     8          v  Ljava/lang/String;
           19   26     9        val  Ljava/lang/String;
           21   22    10          o  Ljava/lang/Object;
           23   24    10          o  Ljava/lang/Object;
           25   26    10          o  Ljava/lang/Object;
           28   69     5       deps  Ljava/util/Set<Ljava/lang/String;>;
           30   33     6          s  Ljava/lang/String;
           31   33    10          p  Ljava/lang/String;
           40   69     6         ll  Ljava/util/List<Ljava/lang/String;>;
           42   46     7          s  Ljava/lang/String;
           43   46    11          p  Ljava/lang/String;
           50   69     7    licType  Ljava/lang/String;
           53   69     8   postInst  Ljava/lang/String;
           55   56     9       text  Ljava/lang/String;
           57   69     9          u  Ljava/lang/String;
           62   69    10        dtn  Ljava/lang/String;
      Exception table:
        from    to  target  type
          58    59      60  Class java.net.MalformedURLException
          62    63      64  Class java.lang.IllegalArgumentException
    MethodParameters:
        Name  Flags
      loaded  
      ci      
      fb      

  private org.graalvm.component.installer.model.ComponentInfo getCoreInfo();
    descriptor: ()Lorg/graalvm/component/installer/model/ComponentInfo;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 398
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalCore:Lorg/graalvm/component/installer/model/ComponentInfo;
            ifnull 2
         1: .line 399
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalCore:Lorg/graalvm/component/installer/model/ComponentInfo;
            areturn
         2: .line 401
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.getGraalVMVersion:()Lorg/graalvm/component/installer/Version;
            astore 1 /* v */
        start local 1 // org.graalvm.component.installer.Version v
         3: .line 402
            new org.graalvm.component.installer.model.ComponentInfo
            dup
            ldc "org.graalvm"
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "NAME_GraalCoreComponent"
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.graalvm.component.installer.Feedback.l10n:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         4: .line 403
            aload 1 /* v */
            invokevirtual org.graalvm.component.installer.Version.originalString:()Ljava/lang/String;
         5: .line 402
            invokespecial org.graalvm.component.installer.model.ComponentInfo.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 2 /* ci */
        start local 2 // org.graalvm.component.installer.model.ComponentInfo ci
         6: .line 404
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            ldc "org.graalvm.meta"
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* cmpFile */
        start local 3 // java.nio.file.Path cmpFile
         7: .line 405
            aload 3 /* cmpFile */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 9
         8: .line 406
            aload 2 /* ci */
            iconst_1
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setNativeComponent:(Z)V
         9: .line 408
      StackMap locals: org.graalvm.component.installer.Version org.graalvm.component.installer.model.ComponentInfo java.nio.file.Path
      StackMap stack:
            aload 0 /* this */
            aload 2 /* ci */
            putfield org.graalvm.component.installer.persist.DirectoryStorage.graalCore:Lorg/graalvm/component/installer/model/ComponentInfo;
        10: .line 409
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalCore:Lorg/graalvm/component/installer/model/ComponentInfo;
            areturn
        end local 3 // java.nio.file.Path cmpFile
        end local 2 // org.graalvm.component.installer.model.ComponentInfo ci
        end local 1 // org.graalvm.component.installer.Version v
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0     this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            3   11     1        v  Lorg/graalvm/component/installer/Version;
            6   11     2       ci  Lorg/graalvm/component/installer/model/ComponentInfo;
            7   11     3  cmpFile  Ljava/nio/file/Path;

  public java.util.Set<org.graalvm.component.installer.model.ComponentInfo> loadComponentMetadata(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.lang.String tag
         0: .line 414
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 1 /* tag */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".component"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* cmpFile */
        start local 2 // java.nio.file.Path cmpFile
         1: .line 415
            iconst_0
            istore 3 /* nc */
        start local 3 // boolean nc
         2: .line 416
            aload 2 /* cmpFile */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 9
         3: .line 417
            ldc "org.graalvm"
            aload 1 /* tag */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 418
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.getCoreInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
            areturn
         5: .line 420
      StackMap locals: java.nio.file.Path int
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 1 /* tag */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".meta"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* cmpFile */
         6: .line 421
            aload 2 /* cmpFile */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 8
         7: .line 422
            aconst_null
            areturn
         8: .line 424
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 3 /* nc */
         9: .line 426
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4
            aconst_null
            astore 5
        10: aload 2 /* cmpFile */
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.newInputStream:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;
            astore 6 /* fileStream */
        start local 6 // java.io.InputStream fileStream
        11: .line 427
            aload 0 /* this */
            aload 6 /* fileStream */
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.loadMetadataFrom:(Ljava/io/InputStream;)Lorg/graalvm/component/installer/model/ComponentInfo;
            astore 7 /* info */
        start local 7 // org.graalvm.component.installer.model.ComponentInfo info
        12: .line 428
            aload 7 /* info */
            aload 2 /* cmpFile */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setInfoPath:(Ljava/lang/String;)V
        13: .line 429
            aload 7 /* info */
            iload 3 /* nc */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setNativeComponent:(Z)V
        14: .line 430
            aload 7 /* info */
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
        15: .line 431
            aload 6 /* fileStream */
            ifnull 16
            aload 6 /* fileStream */
            invokevirtual java.io.InputStream.close:()V
        16: .line 430
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.lang.String java.nio.file.Path int java.lang.Throwable java.lang.Throwable java.io.InputStream org.graalvm.component.installer.model.ComponentInfo
      StackMap stack: java.util.Set
            areturn
        end local 7 // org.graalvm.component.installer.model.ComponentInfo info
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.lang.String java.nio.file.Path int java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
        17: astore 4
        18: .line 431
            aload 6 /* fileStream */
            ifnull 19
            aload 6 /* fileStream */
            invokevirtual java.io.InputStream.close:()V
        end local 6 // java.io.InputStream fileStream
      StackMap locals:
      StackMap stack:
        19: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 5
            aload 4
            ifnonnull 21
            aload 5
            astore 4
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 4
            aload 5
            if_acmpeq 22
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        22: aload 4
            athrow
        end local 3 // boolean nc
        end local 2 // java.nio.file.Path cmpFile
        end local 1 // java.lang.String tag
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   23     0        this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   23     1         tag  Ljava/lang/String;
            1   23     2     cmpFile  Ljava/nio/file/Path;
            2   23     3          nc  Z
           11   19     6  fileStream  Ljava/io/InputStream;
           12   17     7        info  Lorg/graalvm/component/installer/model/ComponentInfo;
      Exception table:
        from    to  target  type
          11    15      17  any
          10    16      20  any
          17    20      20  any
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;)Ljava/util/Set<Lorg/graalvm/component/installer/model/ComponentInfo;>;
    MethodParameters:
      Name  Flags
      tag   

  public org.graalvm.component.installer.model.ComponentInfo loadComponentFiles(org.graalvm.component.installer.model.ComponentInfo);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;)Lorg/graalvm/component/installer/model/ComponentInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentInfo ci
         0: .line 443
            aload 1 /* ci */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getId:()Ljava/lang/String;
            astore 2 /* tag */
        start local 2 // java.lang.String tag
         1: .line 444
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 2 /* tag */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".filelist"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* listFile */
        start local 3 // java.nio.file.Path listFile
         2: .line 445
            aload 3 /* listFile */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 4
         3: .line 446
            aload 1 /* ci */
            areturn
         4: .line 448
      StackMap locals: java.lang.String java.nio.file.Path
      StackMap stack:
            aload 3 /* listFile */
            invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;)Ljava/util/List;
            astore 4 /* s */
        start local 4 // java.util.List s
         5: .line 450
            new java.util.HashSet
            dup
            aload 4 /* s */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.HashSet.<init>:(I)V
            astore 5 /* result */
        start local 5 // java.util.Set result
         6: .line 451
            aload 4 /* s */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 12
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage org.graalvm.component.installer.model.ComponentInfo java.lang.String java.nio.file.Path java.util.List java.util.Set top java.util.Iterator
      StackMap stack:
         7: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* e */
        start local 6 // java.lang.String e
         8: .line 452
            aload 6 /* e */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 8 /* trimmed */
        start local 8 // java.lang.String trimmed
         9: .line 453
            aload 8 /* trimmed */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 12
        10: .line 454
            aconst_null
            aload 8 /* trimmed */
            invokestatic org.graalvm.component.installer.SystemUtils.checkCommonRelative:(Ljava/nio/file/Path;Ljava/lang/String;)V
        11: .line 455
            aload 5 /* result */
            aload 8 /* trimmed */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.lang.String trimmed
        end local 6 // java.lang.String e
        12: .line 451
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        13: .line 458
            new java.util.ArrayList
            dup
            aload 5 /* result */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 4 /* s */
        14: .line 459
            aload 4 /* s */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
        15: .line 460
            aload 1 /* ci */
            aload 4 /* s */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.addPaths:(Ljava/util/List;)V
        16: .line 461
            aload 1 /* ci */
            areturn
        end local 5 // java.util.Set result
        end local 4 // java.util.List s
        end local 3 // java.nio.file.Path listFile
        end local 2 // java.lang.String tag
        end local 1 // org.graalvm.component.installer.model.ComponentInfo ci
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   17     1        ci  Lorg/graalvm/component/installer/model/ComponentInfo;
            1   17     2       tag  Ljava/lang/String;
            2   17     3  listFile  Ljava/nio/file/Path;
            5   17     4         s  Ljava/util/List<Ljava/lang/String;>;
            6   17     5    result  Ljava/util/Set<Ljava/lang/String;>;
            8   12     6         e  Ljava/lang/String;
            9   12     8   trimmed  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ci    

  private java.lang.String getRequiredProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.lang.String key
         0: .line 465
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.loaded:Ljava/util/Properties;
            aload 1 /* key */
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* val */
        start local 2 // java.lang.String val
         1: .line 466
            aload 2 /* val */
            ifnonnull 3
         2: .line 467
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "STORAGE_CorruptedComponentStorage"
            aconst_null
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
         3: .line 469
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* val */
            areturn
        end local 2 // java.lang.String val
        end local 1 // java.lang.String key
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0    4     1   key  Ljava/lang/String;
            1    4     2   val  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   

  public java.util.Map<java.lang.String, java.util.Collection<java.lang.String>> readReplacedFiles();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=13, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 475
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            ldc "replaced-files.properties"
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonString:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 1 /* replacedPath */
        start local 1 // java.nio.file.Path replacedPath
         1: .line 476
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* result */
        start local 2 // java.util.Map result
         2: .line 477
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 3 /* props */
        start local 3 // java.util.Properties props
         3: .line 478
            aload 1 /* replacedPath */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 5
         4: .line 479
            aload 2 /* result */
            areturn
         5: .line 481
      StackMap locals: java.nio.file.Path java.util.Map java.util.Properties
      StackMap stack:
            aconst_null
            astore 4
            aconst_null
            astore 5
         6: aload 1 /* replacedPath */
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.newInputStream:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;
            astore 6 /* is */
        start local 6 // java.io.InputStream is
         7: .line 482
            aload 3 /* props */
            aload 6 /* is */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         8: .line 483
            aload 6 /* is */
            ifnull 14
            aload 6 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 14
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path java.util.Map java.util.Properties java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
         9: astore 4
            aload 6 /* is */
            ifnull 10
            aload 6 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 6 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
        10: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 5
            aload 4
            ifnonnull 12
            aload 5
            astore 4
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 4
            aload 5
            if_acmpeq 13
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        13: aload 4
            athrow
        14: .line 484
      StackMap locals:
      StackMap stack:
            aload 3 /* props */
            invokevirtual java.util.Properties.propertyNames:()Ljava/util/Enumeration;
            invokestatic java.util.Collections.list:(Ljava/util/Enumeration;)Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 5
            goto 29
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path java.util.Map java.util.Properties top java.util.Iterator
      StackMap stack:
        15: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* s */
        start local 4 // java.lang.String s
        16: .line 485
            aload 3 /* props */
            aload 4 /* s */
            ldc ""
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* files */
        start local 6 // java.lang.String files
        17: .line 486
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 7 /* unsorted */
        start local 7 // java.util.Collection unsorted
        18: .line 487
            aload 6 /* files */
            ldc " *, *"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 25
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path java.util.Map java.util.Properties java.lang.String java.util.Iterator java.lang.String java.util.Collection top int int java.lang.String[]
      StackMap stack:
        19: aload 11
            iload 9
            aaload
            astore 8 /* x */
        start local 8 // java.lang.String x
        20: .line 488
            aload 8 /* x */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 12 /* t */
        start local 12 // java.lang.String t
        21: .line 489
            aload 12 /* t */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 24
        22: .line 490
            aconst_null
            aload 12 /* t */
            invokestatic org.graalvm.component.installer.SystemUtils.checkCommonRelative:(Ljava/nio/file/Path;Ljava/lang/String;)V
        23: .line 491
            aload 7 /* unsorted */
            aload 12 /* t */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // java.lang.String t
        end local 8 // java.lang.String x
        24: .line 487
      StackMap locals:
      StackMap stack:
            iinc 9 1
      StackMap locals:
      StackMap stack:
        25: iload 9
            iload 10
            if_icmplt 19
        26: .line 494
            new java.util.ArrayList
            dup
            aload 7 /* unsorted */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 8 /* components */
        start local 8 // java.util.List components
        27: .line 495
            aload 8 /* components */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
        28: .line 496
            aload 2 /* result */
            aload 4 /* s */
            aload 8 /* components */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // java.util.List components
        end local 7 // java.util.Collection unsorted
        end local 6 // java.lang.String files
        end local 4 // java.lang.String s
        29: .line 484
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path java.util.Map java.util.Properties top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        30: .line 498
            aload 2 /* result */
            areturn
        end local 3 // java.util.Properties props
        end local 2 // java.util.Map result
        end local 1 // java.nio.file.Path replacedPath
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   31     0          this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            1   31     1  replacedPath  Ljava/nio/file/Path;
            2   31     2        result  Ljava/util/Map<Ljava/lang/String;Ljava/util/Collection<Ljava/lang/String;>;>;
            3   31     3         props  Ljava/util/Properties;
            7   10     6            is  Ljava/io/InputStream;
           16   29     4             s  Ljava/lang/String;
           17   29     6         files  Ljava/lang/String;
           18   29     7      unsorted  Ljava/util/Collection<Ljava/lang/String;>;
           20   24     8             x  Ljava/lang/String;
           21   24    12             t  Ljava/lang/String;
           27   29     8    components  Ljava/util/List<Ljava/lang/String;>;
      Exception table:
        from    to  target  type
           7     8       9  any
           6    11      11  any
    Exceptions:
      throws java.io.IOException
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/util/Collection<Ljava/lang/String;>;>;

  public void updateReplacedFiles(java.util.Map<java.lang.String, java.util.Collection<java.lang.String>>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.util.Map replacedFiles
         0: .line 503
            new org.graalvm.component.installer.persist.SortedProperties
            dup
            invokespecial org.graalvm.component.installer.persist.SortedProperties.<init>:()V
            astore 2 /* props */
        start local 2 // java.util.Properties props
         1: .line 504
            aload 1 /* replacedFiles */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.util.Map java.util.Properties top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* k */
        start local 3 // java.lang.String k
         3: .line 505
            new java.util.ArrayList
            dup
            aload 1 /* replacedFiles */
            aload 3 /* k */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 5 /* ids */
        start local 5 // java.util.List ids
         4: .line 506
            aload 5 /* ids */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         5: .line 507
            aload 2 /* props */
            aload 3 /* k */
            ldc ","
            aload 5 /* ids */
            invokestatic java.lang.String.join:(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
            invokevirtual java.util.Properties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        end local 5 // java.util.List ids
        end local 3 // java.lang.String k
         6: .line 504
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 509
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            ldc "replaced-files.properties"
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonString:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* replacedPath */
        start local 3 // java.nio.file.Path replacedPath
         8: .line 510
            aload 2 /* props */
            invokevirtual java.util.Properties.isEmpty:()Z
            ifeq 11
         9: .line 511
            aload 3 /* replacedPath */
            invokestatic java.nio.file.Files.deleteIfExists:(Ljava/nio/file/Path;)Z
            pop
        10: .line 512
            goto 22
        11: .line 513
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.util.Map java.util.Properties java.nio.file.Path
      StackMap stack:
            aconst_null
            astore 4
            aconst_null
            astore 5
        12: aload 3 /* replacedPath */
            iconst_2
            anewarray java.nio.file.OpenOption
            dup
            iconst_0
        13: .line 514
            getstatic java.nio.file.StandardOpenOption.CREATE:Ljava/nio/file/StandardOpenOption;
            aastore
            dup
            iconst_1
            getstatic java.nio.file.StandardOpenOption.TRUNCATE_EXISTING:Ljava/nio/file/StandardOpenOption;
            aastore
        14: .line 513
            invokestatic java.nio.file.Files.newOutputStream:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStream;
            astore 6 /* os */
        start local 6 // java.io.OutputStream os
        15: .line 515
            aload 2 /* props */
            aload 6 /* os */
            aconst_null
            invokevirtual java.util.Properties.store:(Ljava/io/OutputStream;Ljava/lang/String;)V
        16: .line 516
            aload 6 /* os */
            ifnull 22
            aload 6 /* os */
            invokevirtual java.io.OutputStream.close:()V
            goto 22
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.util.Map java.util.Properties java.nio.file.Path java.lang.Throwable java.lang.Throwable java.io.OutputStream
      StackMap stack: java.lang.Throwable
        17: astore 4
            aload 6 /* os */
            ifnull 18
            aload 6 /* os */
            invokevirtual java.io.OutputStream.close:()V
        end local 6 // java.io.OutputStream os
      StackMap locals:
      StackMap stack:
        18: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        19: astore 5
            aload 4
            ifnonnull 20
            aload 5
            astore 4
            goto 21
      StackMap locals:
      StackMap stack:
        20: aload 4
            aload 5
            if_acmpeq 21
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        21: aload 4
            athrow
        22: .line 518
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.nio.file.Path replacedPath
        end local 2 // java.util.Properties props
        end local 1 // java.util.Map replacedFiles
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0           this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   23     1  replacedFiles  Ljava/util/Map<Ljava/lang/String;Ljava/util/Collection<Ljava/lang/String;>;>;
            1   23     2          props  Ljava/util/Properties;
            3    6     3              k  Ljava/lang/String;
            4    6     5            ids  Ljava/util/List<Ljava/lang/String;>;
            8   23     3   replacedPath  Ljava/nio/file/Path;
           15   18     6             os  Ljava/io/OutputStream;
      Exception table:
        from    to  target  type
          15    16      17  any
          12    19      19  any
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/util/Collection<Ljava/lang/String;>;>;)V
    MethodParameters:
               Name  Flags
      replacedFiles  

  public void deleteComponent(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.lang.String id
         0: .line 528
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 1 /* id */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".component"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* compFile */
        start local 2 // java.nio.file.Path compFile
         1: .line 529
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 1 /* id */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".filelist"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* listFile */
        start local 3 // java.nio.file.Path listFile
         2: .line 530
            aload 2 /* compFile */
            invokestatic java.nio.file.Files.deleteIfExists:(Ljava/nio/file/Path;)Z
            pop
         3: .line 531
            aload 3 /* listFile */
            invokestatic java.nio.file.Files.deleteIfExists:(Ljava/nio/file/Path;)Z
            pop
         4: .line 532
            return
        end local 3 // java.nio.file.Path listFile
        end local 2 // java.nio.file.Path compFile
        end local 1 // java.lang.String id
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0    5     1        id  Ljava/lang/String;
            1    5     2  compFile  Ljava/nio/file/Path;
            2    5     3  listFile  Ljava/nio/file/Path;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      id    

  public void saveComponent(org.graalvm.component.installer.model.ComponentInfo);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentInfo info
         0: .line 544
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.verifyUserAccess:()V
         1: .line 545
            aload 1 /* info */
            ifnonnull 3
         2: .line 546
            return
         3: .line 548
      StackMap locals:
      StackMap stack:
            aload 1 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.isNativeComponent:()Z
            ifeq 5
         4: .line 549
            return
         5: .line 551
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 1 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getId:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".component"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* cmpFile */
        start local 2 // java.nio.file.Path cmpFile
         6: .line 552
            aconst_null
            astore 3
            aconst_null
            astore 4
         7: aload 2 /* cmpFile */
            iconst_2
            anewarray java.nio.file.OpenOption
            dup
            iconst_0
            getstatic java.nio.file.StandardOpenOption.CREATE:Ljava/nio/file/StandardOpenOption;
            aastore
            dup
            iconst_1
         8: .line 553
            getstatic java.nio.file.StandardOpenOption.TRUNCATE_EXISTING:Ljava/nio/file/StandardOpenOption;
            aastore
         9: .line 552
            invokestatic java.nio.file.Files.newOutputStream:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStream;
            astore 5 /* compFile */
        start local 5 // java.io.OutputStream compFile
        10: .line 554
            aload 1 /* info */
            invokestatic org.graalvm.component.installer.persist.DirectoryStorage.metaToProperties:(Lorg/graalvm/component/installer/model/ComponentInfo;)Ljava/util/Properties;
            aload 5 /* compFile */
            aconst_null
            invokevirtual java.util.Properties.store:(Ljava/io/OutputStream;Ljava/lang/String;)V
        11: .line 555
            aload 5 /* compFile */
            ifnull 17
            aload 5 /* compFile */
            invokevirtual java.io.OutputStream.close:()V
            goto 17
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage org.graalvm.component.installer.model.ComponentInfo java.nio.file.Path java.lang.Throwable java.lang.Throwable java.io.OutputStream
      StackMap stack: java.lang.Throwable
        12: astore 3
            aload 5 /* compFile */
            ifnull 13
            aload 5 /* compFile */
            invokevirtual java.io.OutputStream.close:()V
        end local 5 // java.io.OutputStream compFile
      StackMap locals:
      StackMap stack:
        13: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 4
            aload 3
            ifnonnull 15
            aload 4
            astore 3
            goto 16
      StackMap locals:
      StackMap stack:
        15: aload 3
            aload 4
            if_acmpeq 16
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        16: aload 3
            athrow
        17: .line 556
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* info */
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.saveComponentFileList:(Lorg/graalvm/component/installer/model/ComponentInfo;)V
        18: .line 557
            return
        end local 2 // java.nio.file.Path cmpFile
        end local 1 // org.graalvm.component.installer.model.ComponentInfo info
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   19     0      this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   19     1      info  Lorg/graalvm/component/installer/model/ComponentInfo;
            6   19     2   cmpFile  Ljava/nio/file/Path;
           10   13     5  compFile  Ljava/io/OutputStream;
      Exception table:
        from    to  target  type
          10    11      12  any
           7    14      14  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      info  

  public static java.util.Properties metaToProperties(org.graalvm.component.installer.model.ComponentInfo);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;)Ljava/util/Properties;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // org.graalvm.component.installer.model.ComponentInfo info
         0: .line 560
            new org.graalvm.component.installer.persist.SortedProperties
            dup
            invokespecial org.graalvm.component.installer.persist.SortedProperties.<init>:()V
            astore 1 /* p */
        start local 1 // org.graalvm.component.installer.persist.SortedProperties p
         1: .line 561
            aload 1 /* p */
            ldc "Bundle-Symbolic-Name"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getId:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 562
            aload 1 /* p */
            ldc "Bundle-Name"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getName:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
         3: .line 563
            aload 1 /* p */
            ldc "Bundle-Version"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getVersionString:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
         4: .line 564
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getTag:()Ljava/lang/String;
            astore 2 /* s */
        start local 2 // java.lang.String s
         5: .line 565
            aload 2 /* s */
            ifnull 7
            aload 2 /* s */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 7
         6: .line 566
            aload 1 /* p */
            ldc "x-GraalVM-Serial"
            aload 2 /* s */
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
         7: .line 568
      StackMap locals: org.graalvm.component.installer.persist.SortedProperties java.lang.String
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getLicensePath:()Ljava/lang/String;
            ifnull 9
         8: .line 569
            aload 1 /* p */
            ldc "x-GraalVM-License-Path"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getLicensePath:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
         9: .line 571
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getLicenseType:()Ljava/lang/String;
            ifnull 11
        10: .line 572
            aload 1 /* p */
            ldc "x-GraalVM-License-Type"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getLicenseType:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        11: .line 574
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getStability:()Lorg/graalvm/component/installer/model/StabilityLevel;
            getstatic org.graalvm.component.installer.model.StabilityLevel.Undefined:Lorg/graalvm/component/installer/model/StabilityLevel;
            if_acmpeq 13
        12: .line 575
            aload 1 /* p */
            ldc "x-GraalVM-Stability"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getStability:()Lorg/graalvm/component/installer/model/StabilityLevel;
            invokevirtual org.graalvm.component.installer.model.StabilityLevel.toString:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        13: .line 577
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getRequiredGraalValues:()Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 19
      StackMap locals: org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.persist.SortedProperties java.lang.String top java.util.Iterator
      StackMap stack:
        14: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* k */
        start local 3 // java.lang.String k
        15: .line 578
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getRequiredGraalValues:()Ljava/util/Map;
            aload 3 /* k */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* v */
        start local 5 // java.lang.String v
        16: .line 579
            aload 5 /* v */
            ifnonnull 18
        17: .line 580
            ldc ""
            astore 5 /* v */
        18: .line 582
      StackMap locals: org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.persist.SortedProperties java.lang.String java.lang.String java.util.Iterator java.lang.String
      StackMap stack:
            aload 1 /* p */
            new java.lang.StringBuilder
            dup
            ldc "Bundle-RequireCapability-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* k */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* v */
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        end local 5 // java.lang.String v
        end local 3 // java.lang.String k
        19: .line 577
      StackMap locals: org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.persist.SortedProperties java.lang.String top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        20: .line 584
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getProvidedValues:()Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 30
      StackMap locals:
      StackMap stack:
        21: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* k */
        start local 3 // java.lang.String k
        22: .line 585
            aload 0 /* info */
            aload 3 /* k */
            ldc Ljava/lang/Object;
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getProvidedValue:(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            astore 5 /* o */
        start local 5 // java.lang.Object o
        23: .line 587
            aload 5 /* o */
            instanceof java.lang.String
            ifeq 26
        24: .line 588
            bipush 34
            istore 6 /* t */
        start local 6 // char t
        25: .line 589
            goto 29
        end local 6 // char t
      StackMap locals: org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.persist.SortedProperties java.lang.String java.lang.String java.util.Iterator java.lang.Object
      StackMap stack:
        26: aload 5 /* o */
            instanceof org.graalvm.component.installer.Version
            ifeq 30
        27: .line 590
            bipush 86
            istore 6 /* t */
        start local 6 // char t
        28: .line 591
            aload 5 /* o */
            checkcast org.graalvm.component.installer.Version
            invokevirtual org.graalvm.component.installer.Version.originalString:()Ljava/lang/String;
            astore 5 /* o */
        29: .line 595
      StackMap locals: int
      StackMap stack:
            aload 1 /* p */
            new java.lang.StringBuilder
            dup
            ldc "Bundle-ProvideCapability-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* k */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            iload 6 /* t */
            invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* o */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        end local 6 // char t
        end local 5 // java.lang.Object o
        end local 3 // java.lang.String k
        30: .line 584
      StackMap locals: org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.persist.SortedProperties java.lang.String top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        31: .line 597
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getDependencies:()Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 33
        32: .line 598
            aload 1 /* p */
            ldc "Require-Bundle"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getDependencies:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.sequential:()Ljava/util/stream/BaseStream;
            checkcast java.util.stream.Stream
            ldc ":"
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        33: .line 600
      StackMap locals: org.graalvm.component.installer.model.ComponentInfo org.graalvm.component.installer.persist.SortedProperties java.lang.String
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getPostinstMessage:()Ljava/lang/String;
            ifnull 35
        34: .line 601
            aload 1 /* p */
            ldc "x-GraalVM-Message-PostInst"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getPostinstMessage:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        35: .line 603
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.isPolyglotRebuild:()Z
            ifeq 37
        36: .line 604
            aload 1 /* p */
            ldc "x-GraalVM-Polyglot-Part"
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.toString:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        37: .line 606
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getWorkingDirectories:()Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 39
        38: .line 607
            aload 1 /* p */
            ldc "x-GraalVM-Working-Directories"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getWorkingDirectories:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.sequential:()Ljava/util/stream/BaseStream;
            checkcast java.util.stream.Stream
            ldc ":"
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        39: .line 609
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getDistributionType:()Lorg/graalvm/component/installer/model/DistributionType;
            getstatic org.graalvm.component.installer.model.DistributionType.OPTIONAL:Lorg/graalvm/component/installer/model/DistributionType;
            if_acmpeq 41
        40: .line 610
            aload 1 /* p */
            ldc "x-GraalVM-Component-Distribution"
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getDistributionType:()Lorg/graalvm/component/installer/model/DistributionType;
            invokevirtual org.graalvm.component.installer.model.DistributionType.name:()Ljava/lang/String;
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        41: .line 612
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getRemoteURL:()Ljava/net/URL;
            astore 3 /* u */
        start local 3 // java.net.URL u
        42: .line 613
            aload 3 /* u */
            ifnull 44
        43: .line 614
            aload 1 /* p */
            ldc "x-GraalVM-Component-Origin"
            aload 3 /* u */
            invokevirtual java.net.URL.toString:()Ljava/lang/String;
            invokevirtual org.graalvm.component.installer.persist.SortedProperties.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
        44: .line 616
      StackMap locals: java.net.URL
      StackMap stack:
            aload 1 /* p */
            areturn
        end local 3 // java.net.URL u
        end local 2 // java.lang.String s
        end local 1 // org.graalvm.component.installer.persist.SortedProperties p
        end local 0 // org.graalvm.component.installer.model.ComponentInfo info
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   45     0  info  Lorg/graalvm/component/installer/model/ComponentInfo;
            1   45     1     p  Lorg/graalvm/component/installer/persist/SortedProperties;
            5   45     2     s  Ljava/lang/String;
           15   19     3     k  Ljava/lang/String;
           16   19     5     v  Ljava/lang/String;
           22   30     3     k  Ljava/lang/String;
           23   30     5     o  Ljava/lang/Object;
           25   26     6     t  C
           28   30     6     t  C
           42   45     3     u  Ljava/net/URL;
    MethodParameters:
      Name  Flags
      info  

  void saveComponentFileList(org.graalvm.component.installer.model.ComponentInfo);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentInfo info
         0: .line 620
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 1 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getId:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".filelist"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* listFile */
        start local 2 // java.nio.file.Path listFile
         1: .line 621
            new java.util.ArrayList
            dup
            new java.util.HashSet
            dup
            aload 1 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getPaths:()Ljava/util/List;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 3 /* entries */
        start local 3 // java.util.List entries
         2: .line 622
            aload 3 /* entries */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         3: .line 624
            aload 2 /* listFile */
            aload 3 /* entries */
            iconst_2
            anewarray java.nio.file.OpenOption
            dup
            iconst_0
            getstatic java.nio.file.StandardOpenOption.CREATE:Ljava/nio/file/StandardOpenOption;
            aastore
            dup
            iconst_1
         4: .line 625
            getstatic java.nio.file.StandardOpenOption.TRUNCATE_EXISTING:Ljava/nio/file/StandardOpenOption;
            aastore
         5: .line 624
            invokestatic java.nio.file.Files.write:(Ljava/nio/file/Path;Ljava/lang/Iterable;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
            pop
         6: .line 626
            return
        end local 3 // java.util.List entries
        end local 2 // java.nio.file.Path listFile
        end local 1 // org.graalvm.component.installer.model.ComponentInfo info
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0    7     1      info  Lorg/graalvm/component/installer/model/ComponentInfo;
            1    7     2  listFile  Ljava/nio/file/Path;
            2    7     3   entries  Ljava/util/List<Ljava/lang/String;>;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      info  

  private static java.lang.String transliterateLicenseId(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String licenseID
         0: .line 629
            aload 0 /* licenseID */
            ldc "[^-\\p{Alnum}.,_()@^{}~]"
            ldc "_"
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String licenseID
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  licenseID  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      licenseID  

  public java.util.Date licenseAccepted(org.graalvm.component.installer.model.ComponentInfo, java.lang.String);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;Ljava/lang/String;)Ljava/util/Date;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentInfo info
        start local 2 // java.lang.String licenseID
         0: .line 634
            invokestatic org.graalvm.component.installer.SystemUtils.isLicenseTrackingEnabled:()Z
            ifne 2
         1: .line 635
            aconst_null
            areturn
         2: .line 637
      StackMap locals:
      StackMap stack:
            aload 2 /* licenseID */
            invokestatic org.graalvm.component.installer.persist.DirectoryStorage.transliterateLicenseId:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* id */
        start local 3 // java.lang.String id
         3: .line 639
            ldc "licenses/{0}.accepted/_all"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* id */
            aastore
            dup
            iconst_1
            aload 1 /* info */
            ifnonnull 4
            ldc "_all"
            goto 5
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage org.graalvm.component.installer.model.ComponentInfo java.lang.String java.lang.String
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int
         4: aload 1 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getId:()Ljava/lang/String;
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage org.graalvm.component.installer.model.ComponentInfo java.lang.String java.lang.String
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.String
         5: aastore
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 4 /* fn */
        start local 4 // java.lang.String fn
         6: .line 640
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            aload 4 /* fn */
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 5 /* listFile */
        start local 5 // java.nio.file.Path listFile
         7: .line 641
            aload 5 /* listFile */
            invokestatic java.nio.file.Files.isReadable:(Ljava/nio/file/Path;)Z
            ifne 9
         8: .line 642
            aconst_null
            areturn
         9: .line 644
      StackMap locals: java.lang.String java.nio.file.Path
      StackMap stack:
            new java.util.Date
            dup
            aload 5 /* listFile */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.getLastModifiedTime:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileTime;
            invokevirtual java.nio.file.attribute.FileTime.toMillis:()J
            invokespecial java.util.Date.<init>:(J)V
        10: areturn
        end local 5 // java.nio.file.Path listFile
        end local 4 // java.lang.String fn
        11: .line 645
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage org.graalvm.component.installer.model.ComponentInfo java.lang.String java.lang.String
      StackMap stack: java.io.IOException
            astore 4 /* ex */
        start local 4 // java.io.IOException ex
        12: .line 646
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "ERR_CannotReadAcceptance"
            aload 4 /* ex */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* licenseID */
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 4 // java.io.IOException ex
        end local 3 // java.lang.String id
        end local 2 // java.lang.String licenseID
        end local 1 // org.graalvm.component.installer.model.ComponentInfo info
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   13     1       info  Lorg/graalvm/component/installer/model/ComponentInfo;
            0   13     2  licenseID  Ljava/lang/String;
            3   13     3         id  Ljava/lang/String;
            6   11     4         fn  Ljava/lang/String;
            7   11     5   listFile  Ljava/nio/file/Path;
           12   13     4         ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     8      11  Class java.io.IOException
           9    10      11  Class java.io.IOException
    MethodParameters:
           Name  Flags
      info       
      licenseID  

  public java.util.Map<java.lang.String, java.util.Collection<java.lang.String>> findAcceptedLicenses();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 652
            invokestatic org.graalvm.component.installer.SystemUtils.isLicenseTrackingEnabled:()Z
            ifne 2
         1: .line 653
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            areturn
         2: .line 655
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            ldc "licenses"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* licDir */
        start local 1 // java.nio.file.Path licDir
         3: .line 656
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* result */
        start local 2 // java.util.Map result
         4: .line 658
            aload 1 /* licDir */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 7
         5: .line 659
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
         6: areturn
         7: .line 661
      StackMap locals: java.nio.file.Path java.util.Map
      StackMap stack:
            aload 1 /* licDir */
            iconst_0
            anewarray java.nio.file.FileVisitOption
            invokestatic java.nio.file.Files.walk:(Ljava/nio/file/Path;[Ljava/nio/file/FileVisitOption;)Ljava/util/stream/Stream;
            aload 0 /* this */
            aload 1 /* licDir */
            aload 2 /* result */
            invokedynamic accept(Lorg/graalvm/component/installer/persist/DirectoryStorage;Ljava/nio/file/Path;Ljava/util/Map;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  org/graalvm/component/installer/persist/DirectoryStorage.lambda$0(Ljava/nio/file/Path;Ljava/util/Map;Ljava/nio/file/Path;)V (7)
                  (Ljava/nio/file/Path;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
         8: .line 689
            goto 13
      StackMap locals:
      StackMap stack: java.io.UncheckedIOException
         9: astore 3 /* ex */
        start local 3 // java.io.UncheckedIOException ex
        10: .line 690
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "ERR_CannotReadAcceptance"
            aload 3 /* ex */
            invokevirtual java.io.UncheckedIOException.getCause:()Ljava/io/IOException;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "(all)"
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.io.UncheckedIOException ex
        11: .line 691
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* ex */
        start local 3 // java.io.IOException ex
        12: .line 692
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "ERR_CannotReadAcceptance"
            aload 3 /* ex */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "(all)"
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.io.IOException ex
        13: .line 694
      StackMap locals:
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // java.util.Map result
        end local 1 // java.nio.file.Path licDir
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            3   14     1  licDir  Ljava/nio/file/Path;
            4   14     2  result  Ljava/util/Map<Ljava/lang/String;Ljava/util/Collection<Ljava/lang/String;>;>;
           10   11     3      ex  Ljava/io/UncheckedIOException;
           12   13     3      ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     6       9  Class java.io.UncheckedIOException
           7     8       9  Class java.io.UncheckedIOException
           4     6      11  Class java.io.IOException
           7     8      11  Class java.io.IOException
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/util/Collection<Ljava/lang/String;>;>;

  public void recordLicenseAccepted(org.graalvm.component.installer.model.ComponentInfo, java.lang.String, java.lang.String, java.util.Date);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=11, args_size=5
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentInfo info
        start local 2 // java.lang.String licenseID
        start local 3 // java.lang.String licenseText
        start local 4 // java.util.Date d
         0: .line 699
            invokestatic org.graalvm.component.installer.SystemUtils.isLicenseTrackingEnabled:()Z
            ifne 2
         1: .line 700
            return
         2: .line 702
      StackMap locals:
      StackMap stack:
            aload 2 /* licenseID */
            ifnonnull 5
         3: .line 703
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.persist.DirectoryStorage.clearRecordedLicenses:()V
         4: .line 704
            return
         5: .line 706
      StackMap locals:
      StackMap stack:
            aload 2 /* licenseID */
            invokestatic org.graalvm.component.installer.persist.DirectoryStorage.transliterateLicenseId:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* id */
        start local 5 // java.lang.String id
         6: .line 707
            ldc "licenses/{0}.accepted/_all"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* id */
            aastore
            dup
            iconst_1
            aload 1 /* info */
            ifnonnull 7
            ldc "_all"
            goto 8
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage org.graalvm.component.installer.model.ComponentInfo java.lang.String java.lang.String java.util.Date java.lang.String
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int
         7: aload 1 /* info */
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getId:()Ljava/lang/String;
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage org.graalvm.component.installer.model.ComponentInfo java.lang.String java.lang.String java.util.Date java.lang.String
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.String
         8: aastore
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 6 /* fn */
        start local 6 // java.lang.String fn
         9: .line 708
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            aload 6 /* fn */
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 7 /* listFile */
        start local 7 // java.nio.file.Path listFile
        10: .line 709
            aload 7 /* listFile */
            ifnonnull 12
        11: .line 710
            new java.lang.IllegalArgumentException
            dup
            aload 2 /* licenseID */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 712
      StackMap locals: java.lang.String java.nio.file.Path
      StackMap stack:
            aload 7 /* listFile */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            astore 8 /* dir */
        start local 8 // java.nio.file.Path dir
        13: .line 713
            aload 8 /* dir */
            ifnonnull 15
        14: .line 714
            new java.lang.IllegalArgumentException
            dup
            aload 2 /* licenseID */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 716
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aload 8 /* dir */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 24
        16: .line 718
            aload 8 /* dir */
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
        17: .line 719
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
        18: .line 720
            ldc "licenses/{0}"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* id */
            aastore
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        19: .line 719
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 9 /* contentsFile */
        start local 9 // java.nio.file.Path contentsFile
        20: .line 721
            aload 9 /* contentsFile */
            aload 3 /* licenseText */
            ldc "\n"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.write:(Ljava/nio/file/Path;Ljava/lang/Iterable;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
            pop
        21: .line 722
            aload 5 /* id */
            aload 2 /* licenseID */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 24
        22: .line 723
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            ldc "licenses/{0}.id"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* id */
            aastore
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 10 /* p */
        start local 10 // java.nio.file.Path p
        23: .line 724
            aload 10 /* p */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 2 /* licenseID */
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.write:(Ljava/nio/file/Path;Ljava/lang/Iterable;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
            pop
        end local 10 // java.nio.file.Path p
        end local 9 // java.nio.file.Path contentsFile
        24: .line 727
      StackMap locals:
      StackMap stack:
            aload 4 /* d */
            ifnonnull 25
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            goto 26
      StackMap locals:
      StackMap stack:
        25: aload 4 /* d */
      StackMap locals:
      StackMap stack: java.util.Date
        26: invokevirtual java.util.Date.toString:()Ljava/lang/String;
            astore 9 /* ds */
        start local 9 // java.lang.String ds
        27: .line 728
            aload 7 /* listFile */
            aload 9 /* ds */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            iconst_2
            anewarray java.nio.file.OpenOption
            dup
            iconst_0
            getstatic java.nio.file.StandardOpenOption.CREATE:Ljava/nio/file/StandardOpenOption;
            aastore
            dup
            iconst_1
            getstatic java.nio.file.StandardOpenOption.TRUNCATE_EXISTING:Ljava/nio/file/StandardOpenOption;
            aastore
            invokestatic java.nio.file.Files.write:(Ljava/nio/file/Path;Ljava/lang/Iterable;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
            pop
        28: .line 729
            return
        end local 9 // java.lang.String ds
        end local 8 // java.nio.file.Path dir
        end local 7 // java.nio.file.Path listFile
        end local 6 // java.lang.String fn
        end local 5 // java.lang.String id
        end local 4 // java.util.Date d
        end local 3 // java.lang.String licenseText
        end local 2 // java.lang.String licenseID
        end local 1 // org.graalvm.component.installer.model.ComponentInfo info
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   29     0          this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   29     1          info  Lorg/graalvm/component/installer/model/ComponentInfo;
            0   29     2     licenseID  Ljava/lang/String;
            0   29     3   licenseText  Ljava/lang/String;
            0   29     4             d  Ljava/util/Date;
            6   29     5            id  Ljava/lang/String;
            9   29     6            fn  Ljava/lang/String;
           10   29     7      listFile  Ljava/nio/file/Path;
           13   29     8           dir  Ljava/nio/file/Path;
           20   24     9  contentsFile  Ljava/nio/file/Path;
           23   24    10             p  Ljava/nio/file/Path;
           27   29     9            ds  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      info         
      licenseID    
      licenseText  
      d            

  void clearRecordedLicenses();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 732
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            ldc "licenses"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* listFile */
        start local 1 // java.nio.file.Path listFile
         1: .line 733
            aload 1 /* listFile */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 13
         2: .line 734
            aconst_null
            astore 2
            aconst_null
            astore 3
         3: aload 1 /* listFile */
            iconst_0
            anewarray java.nio.file.FileVisitOption
            invokestatic java.nio.file.Files.walk:(Ljava/nio/file/Path;[Ljava/nio/file/FileVisitOption;)Ljava/util/stream/Stream;
            astore 4 /* paths */
        start local 4 // java.util.stream.Stream paths
         4: .line 735
            aload 4 /* paths */
            invokestatic java.util.Comparator.reverseOrder:()Ljava/util/Comparator;
            invokeinterface java.util.stream.Stream.sorted:(Ljava/util/Comparator;)Ljava/util/stream/Stream;
            aload 1 /* listFile */
            invokedynamic accept(Ljava/nio/file/Path;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  org/graalvm/component/installer/persist/DirectoryStorage.lambda$2(Ljava/nio/file/Path;Ljava/nio/file/Path;)V (6)
                  (Ljava/nio/file/Path;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
         5: .line 745
            aload 4 /* paths */
            ifnull 13
            aload 4 /* paths */
            invokeinterface java.util.stream.Stream.close:()V
            goto 13
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path java.lang.Throwable java.lang.Throwable java.util.stream.Stream
      StackMap stack: java.lang.Throwable
         6: astore 2
            aload 4 /* paths */
            ifnull 7
            aload 4 /* paths */
            invokeinterface java.util.stream.Stream.close:()V
        end local 4 // java.util.stream.Stream paths
      StackMap locals:
      StackMap stack:
         7: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 3
            aload 2
            ifnonnull 9
            aload 3
            astore 2
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 2
            aload 3
            if_acmpeq 10
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 2
            athrow
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path
      StackMap stack: java.io.UncheckedIOException
        11: astore 2 /* ex */
        start local 2 // java.io.UncheckedIOException ex
        12: .line 746
            aload 2 /* ex */
            invokevirtual java.io.UncheckedIOException.getCause:()Ljava/io/IOException;
            athrow
        end local 2 // java.io.UncheckedIOException ex
        13: .line 749
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.file.Path listFile
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            1   14     1  listFile  Ljava/nio/file/Path;
            4    7     4     paths  Ljava/util/stream/Stream<Ljava/nio/file/Path;>;
           12   13     2        ex  Ljava/io/UncheckedIOException;
      Exception table:
        from    to  target  type
           4     5       6  any
           3     8       8  any
           2    11      11  Class java.io.UncheckedIOException
    Exceptions:
      throws java.io.IOException

  public java.lang.String licenseText(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.lang.String licID
         0: .line 753
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
         1: .line 754
            ldc "licenses/{0}"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* licID */
            invokestatic org.graalvm.component.installer.persist.DirectoryStorage.transliterateLicenseId:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         2: .line 753
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* contentsFile */
        start local 2 // java.nio.file.Path contentsFile
         3: .line 756
            aload 2 /* contentsFile */
            invokestatic java.nio.file.Files.lines:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            ldc "\n"
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.lang.String
         4: areturn
         5: .line 757
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.lang.String java.nio.file.Path
      StackMap stack: java.io.IOException
            astore 3 /* ex */
        start local 3 // java.io.IOException ex
         6: .line 758
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "ERR_CannotReadAcceptance"
            aload 3 /* ex */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* licID */
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.io.IOException ex
        end local 2 // java.nio.file.Path contentsFile
        end local 1 // java.lang.String licID
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0    7     1         licID  Ljava/lang/String;
            3    7     2  contentsFile  Ljava/nio/file/Path;
            6    7     3            ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     4       5  Class java.io.IOException
    MethodParameters:
       Name  Flags
      licID  

  void verifyUserAccess();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 763
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            invokestatic java.nio.file.Files.isWritable:(Ljava/nio/file/Path;)Z
            ifeq 2
         1: .line 764
            return
         2: .line 767
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            invokestatic org.graalvm.component.installer.SystemUtils.findFileOwner:(Ljava/nio/file/Path;)Ljava/lang/String;
            astore 1 /* owner */
        start local 1 // java.lang.String owner
         3: .line 768
            aload 1 /* owner */
            ifnull 6
         4: .line 769
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "ERROR_MustBecomeUser"
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* owner */
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 1 // java.lang.String owner
         5: .line 771
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
         6: .line 774
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "ERROR_MustBecomeAdmin"
            aconst_null
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.graalvm.component.installer.Feedback.failure:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            3    5     1  owner  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2     5       5  Class java.io.IOException

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
         0: .line 779
            iconst_3
            istore 1 /* hash */
        start local 1 // int hash
         1: .line 780
            bipush 97
            iload 1 /* hash */
            imul
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalHomePath:Ljava/nio/file/Path;
            invokestatic java.util.Objects.hashCode:(Ljava/lang/Object;)I
            iadd
            istore 1 /* hash */
         2: .line 781
            iload 1 /* hash */
            ireturn
        end local 1 // int hash
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            1    3     1  hash  I

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 1 // java.lang.Object obj
         0: .line 786
            aload 0 /* this */
            aload 1 /* obj */
            if_acmpne 2
         1: .line 787
            iconst_1
            ireturn
         2: .line 789
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            ifnonnull 4
         3: .line 790
            iconst_0
            ireturn
         4: .line 792
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 1 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 6
         5: .line 793
            iconst_0
            ireturn
         6: .line 795
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            checkcast org.graalvm.component.installer.persist.DirectoryStorage
            astore 2 /* other */
        start local 2 // org.graalvm.component.installer.persist.DirectoryStorage other
         7: .line 796
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalHomePath:Ljava/nio/file/Path;
            aload 2 /* other */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.graalHomePath:Ljava/nio/file/Path;
            invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifne 9
         8: .line 797
            iconst_0
            ireturn
         9: .line 799
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // org.graalvm.component.installer.persist.DirectoryStorage other
        end local 1 // java.lang.Object obj
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   10     1    obj  Ljava/lang/Object;
            7   10     2  other  Lorg/graalvm/component/installer/persist/DirectoryStorage;
    MethodParameters:
      Name  Flags
      obj   

  private void lambda$0(java.nio.file.Path, java.util.Map, java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;Ljava/util/Map;Ljava/nio/file/Path;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=6, locals=11, args_size=4
        start local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
        start local 3 // java.nio.file.Path lp
         0: .line 662
            aload 3 /* lp */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isRegularFile:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 2
         1: .line 663
            return
         2: .line 665
      StackMap locals:
      StackMap stack:
            aload 3 /* lp */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            astore 4 /* parent */
        start local 4 // java.nio.file.Path parent
         3: .line 666
            aload 4 /* parent */
            aload 1
            invokeinterface java.nio.file.Path.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 667
            return
         5: .line 669
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aload 4 /* parent */
            invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 5 /* fn */
        start local 5 // java.lang.String fn
         6: .line 670
            aload 5 /* fn */
            ldc ".accepted"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 8
         7: .line 671
            return
         8: .line 673
      StackMap locals: java.lang.String
      StackMap stack:
            aload 5 /* fn */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 6 /* dot */
        start local 6 // int dot
         9: .line 674
            aload 5 /* fn */
            iconst_0
            iload 6 /* dot */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 7 /* fnid */
        start local 7 // java.lang.String fnid
        10: .line 677
            aload 0 /* this */
            getfield org.graalvm.component.installer.persist.DirectoryStorage.registryPath:Ljava/nio/file/Path;
            ldc "licenses/{0}.id"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 7 /* fnid */
            aastore
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 9 /* p */
        start local 9 // java.nio.file.Path p
        11: .line 678
            aload 9 /* p */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 15
        12: .line 679
            aload 9 /* p */
            invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;)Ljava/util/List;
            astore 10 /* lines */
        start local 10 // java.util.List lines
        13: .line 680
            aload 10 /* lines */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 8 /* id */
        end local 10 // java.util.List lines
        start local 8 // java.lang.String id
        14: .line 681
            goto 19
        end local 8 // java.lang.String id
        15: .line 682
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path java.util.Map java.nio.file.Path java.nio.file.Path java.lang.String int java.lang.String top java.nio.file.Path
      StackMap stack:
            aload 7 /* fnid */
            astore 8 /* id */
        end local 9 // java.nio.file.Path p
        start local 8 // java.lang.String id
        16: .line 684
            goto 19
        end local 8 // java.lang.String id
      StackMap locals: org.graalvm.component.installer.persist.DirectoryStorage java.nio.file.Path java.util.Map java.nio.file.Path java.nio.file.Path java.lang.String int java.lang.String
      StackMap stack: java.io.IOException
        17: astore 9 /* ex */
        start local 9 // java.io.IOException ex
        18: .line 685
            new java.io.UncheckedIOException
            dup
            aload 9 /* ex */
            invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
            athrow
        end local 9 // java.io.IOException ex
        start local 8 // java.lang.String id
        19: .line 687
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2
            aload 8 /* id */
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  org/graalvm/component/installer/persist/DirectoryStorage.lambda$1(Ljava/lang/String;)Ljava/util/Collection; (6)
                  (Ljava/lang/String;)Ljava/util/Collection;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast java.util.Collection
            aload 3 /* lp */
            invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.lang.String id
        end local 7 // java.lang.String fnid
        end local 6 // int dot
        end local 5 // java.lang.String fn
        end local 4 // java.nio.file.Path parent
        20: .line 688
            return
        end local 3 // java.nio.file.Path lp
        end local 0 // org.graalvm.component.installer.persist.DirectoryStorage this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   21     0    this  Lorg/graalvm/component/installer/persist/DirectoryStorage;
            0   21     3      lp  Ljava/nio/file/Path;
            3   20     4  parent  Ljava/nio/file/Path;
            6   20     5      fn  Ljava/lang/String;
            9   20     6     dot  I
           10   20     7    fnid  Ljava/lang/String;
           14   15     8      id  Ljava/lang/String;
           16   17     8      id  Ljava/lang/String;
           19   20     8      id  Ljava/lang/String;
           11   16     9       p  Ljava/nio/file/Path;
           13   14    10   lines  Ljava/util/List<Ljava/lang/String;>;
           18   19     9      ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          10    16      17  Class java.io.IOException

  private static void lambda$2(java.nio.file.Path, java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;Ljava/nio/file/Path;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=2
        start local 1 // java.nio.file.Path p
         0: .line 737
            aload 1 /* p */
            aload 0
            invokeinterface java.nio.file.Path.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 738
            return
         2: .line 740
      StackMap locals:
      StackMap stack:
            aload 1 /* p */
            invokestatic java.nio.file.Files.delete:(Ljava/nio/file/Path;)V
         3: .line 741
            goto 6
      StackMap locals:
      StackMap stack: java.io.IOException
         4: astore 2 /* ex */
        start local 2 // java.io.IOException ex
         5: .line 742
            new java.io.UncheckedIOException
            dup
            aload 2 /* ex */
            invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
            athrow
        end local 2 // java.io.IOException ex
         6: .line 744
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.file.Path p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     1     p  Ljava/nio/file/Path;
            5    6     2    ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       4  Class java.io.IOException
           2     3       4  Class java.io.IOException

  private static java.util.Collection lambda$1(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Collection;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String x
         0: .line 687
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            areturn
        end local 0 // java.lang.String x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     x  Ljava/lang/String;
}
SourceFile: "DirectoryStorage.java"
NestMembers:
  org.graalvm.component.installer.persist.DirectoryStorage$1
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  org.graalvm.component.installer.persist.DirectoryStorage$1