public class org.graalvm.component.installer.commands.InstallerTest extends org.graalvm.component.installer.TestBase
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.component.installer.commands.InstallerTest
  super_class: org.graalvm.component.installer.TestBase
{
  public org.junit.rules.ExpectedException exception;
    descriptor: Lorg/junit/rules/ExpectedException;
    flags: (0x0001) ACC_PUBLIC
    RuntimeVisibleAnnotations: 
      org.junit.Rule()

  protected org.graalvm.component.installer.jar.JarArchive componentJarFile;
    descriptor: Lorg/graalvm/component/installer/jar/JarArchive;
    flags: (0x0004) ACC_PROTECTED

  public org.junit.rules.TemporaryFolder folder;
    descriptor: Lorg/junit/rules/TemporaryFolder;
    flags: (0x0001) ACC_PUBLIC
    RuntimeVisibleAnnotations: 
      org.junit.Rule()

  private java.nio.file.Path targetPath;
    descriptor: Ljava/nio/file/Path;
    flags: (0x0002) ACC_PRIVATE

  private org.graalvm.component.installer.commands.MockStorage storage;
    descriptor: Lorg/graalvm/component/installer/commands/MockStorage;
    flags: (0x0002) ACC_PRIVATE

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

  private org.graalvm.component.installer.persist.ComponentPackageLoader loader;
    descriptor: Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
    flags: (0x0002) ACC_PRIVATE

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

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

  protected org.graalvm.component.installer.FileOperations fileOps;
    descriptor: Lorg/graalvm/component/installer/FileOperations;
    flags: (0x0004) ACC_PROTECTED

  private static final java.lang.String BLOCKED_CONTENT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "This is a blocked file"

  private static final java.lang.String INSTALL_CONTENT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Test content: ./jre/bin/ruby"

  private void setupComponentInstall(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=4, args_size=2
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
        start local 1 // java.lang.String relativePath
         0: .line 84
            aload 0 /* this */
            aload 1 /* relativePath */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.dataFile:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            astore 2 /* f */
        start local 2 // java.io.File f
         1: .line 85
            new java.util.jar.JarFile
            dup
            aload 2 /* f */
            invokespecial java.util.jar.JarFile.<init>:(Ljava/io/File;)V
            astore 3 /* jf */
        start local 3 // java.util.jar.JarFile jf
         2: .line 87
            aload 0 /* this */
            new org.graalvm.component.installer.jar.JarMetaLoader
            dup
            aload 3 /* jf */
            aload 0 /* this */
            invokespecial org.graalvm.component.installer.jar.JarMetaLoader.<init>:(Ljava/util/jar/JarFile;Lorg/graalvm/component/installer/Feedback;)V
            putfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
         3: .line 88
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.createComponentInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            putfield org.graalvm.component.installer.commands.InstallerTest.componentInfo:Lorg/graalvm/component/installer/model/ComponentInfo;
         4: .line 90
            aload 0 /* this */
            new org.graalvm.component.installer.jar.JarArchive
            dup
            aload 3 /* jf */
            invokespecial org.graalvm.component.installer.jar.JarArchive.<init>:(Ljava/util/jar/JarFile;)V
            putfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
         5: .line 92
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPaths:()V
         6: .line 93
            aload 0 /* this */
            new org.graalvm.component.installer.commands.Installer
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.fb:()Lorg/graalvm/component/installer/Feedback;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentInfo:Lorg/graalvm/component/installer/model/ComponentInfo;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            invokespecial org.graalvm.component.installer.commands.Installer.<init>:(Lorg/graalvm/component/installer/Feedback;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/model/ComponentRegistry;Lorg/graalvm/component/installer/ComponentCollection;Lorg/graalvm/component/installer/Archive;)V
            putfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
         7: .line 94
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.commands.Installer.setInstallPath:(Ljava/nio/file/Path;)V
         8: .line 95
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.getLicensePath:()Ljava/lang/String;
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonRelative:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.commands.Installer.setLicenseRelativePath:(Ljava/nio/file/Path;)V
         9: .line 96
            return
        end local 3 // java.util.jar.JarFile jf
        end local 2 // java.io.File f
        end local 1 // java.lang.String relativePath
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lorg/graalvm/component/installer/commands/InstallerTest;
            0   10     1  relativePath  Ljava/lang/String;
            1   10     2             f  Ljava/io/File;
            2   10     3            jf  Ljava/util/jar/JarFile;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      relativePath  

  private org.graalvm.component.installer.Feedback fb();
    descriptor: ()Lorg/graalvm/component/installer/Feedback;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 99
            aload 0 /* this */
            ldc Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.withBundle:(Ljava/lang/Class;)Lorg/graalvm/component/installer/Feedback;
            areturn
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 102
            aload 0 /* this */
            invokespecial org.graalvm.component.installer.TestBase.<init>:()V
         1: .line 69
            aload 0 /* this */
            invokestatic org.junit.rules.ExpectedException.none:()Lorg/junit/rules/ExpectedException;
            putfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
         2: .line 71
            aload 0 /* this */
            new org.junit.rules.TemporaryFolder
            dup
            invokespecial org.junit.rules.TemporaryFolder.<init>:()V
            putfield org.graalvm.component.installer.commands.InstallerTest.folder:Lorg/junit/rules/TemporaryFolder;
         3: .line 103
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;

  public static void setUpClass();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 107
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      org.junit.BeforeClass()

  public static void tearDownClass();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 111
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      org.junit.AfterClass()

  public void setUp();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 115
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.folder:Lorg/junit/rules/TemporaryFolder;
            ldc "inst"
            invokevirtual org.junit.rules.TemporaryFolder.newFolder:(Ljava/lang/String;)Ljava/io/File;
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            putfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
         1: .line 116
            aload 0 /* this */
            new org.graalvm.component.installer.commands.MockStorage
            dup
            invokespecial org.graalvm.component.installer.commands.MockStorage.<init>:()V
            putfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
         2: .line 117
            aload 0 /* this */
            new org.graalvm.component.installer.model.ComponentRegistry
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            invokespecial org.graalvm.component.installer.model.ComponentRegistry.<init>:(Lorg/graalvm/component/installer/Feedback;Lorg/graalvm/component/installer/model/ManagementStorage;)V
            putfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
         3: .line 118
            aload 0 /* this */
            invokestatic org.graalvm.component.installer.SystemUtils.isWindows:()Z
            ifeq 4
            new org.graalvm.component.installer.os.WindowsFileOperations
            dup
            invokespecial org.graalvm.component.installer.os.WindowsFileOperations.<init>:()V
            goto 5
      StackMap locals:
      StackMap stack: org.graalvm.component.installer.commands.InstallerTest
         4: new org.graalvm.component.installer.os.DefaultFileOperations
            dup
            invokespecial org.graalvm.component.installer.os.DefaultFileOperations.<init>:()V
      StackMap locals: org.graalvm.component.installer.commands.InstallerTest
      StackMap stack: org.graalvm.component.installer.commands.InstallerTest org.graalvm.component.installer.FileOperations
         5: putfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
         6: .line 119
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.FileOperations.init:(Lorg/graalvm/component/installer/Feedback;)V
         7: .line 120
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.FileOperations.setRootPath:(Ljava/nio/file/Path;)V
         8: .line 121
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Before()

  public void tearDown();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 125
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ifnull 2
         1: .line 126
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            invokevirtual org.graalvm.component.installer.jar.JarArchive.close:()V
         2: .line 128
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.After()

  public void testFailRemoteComponentExisting();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 132
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 133
            new org.graalvm.component.installer.model.ComponentInfo
            dup
            ldc "org.graalvm.ruby"
            ldc "Fake ruby"
            ldc "1.0"
            invokespecial org.graalvm.component.installer.model.ComponentInfo.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 1 /* fakeInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
         2: .line 134
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            getfield org.graalvm.component.installer.commands.MockStorage.installed:Ljava/util/List;
            aload 1 /* fakeInfo */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 135
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/component/installer/DependencyException$Conflict;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         4: .line 136
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "VERIFY_ComponentExists"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         5: .line 137
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setFailOnExisting:(Z)V
         6: .line 138
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         7: .line 139
            return
        end local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    8     1  fakeInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testFailOnExistingComponent();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 157
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 160
            new org.graalvm.component.installer.model.ComponentInfo
            dup
            ldc "org.graalvm.ruby"
            ldc "Fake ruby"
            ldc "1.1"
            invokespecial org.graalvm.component.installer.model.ComponentInfo.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 1 /* fakeInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
         2: .line 161
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            getfield org.graalvm.component.installer.commands.MockStorage.installed:Ljava/util/List;
            aload 1 /* fakeInfo */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 163
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/component/installer/DependencyException$Conflict;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         4: .line 164
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "VERIFY_ComponentExists"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         5: .line 165
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setFailOnExisting:(Z)V
         6: .line 166
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         7: .line 167
            return
        end local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    8     1  fakeInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testDontFailOnComponentUpdate();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 171
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 174
            new org.graalvm.component.installer.model.ComponentInfo
            dup
            ldc "org.graalvm.ruby"
            ldc "Fake ruby"
            ldc "0.99"
            invokespecial org.graalvm.component.installer.model.ComponentInfo.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 1 /* fakeInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
         2: .line 175
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            getfield org.graalvm.component.installer.commands.MockStorage.installed:Ljava/util/List;
            aload 1 /* fakeInfo */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 177
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setFailOnExisting:(Z)V
         4: .line 178
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         5: .line 179
            return
        end local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    6     1  fakeInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testSkipExistingComponent();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 183
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 184
            new org.graalvm.component.installer.model.ComponentInfo
            dup
            ldc "org.graalvm.ruby"
            ldc "Fake ruby"
            ldc "1.0"
            invokespecial org.graalvm.component.installer.model.ComponentInfo.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 1 /* fakeInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
         2: .line 185
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            getfield org.graalvm.component.installer.commands.MockStorage.installed:Ljava/util/List;
            aload 1 /* fakeInfo */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 187
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_0
            invokevirtual org.graalvm.component.installer.commands.Installer.setFailOnExisting:(Z)V
         4: .line 188
            ldc "Must refuse installation"
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateAll:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         5: .line 189
            return
        end local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    6     1  fakeInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAcceptComponentUpgrade();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 193
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 194
            new org.graalvm.component.installer.model.ComponentInfo
            dup
            ldc "org.graalvm.ruby"
            ldc "Fake ruby"
            ldc "0.32"
            invokespecial org.graalvm.component.installer.model.ComponentInfo.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            astore 1 /* fakeInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
         2: .line 195
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            getfield org.graalvm.component.installer.commands.MockStorage.installed:Ljava/util/List;
            aload 1 /* fakeInfo */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 197
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_0
            invokevirtual org.graalvm.component.installer.commands.Installer.setFailOnExisting:(Z)V
         4: .line 198
            ldc "Must refuse installation"
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateAll:()Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         5: .line 199
            return
        end local 1 // org.graalvm.component.installer.model.ComponentInfo fakeInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    6     1  fakeInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testUninstall();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 206
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 207
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         2: .line 208
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         3: .line 210
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         4: .line 212
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.getComponentInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            astore 1 /* savedInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
         5: .line 215
            new org.graalvm.component.installer.commands.Uninstaller
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.fb:()Lorg/graalvm/component/installer/Feedback;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 1 /* savedInfo */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
            invokespecial org.graalvm.component.installer.commands.Uninstaller.<init>:(Lorg/graalvm/component/installer/Feedback;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/model/ComponentRegistry;)V
            astore 2 /* uninstaller */
        start local 2 // org.graalvm.component.installer.commands.Uninstaller uninstaller
         6: .line 216
            aload 2 /* uninstaller */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.setInstallPath:(Ljava/nio/file/Path;)V
         7: .line 217
            aload 2 /* uninstaller */
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.uninstallContent:()V
         8: .line 219
            ldc "All files should be removed after uninstall"
         9: .line 220
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokestatic java.nio.file.Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
        10: .line 219
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
        11: .line 221
            return
        end local 2 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        end local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lorg/graalvm/component/installer/commands/InstallerTest;
            5   12     1    savedInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
            6   12     2  uninstaller  Lorg/graalvm/component/installer/commands/Uninstaller;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testUninstallFailsOnExtraFile();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 228
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 229
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         2: .line 230
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         3: .line 232
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         4: .line 234
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.getComponentInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            astore 1 /* savedInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
         5: .line 236
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages/ruby"
            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 2 /* langPath */
        start local 2 // java.nio.file.Path langPath
         6: .line 237
            aload 2 /* langPath */
            ldc "doc/user"
            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 /* roPath */
        start local 3 // java.nio.file.Path roPath
         7: .line 239
            aload 3 /* roPath */
            ldc "userFile.txt"
            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 4 /* uf */
        start local 4 // java.nio.file.Path uf
         8: .line 240
            aload 4 /* uf */
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "This file"
            aastore
            dup
            iconst_1
            ldc "Should vanish"
            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
         9: .line 242
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Ljava/nio/file/DirectoryNotEmptyException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
        10: .line 243
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "jre/languages/ruby/doc/user"
            ldc "/"
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
        11: .line 245
            new org.graalvm.component.installer.commands.Uninstaller
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.fb:()Lorg/graalvm/component/installer/Feedback;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 1 /* savedInfo */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
            invokespecial org.graalvm.component.installer.commands.Uninstaller.<init>:(Lorg/graalvm/component/installer/Feedback;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/model/ComponentRegistry;)V
            astore 5 /* uninstaller */
        start local 5 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        12: .line 246
            aload 5 /* uninstaller */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.setInstallPath:(Ljava/nio/file/Path;)V
        13: .line 247
            aload 5 /* uninstaller */
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.uninstallContent:()V
        14: .line 249
            ldc "Shouldn't be reached"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
        15: .line 250
            return
        end local 5 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        end local 4 // java.nio.file.Path uf
        end local 3 // java.nio.file.Path roPath
        end local 2 // java.nio.file.Path langPath
        end local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0         this  Lorg/graalvm/component/installer/commands/InstallerTest;
            5   16     1    savedInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
            6   16     2     langPath  Ljava/nio/file/Path;
            7   16     3       roPath  Ljava/nio/file/Path;
            8   16     4           uf  Ljava/nio/file/Path;
           12   16     5  uninstaller  Lorg/graalvm/component/installer/commands/Uninstaller;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testRecursiveDelete();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 255
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 256
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         2: .line 257
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         3: .line 259
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         4: .line 260
            new org.graalvm.component.installer.commands.PreRemoveProcess
            dup
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 0 /* this */
            invokespecial org.graalvm.component.installer.commands.PreRemoveProcess.<init>:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/Feedback;)V
            astore 1 /* preRemove */
        start local 1 // org.graalvm.component.installer.commands.PreRemoveProcess preRemove
         5: .line 261
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages/ruby"
            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 2 /* langPath */
        start local 2 // java.nio.file.Path langPath
         6: .line 262
            aload 1 /* preRemove */
            aload 2 /* langPath */
            invokevirtual org.graalvm.component.installer.commands.PreRemoveProcess.deleteContentsRecursively:(Ljava/nio/file/Path;)V
         7: .line 265
            aload 2 /* langPath */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         8: .line 268
            ldc "All files should be removed by recursive delete"
         9: .line 269
            aload 2 /* langPath */
            invokestatic java.nio.file.Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
        10: .line 268
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
        11: .line 270
            return
        end local 2 // java.nio.file.Path langPath
        end local 1 // org.graalvm.component.installer.commands.PreRemoveProcess preRemove
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lorg/graalvm/component/installer/commands/InstallerTest;
            5   12     1  preRemove  Lorg/graalvm/component/installer/commands/PreRemoveProcess;
            6   12     2   langPath  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testRecursiveDeleteWithReadonlyFiles();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 274
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 275
            return
         2: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 280
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         4: .line 281
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         5: .line 283
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         6: .line 284
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages/ruby"
            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 /* langPath */
        start local 1 // java.nio.file.Path langPath
         7: .line 286
            aload 1 /* langPath */
            ldc "doc/legal"
            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 2 /* roPath */
        start local 2 // java.nio.file.Path roPath
         8: .line 287
            aload 2 /* roPath */
            ldc "r-xr-xr-x"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
         9: .line 289
            new org.graalvm.component.installer.commands.PreRemoveProcess
            dup
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 0 /* this */
            invokespecial org.graalvm.component.installer.commands.PreRemoveProcess.<init>:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/Feedback;)V
            astore 3 /* preRemove */
        start local 3 // org.graalvm.component.installer.commands.PreRemoveProcess preRemove
        10: .line 290
            aload 3 /* preRemove */
            aload 1 /* langPath */
            invokevirtual org.graalvm.component.installer.commands.PreRemoveProcess.deleteContentsRecursively:(Ljava/nio/file/Path;)V
        11: .line 292
            aload 1 /* langPath */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        12: .line 295
            ldc "All files should be removed by recursive delete"
        13: .line 296
            aload 1 /* langPath */
            invokestatic java.nio.file.Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
        14: .line 295
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
        15: .line 297
            return
        end local 3 // org.graalvm.component.installer.commands.PreRemoveProcess preRemove
        end local 2 // java.nio.file.Path roPath
        end local 1 // java.nio.file.Path langPath
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0       this  Lorg/graalvm/component/installer/commands/InstallerTest;
            7   16     1   langPath  Ljava/nio/file/Path;
            8   16     2     roPath  Ljava/nio/file/Path;
           10   16     3  preRemove  Lorg/graalvm/component/installer/commands/PreRemoveProcess;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testUninstallComponentWithROFiles();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 301
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 302
            return
         2: .line 304
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "trufflerubyRO.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 305
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         4: .line 306
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         5: .line 308
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         6: .line 310
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.getComponentInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            astore 1 /* savedInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
         7: .line 313
            new org.graalvm.component.installer.commands.Uninstaller
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.fb:()Lorg/graalvm/component/installer/Feedback;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 1 /* savedInfo */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
            invokespecial org.graalvm.component.installer.commands.Uninstaller.<init>:(Lorg/graalvm/component/installer/Feedback;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/model/ComponentRegistry;)V
            astore 2 /* uninstaller */
        start local 2 // org.graalvm.component.installer.commands.Uninstaller uninstaller
         8: .line 314
            aload 2 /* uninstaller */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.setInstallPath:(Ljava/nio/file/Path;)V
         9: .line 315
            aload 2 /* uninstaller */
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.uninstallContent:()V
        10: .line 317
            ldc "All files should be removed after uninstall"
        11: .line 318
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokestatic java.nio.file.Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
        12: .line 317
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
        13: .line 319
            return
        end local 2 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        end local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lorg/graalvm/component/installer/commands/InstallerTest;
            7   14     1    savedInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
            8   14     2  uninstaller  Lorg/graalvm/component/installer/commands/Uninstaller;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testUninstallComponentWithUserROFiles();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 323
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 324
            return
         2: .line 326
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "trufflerubyWork.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 327
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         4: .line 328
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         5: .line 330
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         6: .line 332
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.getComponentInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            astore 1 /* savedInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
         7: .line 334
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages/ruby"
            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 2 /* langPath */
        start local 2 // java.nio.file.Path langPath
         8: .line 335
            aload 2 /* langPath */
            ldc "doc/user"
            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 /* roPath */
        start local 3 // java.nio.file.Path roPath
         9: .line 338
            aload 3 /* roPath */
            ldc "userFile.txt"
            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 4 /* uf */
        start local 4 // java.nio.file.Path uf
        10: .line 339
            aload 4 /* uf */
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "This file"
            aastore
            dup
            iconst_1
            ldc "Should vanish"
            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
        11: .line 340
            aload 4 /* uf */
            ldc "r--r-----"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
        12: .line 341
            aload 3 /* roPath */
            ldc "r-xr-xr-x"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
        13: .line 344
            new org.graalvm.component.installer.commands.Uninstaller
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.fb:()Lorg/graalvm/component/installer/Feedback;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 1 /* savedInfo */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
            invokespecial org.graalvm.component.installer.commands.Uninstaller.<init>:(Lorg/graalvm/component/installer/Feedback;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/model/ComponentRegistry;)V
            astore 5 /* uninstaller */
        start local 5 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        14: .line 345
            aload 5 /* uninstaller */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.setInstallPath:(Ljava/nio/file/Path;)V
        15: .line 346
            aload 5 /* uninstaller */
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.uninstallContent:()V
        16: .line 348
            ldc "All files should be removed after uninstall"
        17: .line 349
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokestatic java.nio.file.Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
        18: .line 348
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
        19: .line 350
            return
        end local 5 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        end local 4 // java.nio.file.Path uf
        end local 3 // java.nio.file.Path roPath
        end local 2 // java.nio.file.Path langPath
        end local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   20     0         this  Lorg/graalvm/component/installer/commands/InstallerTest;
            7   20     1    savedInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
            8   20     2     langPath  Ljava/nio/file/Path;
            9   20     3       roPath  Ljava/nio/file/Path;
           10   20     4           uf  Ljava/nio/file/Path;
           14   20     5  uninstaller  Lorg/graalvm/component/installer/commands/Uninstaller;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testSetIgnoreFailedDeletions();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 357
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 358
            return
         2: .line 360
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 361
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         4: .line 362
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         5: .line 364
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         6: .line 366
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.getComponentInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            astore 1 /* savedInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
         7: .line 369
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages/ruby/doc/legal"
            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 2 /* p */
        start local 2 // java.nio.file.Path p
         8: .line 370
            aload 2 /* p */
            ldc "r--r--r--"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
         9: .line 373
            new org.graalvm.component.installer.commands.Uninstaller
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.fb:()Lorg/graalvm/component/installer/Feedback;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 1 /* savedInfo */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
            invokespecial org.graalvm.component.installer.commands.Uninstaller.<init>:(Lorg/graalvm/component/installer/Feedback;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/model/ComponentRegistry;)V
            astore 3 /* uninstaller */
        start local 3 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        10: .line 374
            aload 3 /* uninstaller */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.setInstallPath:(Ljava/nio/file/Path;)V
        11: .line 375
            aload 3 /* uninstaller */
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.setIgnoreFailedDeletions:(Z)V
        12: .line 376
            aload 3 /* uninstaller */
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.uninstall:()V
        13: .line 377
            return
        end local 3 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        end local 2 // java.nio.file.Path p
        end local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lorg/graalvm/component/installer/commands/InstallerTest;
            7   14     1    savedInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
            8   14     2            p  Ljava/nio/file/Path;
           10   14     3  uninstaller  Lorg/graalvm/component/installer/commands/Uninstaller;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testFailedDeletionAborts();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 384
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 385
            return
         2: .line 387
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 388
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         4: .line 389
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         5: .line 391
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         6: .line 393
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.getComponentInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            astore 1 /* savedInfo */
        start local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
         7: .line 396
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages/ruby/doc/legal"
            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 2 /* p */
        start local 2 // java.nio.file.Path p
         8: .line 397
            aload 2 /* p */
            ldc "r--r--r--"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
         9: .line 400
            new org.graalvm.component.installer.commands.Uninstaller
            dup
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.fb:()Lorg/graalvm/component/installer/Feedback;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 1 /* savedInfo */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.registry:Lorg/graalvm/component/installer/model/ComponentRegistry;
            invokespecial org.graalvm.component.installer.commands.Uninstaller.<init>:(Lorg/graalvm/component/installer/Feedback;Lorg/graalvm/component/installer/FileOperations;Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/model/ComponentRegistry;)V
            astore 3 /* uninstaller */
        start local 3 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        10: .line 401
            aload 3 /* uninstaller */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.setInstallPath:(Ljava/nio/file/Path;)V
        11: .line 403
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Ljava/io/IOException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
        12: .line 404
            aload 3 /* uninstaller */
            invokevirtual org.graalvm.component.installer.commands.Uninstaller.uninstall:()V
        13: .line 405
            return
        end local 3 // org.graalvm.component.installer.commands.Uninstaller uninstaller
        end local 2 // java.nio.file.Path p
        end local 1 // org.graalvm.component.installer.model.ComponentInfo savedInfo
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lorg/graalvm/component/installer/commands/InstallerTest;
            7   14     1    savedInfo  Lorg/graalvm/component/installer/model/ComponentInfo;
            8   14     2            p  Ljava/nio/file/Path;
           10   14     3  uninstaller  Lorg/graalvm/component/installer/commands/Uninstaller;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testValidateRequirementsSuccess();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 412
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 413
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         2: .line 414
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testValidateRequirementsGraalVersion();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 418
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 419
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.getComponentInfo:()Lorg/graalvm/component/installer/model/ComponentInfo;
            ldc "graalvm_version"
            ldc "0.33"
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.addRequiredValue:(Ljava/lang/String;Ljava/lang/String;)V
         2: .line 421
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/component/installer/DependencyException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         3: .line 422
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "VERIFY_UpdateGraalVM"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         4: .line 423
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         5: .line 424
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testValidateRequirementsGraalVersion2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 429
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 431
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            getfield org.graalvm.component.installer.commands.MockStorage.graalInfo:Ljava/util/Map;
            ldc "graalvm_version"
            ldc "0.30"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 433
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/component/installer/DependencyException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         3: .line 434
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "VERIFY_UpdateGraalVM"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         4: .line 435
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         5: .line 436
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testValidateRequirementsDifferentJava();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 443
            aload 0 /* this */
            ldc "truffleruby2-11.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 445
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/component/installer/DependencyException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         2: .line 446
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "VERIFY_Dependency_Failed"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         3: .line 447
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         4: .line 448
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testValidateRequirementsJavaMatches();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 455
            aload 0 /* this */
            ldc "truffleruby2-11.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 456
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            getfield org.graalvm.component.installer.commands.MockStorage.graalInfo:Ljava/util/Map;
            ldc "java_version"
            ldc "11"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 457
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         3: .line 458
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testSetIgnoreRequirements();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 465
            aload 0 /* this */
            ldc "truffleruby2-11.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 467
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.storage:Lorg/graalvm/component/installer/commands/MockStorage;
            getfield org.graalvm.component.installer.commands.MockStorage.graalInfo:Ljava/util/Map;
            ldc "graalvm_version"
            ldc "0.30"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 469
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setIgnoreRequirements:(Z)V
         3: .line 470
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateRequirements:()Lorg/graalvm/component/installer/model/Verifier;
            pop
         4: .line 471
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstall();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 478
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 479
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         2: .line 480
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         3: .line 481
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         4: .line 483
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 /* jreRuby */
        start local 1 // java.nio.file.Path jreRuby
         5: .line 484
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "bin/ruby"
            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 2 /* binRuby */
        start local 2 // java.nio.file.Path binRuby
         6: .line 486
            aload 1 /* jreRuby */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 489
            invokestatic org.graalvm.component.installer.commands.InstallerTest.isWindows:()Z
            ifne 9
         8: .line 490
            aload 2 /* binRuby */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         9: .line 493
      StackMap locals: java.nio.file.Path java.nio.file.Path
      StackMap stack:
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 12
        10: .line 494
            aload 1 /* jreRuby */
            invokestatic java.nio.file.Files.isExecutable:(Ljava/nio/file/Path;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        11: .line 495
            aload 2 /* binRuby */
            invokestatic java.nio.file.Files.isSymbolicLink:(Ljava/nio/file/Path;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        12: .line 499
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
        13: .line 501
            ldc "No files should be created under dry run"
        14: .line 502
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokestatic java.nio.file.Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
        15: .line 501
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
        16: .line 503
            return
        end local 2 // java.nio.file.Path binRuby
        end local 1 // java.nio.file.Path jreRuby
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Lorg/graalvm/component/installer/commands/InstallerTest;
            5   17     1  jreRuby  Ljava/nio/file/Path;
            6   17     2  binRuby  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstallOneRegularFile();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 510
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 514
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/ruby"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 1 /* entry */
        start local 1 // org.graalvm.component.installer.Archive$FileEntry entry
         2: .line 515
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 1 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.translateTargetPath:(Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            aload 1 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.installOneFile:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            astore 2 /* resultPath */
        start local 2 // java.nio.file.Path resultPath
         3: .line 516
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            aload 2 /* resultPath */
            invokeinterface java.nio.file.Path.relativize:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* relative */
        start local 3 // java.nio.file.Path relative
         4: .line 517
            aload 1 /* entry */
            invokeinterface org.graalvm.component.installer.Archive$FileEntry.getName:()Ljava/lang/String;
            aload 3 /* relative */
            invokestatic org.graalvm.component.installer.SystemUtils.toCommonPath:(Ljava/nio/file/Path;)Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 519
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 4 /* check */
        start local 4 // java.nio.file.Path check
         6: .line 521
            aload 4 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 522
            aload 1 /* entry */
            invokeinterface org.graalvm.component.installer.Archive$FileEntry.getSize:()J
            aload 4 /* check */
            invokestatic java.nio.file.Files.size:(Ljava/nio/file/Path;)J
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         8: .line 525
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
         9: .line 527
            aload 4 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        10: .line 529
            aload 4 /* check */
            invokeinterface java.nio.file.Path.getParent:()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
            invokestatic org.junit.Assert.assertFalse:(Z)V
        11: .line 530
            aload 4 /* check */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.getParent:()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
            invokestatic org.junit.Assert.assertFalse:(Z)V
        12: .line 531
            return
        end local 4 // java.nio.file.Path check
        end local 3 // java.nio.file.Path relative
        end local 2 // java.nio.file.Path resultPath
        end local 1 // org.graalvm.component.installer.Archive$FileEntry entry
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2   13     1       entry  Lorg/graalvm/component/installer/Archive$FileEntry;
            3   13     2  resultPath  Ljava/nio/file/Path;
            4   13     3    relative  Ljava/nio/file/Path;
            6   13     4       check  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstallExistingFileWillNotRevert();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 538
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 542
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 /* existing */
        start local 1 // java.nio.file.Path existing
         2: .line 543
            aload 1 /* existing */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         3: .line 544
            aload 0 /* this */
            ldc "ruby"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.dataFile:(Ljava/lang/String;)Ljava/nio/file/Path;
            aload 1 /* existing */
            iconst_0
            anewarray java.nio.file.CopyOption
            invokestatic java.nio.file.Files.copy:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path;
            pop
         4: .line 546
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/ruby"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 2 /* entry */
        start local 2 // org.graalvm.component.installer.Archive$FileEntry entry
         5: .line 547
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 2 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.translateTargetPath:(Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            aload 2 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.installOneFile:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            astore 3 /* resultPath */
        start local 3 // java.nio.file.Path resultPath
         6: .line 548
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            aload 3 /* resultPath */
            invokeinterface java.nio.file.Path.relativize:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 4 /* relative */
        start local 4 // java.nio.file.Path relative
         7: .line 549
            aload 2 /* entry */
            invokeinterface org.graalvm.component.installer.Archive$FileEntry.getName:()Ljava/lang/String;
            aload 4 /* relative */
            invokestatic org.graalvm.component.installer.SystemUtils.toCommonPath:(Ljava/nio/file/Path;)Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 551
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 5 /* check */
        start local 5 // java.nio.file.Path check
         9: .line 553
            aload 5 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        10: .line 554
            aload 2 /* entry */
            invokeinterface org.graalvm.component.installer.Archive$FileEntry.getSize:()J
            aload 5 /* check */
            invokestatic java.nio.file.Files.size:(Ljava/nio/file/Path;)J
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        11: .line 557
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
        12: .line 560
            aload 5 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        13: .line 561
            return
        end local 5 // java.nio.file.Path check
        end local 4 // java.nio.file.Path relative
        end local 3 // java.nio.file.Path resultPath
        end local 2 // org.graalvm.component.installer.Archive$FileEntry entry
        end local 1 // java.nio.file.Path existing
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2   14     1    existing  Ljava/nio/file/Path;
            5   14     2       entry  Lorg/graalvm/component/installer/Archive$FileEntry;
            6   14     3  resultPath  Ljava/nio/file/Path;
            7   14     4    relative  Ljava/nio/file/Path;
            9   14     5       check  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstallOverwrittemFileWillNotRevert();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 568
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 569
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setReplaceDiferentFiles:(Z)V
         2: .line 574
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 /* existing */
        start local 1 // java.nio.file.Path existing
         3: .line 575
            aload 1 /* existing */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         4: .line 576
            aload 0 /* this */
            ldc "ruby2"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.dataFile:(Ljava/lang/String;)Ljava/nio/file/Path;
            aload 1 /* existing */
            iconst_0
            anewarray java.nio.file.CopyOption
            invokestatic java.nio.file.Files.copy:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path;
            pop
         5: .line 578
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/ruby"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 2 /* entry */
        start local 2 // org.graalvm.component.installer.Archive$FileEntry entry
         6: .line 579
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 2 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.translateTargetPath:(Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            aload 2 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.installOneFile:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            astore 3 /* resultPath */
        start local 3 // java.nio.file.Path resultPath
         7: .line 580
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            aload 3 /* resultPath */
            invokeinterface java.nio.file.Path.relativize:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 4 /* relative */
        start local 4 // java.nio.file.Path relative
         8: .line 581
            aload 2 /* entry */
            invokeinterface org.graalvm.component.installer.Archive$FileEntry.getName:()Ljava/lang/String;
            aload 4 /* relative */
            invokestatic org.graalvm.component.installer.SystemUtils.toCommonPath:(Ljava/nio/file/Path;)Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 583
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 5 /* check */
        start local 5 // java.nio.file.Path check
        10: .line 585
            aload 5 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        11: .line 586
            aload 2 /* entry */
            invokeinterface org.graalvm.component.installer.Archive$FileEntry.getSize:()J
            aload 5 /* check */
            invokestatic java.nio.file.Files.size:(Ljava/nio/file/Path;)J
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        12: .line 589
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
        13: .line 592
            aload 5 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        14: .line 593
            return
        end local 5 // java.nio.file.Path check
        end local 4 // java.nio.file.Path relative
        end local 3 // java.nio.file.Path resultPath
        end local 2 // org.graalvm.component.installer.Archive$FileEntry entry
        end local 1 // java.nio.file.Path existing
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/graalvm/component/installer/commands/InstallerTest;
            3   15     1    existing  Ljava/nio/file/Path;
            6   15     2       entry  Lorg/graalvm/component/installer/Archive$FileEntry;
            7   15     3  resultPath  Ljava/nio/file/Path;
            8   15     4    relative  Ljava/nio/file/Path;
           10   15     5       check  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstallOneDirectory();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 600
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 602
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 1 /* entry */
        start local 1 // org.graalvm.component.installer.Archive$FileEntry entry
         2: .line 603
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 1 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.installOneEntry:(Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            pop
         3: .line 605
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin"
            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 2 /* check */
        start local 2 // java.nio.file.Path check
         4: .line 607
            aload 2 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         5: .line 608
            aload 2 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 611
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
         7: .line 613
            aload 2 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         8: .line 614
            return
        end local 2 // java.nio.file.Path check
        end local 1 // org.graalvm.component.installer.Archive$FileEntry entry
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    9     1  entry  Lorg/graalvm/component/installer/Archive$FileEntry;
            4    9     2  check  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstallExistingDirectoryWillNotRevert();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 621
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 623
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin"
            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 /* existing */
        start local 1 // java.nio.file.Path existing
         2: .line 624
            aload 1 /* existing */
            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
         3: .line 626
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 2 /* entry */
        start local 2 // org.graalvm.component.installer.Archive$FileEntry entry
         4: .line 627
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 2 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.installOneEntry:(Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            pop
         5: .line 629
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin"
            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 /* check */
        start local 3 // java.nio.file.Path check
         6: .line 631
            aload 3 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 632
            aload 3 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         8: .line 635
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
         9: .line 637
            aload 3 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        10: .line 638
            return
        end local 3 // java.nio.file.Path check
        end local 2 // org.graalvm.component.installer.Archive$FileEntry entry
        end local 1 // java.nio.file.Path existing
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2   11     1  existing  Ljava/nio/file/Path;
            4   11     2     entry  Lorg/graalvm/component/installer/Archive$FileEntry;
            6   11     3     check  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testProcessPermissions();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 645
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 646
            return
         2: .line 649
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby3.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 650
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.unpackFiles:()V
         4: .line 652
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 /* check */
        start local 1 // java.nio.file.Path check
         5: .line 653
            aload 1 /* check */
            invokestatic java.nio.file.Files.isExecutable:(Ljava/nio/file/Path;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         6: .line 654
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.processPermissions:()V
         7: .line 656
            aload 1 /* check */
            invokestatic java.nio.file.Files.isExecutable:(Ljava/nio/file/Path;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         8: .line 657
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         9: .line 658
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.processPermissions:()V
        10: .line 659
            aload 1 /* check */
            invokestatic java.nio.file.Files.isExecutable:(Ljava/nio/file/Path;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        11: .line 660
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
        12: .line 661
            ldc "jre/languages/ruby/bin/ri"
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonString:(Ljava/lang/String;)Ljava/nio/file/Path;
        13: .line 660
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokestatic java.nio.file.Files.isExecutable:(Ljava/nio/file/Path;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        14: .line 662
            return
        end local 1 // java.nio.file.Path check
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Lorg/graalvm/component/installer/commands/InstallerTest;
            5   15     1  check  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testCreateSymlinks();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 669
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 670
            return
         2: .line 672
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 673
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.unpackFiles:()V
         4: .line 676
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "bin/ruby"
            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 /* check */
        start local 1 // java.nio.file.Path check
         5: .line 677
            aload 1 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         6: .line 679
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         7: .line 680
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.createSymlinks:()V
         8: .line 682
            aload 1 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         9: .line 683
            aload 1 /* check */
            invokestatic java.nio.file.Files.isSymbolicLink:(Ljava/nio/file/Path;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        10: .line 684
            aload 1 /* check */
            invokestatic java.nio.file.Files.readSymbolicLink:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 2 /* target */
        start local 2 // java.nio.file.Path target
        11: .line 686
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            aload 1 /* check */
            aload 2 /* target */
            invokeinterface java.nio.file.Path.resolveSibling:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.normalize:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.relativize:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 3 /* resolved */
        start local 3 // java.nio.file.Path resolved
        12: .line 687
            ldc "jre/bin/ruby"
            aload 3 /* resolved */
            invokestatic org.graalvm.component.installer.SystemUtils.toCommonPath:(Ljava/nio/file/Path;)Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 689
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
        14: .line 691
            aload 1 /* check */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        15: .line 692
            return
        end local 3 // java.nio.file.Path resolved
        end local 2 // java.nio.file.Path target
        end local 1 // java.nio.file.Path check
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            5   16     1     check  Ljava/nio/file/Path;
           11   16     2    target  Ljava/nio/file/Path;
           12   16     3  resolved  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testCheckFileReplacementSame();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 699
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 701
            aload 0 /* this */
            ldc "ruby"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.dataFile:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* existingOrig */
        start local 1 // java.nio.file.Path existingOrig
         2: .line 703
            getstatic org.graalvm.component.installer.commands.InstallerTest.expandedFolder:Lorg/junit/rules/TemporaryFolder;
            ldc "testCheckFileReplacementSame-ruby"
            invokevirtual org.junit.rules.TemporaryFolder.newFile:(Ljava/lang/String;)Ljava/io/File;
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            astore 2 /* existing */
        start local 2 // java.nio.file.Path existing
         3: .line 705
            aload 2 /* existing */
            new java.lang.StringBuilder
            dup
            ldc "\n"
            aload 1 /* existingOrig */
            invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;)Ljava/util/List;
            invokestatic java.lang.String.join:(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc "UTF-8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.write:(Ljava/nio/file/Path;[B[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
            pop
         4: .line 707
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/ruby"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 3 /* je */
        start local 3 // org.graalvm.component.installer.Archive$FileEntry je
         5: .line 710
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 2 /* existing */
            aload 3 /* je */
            invokevirtual org.graalvm.component.installer.commands.Installer.checkFileReplacement:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/Archive$FileEntry;)Z
            pop
         6: .line 711
            return
        end local 3 // org.graalvm.component.installer.Archive$FileEntry je
        end local 2 // java.nio.file.Path existing
        end local 1 // java.nio.file.Path existingOrig
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    7     1  existingOrig  Ljava/nio/file/Path;
            3    7     2      existing  Ljava/nio/file/Path;
            5    7     3            je  Lorg/graalvm/component/installer/Archive$FileEntry;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testCheckFileReplacementDifferent();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 718
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 720
            aload 0 /* this */
            ldc "ruby2"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.dataFile:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* existing */
        start local 1 // java.nio.file.Path existing
         2: .line 721
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/ruby"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 2 /* je */
        start local 2 // org.graalvm.component.installer.Archive$FileEntry je
         3: .line 724
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/component/installer/FailedOperationException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         4: .line 725
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "INSTALL_ReplacedFileDiffers"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         5: .line 726
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 1 /* existing */
            aload 2 /* je */
            invokevirtual org.graalvm.component.installer.commands.Installer.checkFileReplacement:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/Archive$FileEntry;)Z
            pop
         6: .line 727
            return
        end local 2 // org.graalvm.component.installer.Archive$FileEntry je
        end local 1 // java.nio.file.Path existing
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    7     1  existing  Ljava/nio/file/Path;
            3    7     2        je  Lorg/graalvm/component/installer/Archive$FileEntry;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testCheckFileReplacementForced();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 734
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 735
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setReplaceDiferentFiles:(Z)V
         2: .line 737
            aload 0 /* this */
            ldc "ruby2"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.dataFile:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* existing */
        start local 1 // java.nio.file.Path existing
         3: .line 738
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/ruby"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 2 /* je */
        start local 2 // org.graalvm.component.installer.Archive$FileEntry je
         4: .line 741
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 1 /* existing */
            aload 2 /* je */
            invokevirtual org.graalvm.component.installer.commands.Installer.checkFileReplacement:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/Archive$FileEntry;)Z
            pop
         5: .line 742
            return
        end local 2 // org.graalvm.component.installer.Archive$FileEntry je
        end local 1 // java.nio.file.Path existing
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/graalvm/component/installer/commands/InstallerTest;
            3    6     1  existing  Ljava/nio/file/Path;
            4    6     2        je  Lorg/graalvm/component/installer/Archive$FileEntry;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testSetDryRun();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 749
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 750
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setDryRun:(Z)V
         2: .line 751
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         3: .line 752
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         4: .line 754
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         5: .line 756
            ldc "No files should be created under dry run"
         6: .line 757
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokestatic java.nio.file.Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
         7: .line 756
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         8: .line 758
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testValidateFiles();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 762
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 763
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateFiles:()V
         2: .line 765
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         3: .line 766
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         4: .line 768
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateAll:()Z
            pop
         5: .line 769
            return
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/graalvm/component/installer/commands/InstallerTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testValidateOverwriteDirectoryWithFile();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 773
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 774
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 /* offending */
        start local 1 // java.nio.file.Path offending
         2: .line 775
            aload 1 /* offending */
            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
         3: .line 776
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/bin/ruby"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 2 /* entry */
        start local 2 // org.graalvm.component.installer.Archive$FileEntry entry
         4: .line 778
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Ljava/io/IOException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         5: .line 779
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "INSTALL_OverwriteWithFile"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         6: .line 780
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
         7: .line 781
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 2 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.translateTargetPath:(Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            aload 2 /* entry */
         8: .line 780
            invokevirtual org.graalvm.component.installer.commands.Installer.validateOneEntry:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/Archive$FileEntry;)Z
            pop
         9: .line 782
            return
        end local 2 // org.graalvm.component.installer.Archive$FileEntry entry
        end local 1 // java.nio.file.Path offending
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2   10     1  offending  Ljava/nio/file/Path;
            4   10     2      entry  Lorg/graalvm/component/installer/Archive$FileEntry;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testValidateOverwriteFileWithDirectory();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 786
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 787
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages/ruby"
            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 /* offending */
        start local 1 // java.nio.file.Path offending
         2: .line 788
            aload 1 /* offending */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         3: .line 789
            aload 1 /* offending */
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createFile:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
         4: .line 790
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentJarFile:Lorg/graalvm/component/installer/jar/JarArchive;
            ldc "jre/languages/ruby/"
            invokevirtual org.graalvm.component.installer.jar.JarArchive.getJarEntry:(Ljava/lang/String;)Lorg/graalvm/component/installer/Archive$FileEntry;
            astore 2 /* entry */
        start local 2 // org.graalvm.component.installer.Archive$FileEntry entry
         5: .line 792
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Ljava/io/IOException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         6: .line 793
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "INSTALL_OverwriteWithDirectory"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         7: .line 794
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
         8: .line 795
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 2 /* entry */
            invokevirtual org.graalvm.component.installer.commands.Installer.translateTargetPath:(Lorg/graalvm/component/installer/Archive$FileEntry;)Ljava/nio/file/Path;
            aload 2 /* entry */
         9: .line 794
            invokevirtual org.graalvm.component.installer.commands.Installer.validateOneEntry:(Ljava/nio/file/Path;Lorg/graalvm/component/installer/Archive$FileEntry;)Z
            pop
        10: .line 796
            return
        end local 2 // org.graalvm.component.installer.Archive$FileEntry entry
        end local 1 // java.nio.file.Path offending
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2   11     1  offending  Ljava/nio/file/Path;
            5   11     2      entry  Lorg/graalvm/component/installer/Archive$FileEntry;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testRevertInstallFailureFile();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 800
            invokestatic org.graalvm.component.installer.commands.InstallerTest.isWindows:()Z
            ifeq 2
         1: .line 801
            return
         2: .line 803
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 804
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 /* jreRuby */
        start local 1 // java.nio.file.Path jreRuby
         4: .line 805
            aload 1 /* jreRuby */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         5: .line 806
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         6: .line 808
            aload 1 /* jreRuby */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 811
            aload 1 /* jreRuby */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            ldc "r-xr-xr-x"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
         8: .line 810
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
         9: .line 823
            new org.graalvm.component.installer.commands.InstallerTest$1FD
            dup
            aload 0 /* this */
            invokespecial org.graalvm.component.installer.commands.InstallerTest$1FD.<init>:(Lorg/graalvm/component/installer/commands/InstallerTest;)V
            astore 2 /* fd */
        start local 2 // org.graalvm.component.installer.commands.InstallerTest$1FD fd
        10: .line 824
            aload 0 /* this */
            aload 2 /* fd */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.delegateFeedback:(Lorg/graalvm/component/installer/Feedback;)V
        11: .line 825
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
        12: .line 827
            aload 2 /* fd */
            getfield org.graalvm.component.installer.commands.InstallerTest$1FD.errors:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        13: .line 828
            aload 1 /* jreRuby */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        end local 2 // org.graalvm.component.installer.commands.InstallerTest$1FD fd
        14: .line 829
            goto 19
      StackMap locals: org.graalvm.component.installer.commands.InstallerTest java.nio.file.Path
      StackMap stack: java.lang.Throwable
        15: astore 3
        16: .line 831
            aload 1 /* jreRuby */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            ldc "rwxrwxrwx"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
        17: .line 830
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
        18: .line 832
            aload 3
            athrow
        19: .line 831
      StackMap locals:
      StackMap stack:
            aload 1 /* jreRuby */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            ldc "rwxrwxrwx"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
        20: .line 830
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
        21: .line 833
            return
        end local 1 // java.nio.file.Path jreRuby
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   22     0     this  Lorg/graalvm/component/installer/commands/InstallerTest;
            4   22     1  jreRuby  Ljava/nio/file/Path;
           10   14     2       fd  Lorg/graalvm/component/installer/commands/InstallerTest$1FD;
      Exception table:
        from    to  target  type
           9    15      15  any
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testRevertInstallFailureDir();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 837
            invokestatic org.graalvm.component.installer.commands.InstallerTest.isWindows:()Z
            ifeq 2
         1: .line 838
            return
         2: .line 840
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 841
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages"
            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 /* jreLang */
        start local 1 // java.nio.file.Path jreLang
         4: .line 842
            aload 1 /* jreLang */
            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
         5: .line 843
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         6: .line 845
            aload 1 /* jreLang */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 848
            aload 1 /* jreLang */
            ldc "r-xr-xr-x"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
         8: .line 847
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
         9: .line 860
            new org.graalvm.component.installer.commands.InstallerTest$2FD
            dup
            aload 0 /* this */
            invokespecial org.graalvm.component.installer.commands.InstallerTest$2FD.<init>:(Lorg/graalvm/component/installer/commands/InstallerTest;)V
            astore 2 /* fd */
        start local 2 // org.graalvm.component.installer.commands.InstallerTest$2FD fd
        10: .line 861
            aload 0 /* this */
            aload 2 /* fd */
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.delegateFeedback:(Lorg/graalvm/component/installer/Feedback;)V
        11: .line 862
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.revertInstall:()V
        12: .line 864
            aload 2 /* fd */
            getfield org.graalvm.component.installer.commands.InstallerTest$2FD.errors:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        13: .line 865
            aload 1 /* jreLang */
            invokestatic java.nio.file.Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        end local 2 // org.graalvm.component.installer.commands.InstallerTest$2FD fd
        14: .line 866
            goto 19
      StackMap locals: org.graalvm.component.installer.commands.InstallerTest java.nio.file.Path
      StackMap stack: java.lang.Throwable
        15: astore 3
        16: .line 868
            aload 1 /* jreLang */
            ldc "rwxrwxrwx"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
        17: .line 867
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
        18: .line 869
            aload 3
            athrow
        19: .line 868
      StackMap locals:
      StackMap stack:
            aload 1 /* jreLang */
            ldc "rwxrwxrwx"
            invokestatic java.nio.file.attribute.PosixFilePermissions.fromString:(Ljava/lang/String;)Ljava/util/Set;
        20: .line 867
            invokestatic java.nio.file.Files.setPosixFilePermissions:(Ljava/nio/file/Path;Ljava/util/Set;)Ljava/nio/file/Path;
            pop
        21: .line 870
            return
        end local 1 // java.nio.file.Path jreLang
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   22     0     this  Lorg/graalvm/component/installer/commands/InstallerTest;
            4   22     1  jreLang  Ljava/nio/file/Path;
           10   14     2       fd  Lorg/graalvm/component/installer/commands/InstallerTest$2FD;
      Exception table:
        from    to  target  type
           9    15      15  any
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testUnpackExistingSymlinks();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 874
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 875
            return
         2: .line 877
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 878
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "bin/ruby"
            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 /* offending */
        start local 1 // java.nio.file.Path offending
         4: .line 879
            aload 1 /* offending */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         5: .line 880
            aload 1 /* offending */
            ldc "../jre/bin/ruby"
            invokestatic org.graalvm.component.installer.SystemUtils.fromCommonString:(Ljava/lang/String;)Ljava/nio/file/Path;
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createSymbolicLink:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
         6: .line 882
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/languages/ruby/bin/ruby"
            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 2 /* offending2 */
        start local 2 // java.nio.file.Path offending2
         7: .line 883
            aload 2 /* offending2 */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         8: .line 884
            aload 2 /* offending2 */
            ldc "xxx"
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createSymbolicLink:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
         9: .line 886
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setReplaceDiferentFiles:(Z)V
        10: .line 887
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
        11: .line 888
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.createSymlinks:()V
        12: .line 890
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.componentInfo:Lorg/graalvm/component/installer/model/ComponentInfo;
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.getPaths:()Ljava/util/List;
            astore 3 /* paths */
        start local 3 // java.util.List paths
        13: .line 891
            aload 3 /* paths */
            ldc "bin/ruby"
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        14: .line 892
            aload 3 /* paths */
            ldc "jre/languages/ruby/bin/ruby"
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        15: .line 894
            ldc "truffleruby"
            invokestatic org.graalvm.component.installer.SystemUtils.fileName:(Ljava/lang/String;)Ljava/nio/file/Path;
            aload 2 /* offending2 */
            invokestatic java.nio.file.Files.readSymbolicLink:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        16: .line 895
            return
        end local 3 // java.util.List paths
        end local 2 // java.nio.file.Path offending2
        end local 1 // java.nio.file.Path offending
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        this  Lorg/graalvm/component/installer/commands/InstallerTest;
            4   17     1   offending  Ljava/nio/file/Path;
            7   17     2  offending2  Ljava/nio/file/Path;
           13   17     3       paths  Ljava/util/List<Ljava/lang/String;>;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testFailOverwriteFileWithSymlink();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 899
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 902
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "bin/ruby"
            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 /* offending */
        start local 1 // java.nio.file.Path offending
         2: .line 903
            aload 1 /* offending */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         3: .line 904
            aload 1 /* offending */
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createFile:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
         4: .line 906
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Ljava/io/IOException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         5: .line 907
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "INSTALL_OverwriteWithLink"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         6: .line 908
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         7: .line 909
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateSymlinks:()V
         8: .line 910
            return
        end local 1 // java.nio.file.Path offending
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lorg/graalvm/component/installer/commands/InstallerTest;
            2    9     1  offending  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testOverwriteFileWithSymlink();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 914
            invokestatic org.graalvm.component.installer.commands.InstallerTest.isWindows:()Z
            ifeq 2
         1: .line 915
            return
         2: .line 918
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 921
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "bin/ruby"
            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 /* offending */
        start local 1 // java.nio.file.Path offending
         4: .line 922
            aload 1 /* offending */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         5: .line 923
            aload 1 /* offending */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "../jre/bin/ruby"
            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;
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createSymbolicLink:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
         6: .line 925
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setReplaceDiferentFiles:(Z)V
         7: .line 926
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         8: .line 927
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateSymlinks:()V
         9: .line 928
            return
        end local 1 // java.nio.file.Path offending
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/graalvm/component/installer/commands/InstallerTest;
            4   10     1  offending  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testFailOverwriteOtherSymlink();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 932
            invokestatic org.graalvm.component.installer.commands.InstallerTest.isWindows:()Z
            ifeq 2
         1: .line 933
            return
         2: .line 936
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 939
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "bin/ruby"
            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 /* offending */
        start local 1 // java.nio.file.Path offending
         4: .line 940
            aload 1 /* offending */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         5: .line 941
            aload 1 /* offending */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "../x"
            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;
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createSymbolicLink:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
         6: .line 943
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/component/installer/FailedOperationException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         7: .line 944
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.exception:Lorg/junit/rules/ExpectedException;
            ldc "INSTALL_ReplacedFileDiffers"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         8: .line 945
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         9: .line 946
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateSymlinks:()V
        10: .line 947
            return
        end local 1 // java.nio.file.Path offending
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/graalvm/component/installer/commands/InstallerTest;
            4   11     1  offending  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testOverwriteOtherSymlink();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 951
            invokestatic org.graalvm.component.installer.commands.InstallerTest.isWindows:()Z
            ifeq 2
         1: .line 952
            return
         2: .line 954
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "truffleruby2.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         3: .line 957
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "bin/ruby"
            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 /* offending */
        start local 1 // java.nio.file.Path offending
         4: .line 958
            aload 1 /* offending */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         5: .line 959
            aload 1 /* offending */
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "../x"
            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;
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createSymbolicLink:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
         6: .line 961
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         7: .line 962
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setReplaceDiferentFiles:(Z)V
         8: .line 963
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.validateSymlinks:()V
         9: .line 964
            return
        end local 1 // java.nio.file.Path offending
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/graalvm/component/installer/commands/InstallerTest;
            4   10     1  offending  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testComponentRegistryNotWrittenTo();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 971
            aload 0 /* this */
            ldc "trufflerubyWork.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
         1: .line 972
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
         2: .line 973
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
         3: .line 974
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
         4: .line 976
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "lib/installer/components"
            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 /* p */
        start local 1 // java.nio.file.Path p
         5: .line 977
            aload 1 /* p */
            ldc "org.graalvm.ruby.meta"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 2 /* rubyMeta */
        start local 2 // java.nio.file.Path rubyMeta
         6: .line 978
            aload 1 /* p */
            ldc "other"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 3 /* other */
        start local 3 // java.nio.file.Path other
         7: .line 979
            aload 1 /* p */
            ldc "python.list"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 4 /* pythonList */
        start local 4 // java.nio.file.Path pythonList
         8: .line 981
            aload 2 /* rubyMeta */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         9: .line 982
            aload 4 /* pythonList */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        10: .line 984
            aload 3 /* other */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        11: .line 985
            return
        end local 4 // java.nio.file.Path pythonList
        end local 3 // java.nio.file.Path other
        end local 2 // java.nio.file.Path rubyMeta
        end local 1 // java.nio.file.Path p
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lorg/graalvm/component/installer/commands/InstallerTest;
            5   12     1           p  Ljava/nio/file/Path;
            6   12     2    rubyMeta  Ljava/nio/file/Path;
            7   12     3       other  Ljava/nio/file/Path;
            8   12     4  pythonList  Ljava/nio/file/Path;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testOverwriteBlockedFile();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=1
        start local 0 // org.graalvm.component.installer.commands.InstallerTest this
         0: .line 996
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin/ruby"
            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 /* blockedFile */
        start local 1 // java.nio.file.Path blockedFile
         1: .line 997
            aload 1 /* blockedFile */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            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
         2: .line 998
            aload 1 /* blockedFile */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "This is a blocked file"
            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
         3: .line 1000
            new org.graalvm.component.installer.commands.BlockedFileOps
            dup
            invokespecial org.graalvm.component.installer.commands.BlockedFileOps.<init>:()V
            astore 2 /* blockedOps */
        start local 2 // org.graalvm.component.installer.commands.BlockedFileOps blockedOps
         4: .line 1001
            aload 0 /* this */
            aload 2 /* blockedOps */
            putfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
         5: .line 1002
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.FileOperations.init:(Lorg/graalvm/component/installer/Feedback;)V
         6: .line 1003
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.fileOps:Lorg/graalvm/component/installer/FileOperations;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            invokevirtual org.graalvm.component.installer.FileOperations.setRootPath:(Ljava/nio/file/Path;)V
         7: .line 1005
            aload 2 /* blockedOps */
            getfield org.graalvm.component.installer.commands.BlockedFileOps.blockedPaths:Ljava/util/Set;
            aload 1 /* blockedFile */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         8: .line 1006
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.folder:Lorg/junit/rules/TemporaryFolder;
            ldc "delayDeletes"
            invokevirtual org.junit.rules.TemporaryFolder.newFile:(Ljava/lang/String;)Ljava/io/File;
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            astore 3 /* delayDeletes */
        start local 3 // java.nio.file.Path delayDeletes
         9: .line 1007
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.folder:Lorg/junit/rules/TemporaryFolder;
            ldc "copiedDirs"
            invokevirtual org.junit.rules.TemporaryFolder.newFile:(Ljava/lang/String;)Ljava/io/File;
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            astore 4 /* copiedFiles */
        start local 4 // java.nio.file.Path copiedFiles
        10: .line 1008
            aload 2 /* blockedOps */
            aload 3 /* delayDeletes */
            invokevirtual org.graalvm.component.installer.commands.BlockedFileOps.setDelayDeletedList:(Ljava/nio/file/Path;)V
        11: .line 1009
            aload 2 /* blockedOps */
            aload 4 /* copiedFiles */
            invokevirtual org.graalvm.component.installer.commands.BlockedFileOps.setCopyContents:(Ljava/nio/file/Path;)V
        12: .line 1011
            aload 0 /* this */
            ldc "trufflerubyWork.jar"
            invokevirtual org.graalvm.component.installer.commands.InstallerTest.setupComponentInstall:(Ljava/lang/String;)V
        13: .line 1012
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadSymlinks:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setSymlinks:(Ljava/util/Map;)V
        14: .line 1013
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.loader:Lorg/graalvm/component/installer/persist/ComponentPackageLoader;
            invokevirtual org.graalvm.component.installer.persist.ComponentPackageLoader.loadPermissions:()Ljava/util/Map;
            invokevirtual org.graalvm.component.installer.commands.Installer.setPermissions:(Ljava/util/Map;)V
        15: .line 1014
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            iconst_1
            invokevirtual org.graalvm.component.installer.commands.Installer.setReplaceDiferentFiles:(Z)V
        16: .line 1015
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.installer:Lorg/graalvm/component/installer/commands/Installer;
            invokevirtual org.graalvm.component.installer.commands.Installer.install:()V
        17: .line 1017
            aload 2 /* blockedOps */
            invokevirtual org.graalvm.component.installer.commands.BlockedFileOps.getDelayDeletedPaths:()Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        18: .line 1018
            aload 2 /* blockedOps */
            invokevirtual org.graalvm.component.installer.commands.BlockedFileOps.getCopiedPaths:()Ljava/util/Map;
            astore 5 /* copies */
        start local 5 // java.util.Map copies
        19: .line 1019
            aload 0 /* this */
            getfield org.graalvm.component.installer.commands.InstallerTest.targetPath:Ljava/nio/file/Path;
            ldc "jre/bin.new"
            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 6 /* copyDir */
        start local 6 // java.nio.file.Path copyDir
        20: .line 1020
            aload 6 /* copyDir */
            ldc "ruby"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 7 /* copyFile */
        start local 7 // java.nio.file.Path copyFile
        21: .line 1021
            lconst_1
            aload 5 /* copies */
            invokeinterface java.util.Map.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        22: .line 1022
            aload 6 /* copyDir */
            aload 5 /* copies */
            aload 1 /* blockedFile */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        23: .line 1023
            ldc "This is a blocked file"
            aload 1 /* blockedFile */
            invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;)Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        24: .line 1024
            ldc "Test content: ./jre/bin/ruby"
            aload 7 /* copyFile */
            invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;)Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        25: .line 1027
            aload 2 /* blockedOps */
            invokevirtual org.graalvm.component.installer.commands.BlockedFileOps.flush:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        26: .line 1030
            lconst_0
            aload 3 /* delayDeletes */
            invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;)Ljava/util/List;
            invokeinterface java.util.List.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        27: .line 1033
            new java.lang.StringBuilder
            dup
            aload 1 /* blockedFile */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "|"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* copyDir */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* l */
        start local 8 // java.lang.String l
        28: .line 1034
            aload 8 /* l */
            aload 4 /* copiedFiles */
            invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;)Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        29: .line 1035
            return
        end local 8 // java.lang.String l
        end local 7 // java.nio.file.Path copyFile
        end local 6 // java.nio.file.Path copyDir
        end local 5 // java.util.Map copies
        end local 4 // java.nio.file.Path copiedFiles
        end local 3 // java.nio.file.Path delayDeletes
        end local 2 // org.graalvm.component.installer.commands.BlockedFileOps blockedOps
        end local 1 // java.nio.file.Path blockedFile
        end local 0 // org.graalvm.component.installer.commands.InstallerTest this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   30     0          this  Lorg/graalvm/component/installer/commands/InstallerTest;
            1   30     1   blockedFile  Ljava/nio/file/Path;
            4   30     2    blockedOps  Lorg/graalvm/component/installer/commands/BlockedFileOps;
            9   30     3  delayDeletes  Ljava/nio/file/Path;
           10   30     4   copiedFiles  Ljava/nio/file/Path;
           19   30     5        copies  Ljava/util/Map<Ljava/nio/file/Path;Ljava/nio/file/Path;>;
           20   30     6       copyDir  Ljava/nio/file/Path;
           21   30     7      copyFile  Ljava/nio/file/Path;
           28   30     8             l  Ljava/lang/String;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()
}
SourceFile: "InstallerTest.java"
NestMembers:
  org.graalvm.component.installer.commands.InstallerTest$1FD  org.graalvm.component.installer.commands.InstallerTest$2FD
InnerClasses:
  public abstract FileEntry = org.graalvm.component.installer.Archive$FileEntry of org.graalvm.component.installer.Archive
  public Conflict = org.graalvm.component.installer.DependencyException$Conflict of org.graalvm.component.installer.DependencyException
  FD = org.graalvm.component.installer.commands.InstallerTest$1FD
  FD = org.graalvm.component.installer.commands.InstallerTest$2FD