public class org.graalvm.component.installer.remote.MergeStorage extends org.graalvm.component.installer.persist.AbstractCatalogStorage implements org.graalvm.component.installer.ComponentCatalog$DownloadInterceptor
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.component.installer.remote.MergeStorage
  super_class: org.graalvm.component.installer.persist.AbstractCatalogStorage
{
  private final java.util.Map<org.graalvm.component.installer.model.ComponentInfo, org.graalvm.component.installer.SoftwareChannel> channelMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/SoftwareChannel;>;

  private final java.util.List<org.graalvm.component.installer.SoftwareChannel> channels;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/graalvm/component/installer/SoftwareChannel;>;

  private final java.util.Map<org.graalvm.component.installer.SoftwareChannel, org.graalvm.component.installer.SoftwareChannelSource> channelInfos;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/graalvm/component/installer/SoftwareChannel;Lorg/graalvm/component/installer/SoftwareChannelSource;>;

  private boolean ignoreCatalogErrors;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean acceptAllSources;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean idsLoaded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.graalvm.component.installer.model.ComponentRegistry, org.graalvm.component.installer.Feedback);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentRegistry;Lorg/graalvm/component/installer/Feedback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentRegistry localRegistry
        start local 2 // org.graalvm.component.installer.Feedback feedback
         0: .line 60
            aload 0 /* this */
            aload 1 /* localRegistry */
            aload 2 /* feedback */
            aconst_null
            invokespecial org.graalvm.component.installer.persist.AbstractCatalogStorage.<init>:(Lorg/graalvm/component/installer/model/ComponentRegistry;Lorg/graalvm/component/installer/Feedback;Ljava/net/URL;)V
         1: .line 52
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.graalvm.component.installer.remote.MergeStorage.channelMap:Ljava/util/Map;
         2: .line 53
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.graalvm.component.installer.remote.MergeStorage.channels:Ljava/util/List;
         3: .line 54
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.graalvm.component.installer.remote.MergeStorage.channelInfos:Ljava/util/Map;
         4: .line 61
            return
        end local 2 // org.graalvm.component.installer.Feedback feedback
        end local 1 // org.graalvm.component.installer.model.ComponentRegistry localRegistry
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    5     1  localRegistry  Lorg/graalvm/component/installer/model/ComponentRegistry;
            0    5     2       feedback  Lorg/graalvm/component/installer/Feedback;
    MethodParameters:
               Name  Flags
      localRegistry  
      feedback       

  public boolean isAcceptAllSources();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
         0: .line 64
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.acceptAllSources:Z
            ireturn
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/component/installer/remote/MergeStorage;

  public void setAcceptAllSources(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // boolean acceptAllSources
         0: .line 68
            aload 0 /* this */
            iload 1 /* acceptAllSources */
            putfield org.graalvm.component.installer.remote.MergeStorage.acceptAllSources:Z
         1: .line 69
            return
        end local 1 // boolean acceptAllSources
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    2     1  acceptAllSources  Z
    MethodParameters:
                  Name  Flags
      acceptAllSources  

  public void addChannel(org.graalvm.component.installer.SoftwareChannelSource, org.graalvm.component.installer.SoftwareChannel);
    descriptor: (Lorg/graalvm/component/installer/SoftwareChannelSource;Lorg/graalvm/component/installer/SoftwareChannel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // org.graalvm.component.installer.SoftwareChannelSource info
        start local 2 // org.graalvm.component.installer.SoftwareChannel delegate
         0: .line 72
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channels:Ljava/util/List;
            aload 2 /* delegate */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 73
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channelInfos:Ljava/util/Map;
            aload 2 /* delegate */
            aload 1 /* info */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 74
            return
        end local 2 // org.graalvm.component.installer.SoftwareChannel delegate
        end local 1 // org.graalvm.component.installer.SoftwareChannelSource info
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    3     1      info  Lorg/graalvm/component/installer/SoftwareChannelSource;
            0    3     2  delegate  Lorg/graalvm/component/installer/SoftwareChannel;
    MethodParameters:
          Name  Flags
      info      
      delegate  

  public boolean isIgnoreCatalogErrors();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
         0: .line 77
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.ignoreCatalogErrors:Z
            ireturn
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/component/installer/remote/MergeStorage;

  public void setIgnoreCatalogErrors(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // boolean ignoreCatalogErrors
         0: .line 81
            aload 0 /* this */
            iload 1 /* ignoreCatalogErrors */
            putfield org.graalvm.component.installer.remote.MergeStorage.ignoreCatalogErrors:Z
         1: .line 82
            return
        end local 1 // boolean ignoreCatalogErrors
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    2     1  ignoreCatalogErrors  Z
    MethodParameters:
                     Name  Flags
      ignoreCatalogErrors  

  private void reportError(java.lang.Exception, org.graalvm.component.installer.SoftwareChannel);
    descriptor: (Ljava/lang/Exception;Lorg/graalvm/component/installer/SoftwareChannel;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // java.lang.Exception exc
        start local 2 // org.graalvm.component.installer.SoftwareChannel errChannel
         0: .line 85
            aload 1 /* exc */
            ifnonnull 2
         1: .line 86
            return
         2: .line 90
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channelInfos:Ljava/util/Map;
            aload 2 /* errChannel */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.component.installer.SoftwareChannelSource
            astore 3 /* info */
        start local 3 // org.graalvm.component.installer.SoftwareChannelSource info
         3: .line 91
            aload 3 /* info */
            invokevirtual org.graalvm.component.installer.SoftwareChannelSource.getLabel:()Ljava/lang/String;
            astore 4 /* l */
        start local 4 // java.lang.String l
         4: .line 92
            aload 4 /* l */
            ifnonnull 6
         5: .line 93
            aload 3 /* info */
            invokevirtual org.graalvm.component.installer.SoftwareChannelSource.getLocationURL:()Ljava/lang/String;
            astore 4 /* l */
         6: .line 95
      StackMap locals: org.graalvm.component.installer.SoftwareChannelSource java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "REMOTE_CannotLoadChannel"
            aload 1 /* exc */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* l */
            aastore
            dup
            iconst_1
            aload 1 /* exc */
            invokevirtual java.lang.Exception.getLocalizedMessage:()Ljava/lang/String;
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.error:(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)V
         7: .line 96
            return
        end local 4 // java.lang.String l
        end local 3 // org.graalvm.component.installer.SoftwareChannelSource info
        end local 2 // org.graalvm.component.installer.SoftwareChannel errChannel
        end local 1 // java.lang.Exception exc
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    8     1         exc  Ljava/lang/Exception;
            0    8     2  errChannel  Lorg/graalvm/component/installer/SoftwareChannel;
            3    8     3        info  Lorg/graalvm/component/installer/SoftwareChannelSource;
            4    8     4           l  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      exc         
      errChannel  

  public java.util.Set<java.lang.String> listComponentIDs();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=1
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
         0: .line 102
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* ids */
        start local 1 // java.util.Set ids
         1: .line 103
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* savedEx */
        start local 2 // java.util.List savedEx
         2: .line 104
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* errChannels */
        start local 3 // java.util.List errChannels
         3: .line 105
            iconst_0
            istore 4 /* oneSucceeded */
        start local 4 // boolean oneSucceeded
         4: .line 106
            aconst_null
            astore 5 /* toThrow */
        start local 5 // java.lang.Exception toThrow
         5: .line 107
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channels:Ljava/util/List;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 7
            goto 22
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.util.Set java.util.List java.util.List int java.lang.Exception top java.util.Iterator
      StackMap stack:
         6: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.component.installer.SoftwareChannel
            astore 6 /* del */
        start local 6 // org.graalvm.component.installer.SoftwareChannel del
         7: .line 109
            aload 1 /* ids */
            aload 6 /* del */
            invokeinterface org.graalvm.component.installer.SoftwareChannel.getStorage:()Lorg/graalvm/component/installer/model/ComponentStorage;
            invokeinterface org.graalvm.component.installer.model.ComponentStorage.listComponentIDs:()Ljava/util/Set;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
         8: .line 110
            iconst_1
            istore 4 /* oneSucceeded */
         9: .line 111
            goto 22
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.util.Set java.util.List java.util.List int java.lang.Exception org.graalvm.component.installer.SoftwareChannel java.util.Iterator
      StackMap stack: org.graalvm.component.installer.IncompatibleException
        10: astore 8 /* ex */
        start local 8 // org.graalvm.component.installer.IncompatibleException ex
        11: .line 112
            aload 2 /* savedEx */
            aload 8 /* ex */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        12: .line 113
            aload 3 /* errChannels */
            aload 6 /* del */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        13: .line 114
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channels:Ljava/util/List;
            aload 6 /* del */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
        end local 8 // org.graalvm.component.installer.IncompatibleException ex
        14: goto 22
        15: .line 115
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 8 /* ex */
        start local 8 // java.lang.Exception ex
        16: .line 116
            aload 0 /* this */
            invokevirtual org.graalvm.component.installer.remote.MergeStorage.isIgnoreCatalogErrors:()Z
            ifne 18
        17: .line 117
            aload 8 /* ex */
            athrow
        18: .line 119
      StackMap locals: java.lang.Exception
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.idsLoaded:Z
            ifne 20
        19: .line 120
            aload 0 /* this */
            aload 8 /* ex */
            aload 6 /* del */
            invokevirtual org.graalvm.component.installer.remote.MergeStorage.reportError:(Ljava/lang/Exception;Lorg/graalvm/component/installer/SoftwareChannel;)V
        20: .line 122
      StackMap locals:
      StackMap stack:
            aload 8 /* ex */
            astore 5 /* toThrow */
        21: .line 123
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channels:Ljava/util/List;
            aload 6 /* del */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.lang.Exception ex
        end local 6 // org.graalvm.component.installer.SoftwareChannel del
        22: .line 107
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.util.Set java.util.List java.util.List int java.lang.Exception top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        23: .line 126
            iload 4 /* oneSucceeded */
            ifeq 24
            aload 1 /* ids */
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 33
        24: .line 127
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.util.Set java.util.List java.util.List int java.lang.Exception
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        25: goto 28
        26: .line 128
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 2 /* savedEx */
            iload 6 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Exception
            dup
            astore 5 /* toThrow */
            aload 3 /* errChannels */
            iload 6 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.graalvm.component.installer.SoftwareChannel
            invokevirtual org.graalvm.component.installer.remote.MergeStorage.reportError:(Ljava/lang/Exception;Lorg/graalvm/component/installer/SoftwareChannel;)V
        27: .line 127
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        28: iload 6 /* i */
            aload 2 /* savedEx */
            invokeinterface java.util.List.size:()I
            if_icmplt 26
        end local 6 // int i
        29: .line 130
            aload 5 /* toThrow */
            instanceof java.io.IOException
            ifeq 31
        30: .line 131
            aload 5 /* toThrow */
            checkcast java.io.IOException
            athrow
        31: .line 132
      StackMap locals:
      StackMap stack:
            aload 5 /* toThrow */
            ifnull 33
        32: .line 133
            aload 5 /* toThrow */
            checkcast org.graalvm.component.installer.InstallerStopException
            athrow
        33: .line 136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.graalvm.component.installer.remote.MergeStorage.idsLoaded:Z
        34: .line 137
            aload 1 /* ids */
            areturn
        end local 5 // java.lang.Exception toThrow
        end local 4 // boolean oneSucceeded
        end local 3 // java.util.List errChannels
        end local 2 // java.util.List savedEx
        end local 1 // java.util.Set ids
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   35     0          this  Lorg/graalvm/component/installer/remote/MergeStorage;
            1   35     1           ids  Ljava/util/Set<Ljava/lang/String;>;
            2   35     2       savedEx  Ljava/util/List<Ljava/lang/Exception;>;
            3   35     3   errChannels  Ljava/util/List<Lorg/graalvm/component/installer/SoftwareChannel;>;
            4   35     4  oneSucceeded  Z
            5   35     5       toThrow  Ljava/lang/Exception;
            7   22     6           del  Lorg/graalvm/component/installer/SoftwareChannel;
           11   14     8            ex  Lorg/graalvm/component/installer/IncompatibleException;
           16   22     8            ex  Ljava/lang/Exception;
           25   29     6             i  I
      Exception table:
        from    to  target  type
           7     9      10  Class org.graalvm.component.installer.IncompatibleException
           7     9      15  Class java.io.IOException
           7     9      15  Class org.graalvm.component.installer.FailedOperationException
    Exceptions:
      throws java.io.IOException
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  java.util.List<org.graalvm.component.installer.SoftwareChannel> getChannels();
    descriptor: ()Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
         0: .line 141
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channels:Ljava/util/List;
            areturn
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/component/installer/remote/MergeStorage;
    Signature: ()Ljava/util/List<Lorg/graalvm/component/installer/SoftwareChannel;>;

  private int getChannelPriority(org.graalvm.component.installer.SoftwareChannel);
    descriptor: (Lorg/graalvm/component/installer/SoftwareChannel;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // org.graalvm.component.installer.SoftwareChannel ch
         0: .line 145
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channelInfos:Ljava/util/Map;
            aload 1 /* ch */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.component.installer.SoftwareChannelSource
            astore 2 /* src */
        start local 2 // org.graalvm.component.installer.SoftwareChannelSource src
         1: .line 146
            aload 2 /* src */
            ifnull 3
         2: .line 147
            aload 2 /* src */
            invokevirtual org.graalvm.component.installer.SoftwareChannelSource.getPriority:()I
            ireturn
         3: .line 149
      StackMap locals: org.graalvm.component.installer.SoftwareChannelSource
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channels:Ljava/util/List;
            aload 1 /* ch */
            invokeinterface java.util.List.indexOf:(Ljava/lang/Object;)I
            istore 3 /* index */
        start local 3 // int index
         4: .line 150
            iload 3 /* index */
            iconst_m1
            if_icmpne 5
            iconst_0
            goto 6
      StackMap locals: int
      StackMap stack:
         5: iload 3 /* index */
      StackMap locals:
      StackMap stack: int
         6: ireturn
        end local 3 // int index
        end local 2 // org.graalvm.component.installer.SoftwareChannelSource src
        end local 1 // org.graalvm.component.installer.SoftwareChannel ch
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    7     1     ch  Lorg/graalvm/component/installer/SoftwareChannel;
            1    7     2    src  Lorg/graalvm/component/installer/SoftwareChannelSource;
            4    7     3  index  I
    MethodParameters:
      Name  Flags
      ch    

  public java.util.Set<org.graalvm.component.installer.model.ComponentInfo> loadComponentMetadata(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // java.lang.String id
         0: .line 156
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* cis */
        start local 2 // java.util.Set cis
         1: .line 157
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channels:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 16
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.lang.String java.util.Set top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.component.installer.SoftwareChannel
            astore 3 /* swch */
        start local 3 // org.graalvm.component.installer.SoftwareChannel swch
         3: .line 158
            aload 3 /* swch */
            invokeinterface org.graalvm.component.installer.SoftwareChannel.getStorage:()Lorg/graalvm/component/installer/model/ComponentStorage;
            aload 1 /* id */
            invokeinterface org.graalvm.component.installer.model.ComponentStorage.loadComponentMetadata:(Ljava/lang/String;)Ljava/util/Set;
            astore 5 /* newInfos */
        start local 5 // java.util.Set newInfos
         4: .line 159
            aload 5 /* newInfos */
            ifnull 16
            aload 5 /* newInfos */
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 6
         5: .line 160
            goto 16
         6: .line 162
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.lang.String java.util.Set org.graalvm.component.installer.SoftwareChannel java.util.Iterator java.util.Set
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.acceptAllSources:Z
            ifne 8
         7: .line 163
            aload 5 /* newInfos */
            aload 2 /* cis */
            invokeinterface java.util.Set.removeAll:(Ljava/util/Collection;)Z
            pop
         8: .line 165
      StackMap locals:
      StackMap stack:
            aload 5 /* newInfos */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 12
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.lang.String java.util.Set org.graalvm.component.installer.SoftwareChannel java.util.Iterator java.util.Set top java.util.Iterator
      StackMap stack:
         9: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.component.installer.model.ComponentInfo
            astore 6 /* ci */
        start local 6 // org.graalvm.component.installer.model.ComponentInfo ci
        10: .line 166
            aload 6 /* ci */
            aload 0 /* this */
            aload 3 /* swch */
            invokevirtual org.graalvm.component.installer.remote.MergeStorage.getChannelPriority:(Lorg/graalvm/component/installer/SoftwareChannel;)I
            invokevirtual org.graalvm.component.installer.model.ComponentInfo.setPriority:(I)V
        11: .line 167
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channelMap:Ljava/util/Map;
            aload 6 /* ci */
            aload 3 /* swch */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // org.graalvm.component.installer.model.ComponentInfo ci
        12: .line 165
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        13: .line 169
            aload 2 /* cis */
            aload 5 /* newInfos */
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        14: .line 170
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.acceptAllSources:Z
            ifne 16
        15: .line 171
            goto 17
        end local 5 // java.util.Set newInfos
        end local 3 // org.graalvm.component.installer.SoftwareChannel swch
        16: .line 157
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.lang.String java.util.Set top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        17: .line 174
      StackMap locals: org.graalvm.component.installer.remote.MergeStorage java.lang.String java.util.Set
      StackMap stack:
            aload 2 /* cis */
            areturn
        end local 2 // java.util.Set cis
        end local 1 // java.lang.String id
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   18     0      this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0   18     1        id  Ljava/lang/String;
            1   18     2       cis  Ljava/util/Set<Lorg/graalvm/component/installer/model/ComponentInfo;>;
            3   16     3      swch  Lorg/graalvm/component/installer/SoftwareChannel;
            4   16     5  newInfos  Ljava/util/Set<Lorg/graalvm/component/installer/model/ComponentInfo;>;
           10   12     6        ci  Lorg/graalvm/component/installer/model/ComponentInfo;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/lang/String;)Ljava/util/Set<Lorg/graalvm/component/installer/model/ComponentInfo;>;
    MethodParameters:
      Name  Flags
      id    

  public org.graalvm.component.installer.SoftwareChannel getOrigin(org.graalvm.component.installer.model.ComponentInfo);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;)Lorg/graalvm/component/installer/SoftwareChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentInfo ci
         0: .line 178
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.MergeStorage.channelMap:Ljava/util/Map;
            aload 1 /* ci */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.component.installer.SoftwareChannel
            areturn
        end local 1 // org.graalvm.component.installer.model.ComponentInfo ci
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    1     1    ci  Lorg/graalvm/component/installer/model/ComponentInfo;
    MethodParameters:
      Name  Flags
      ci    

  public org.graalvm.component.installer.remote.FileDownloader processDownloader(org.graalvm.component.installer.model.ComponentInfo, org.graalvm.component.installer.remote.FileDownloader);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/remote/FileDownloader;)Lorg/graalvm/component/installer/remote/FileDownloader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentInfo info
        start local 2 // org.graalvm.component.installer.remote.FileDownloader dn
         0: .line 183
            aload 0 /* this */
            aload 1 /* info */
            invokevirtual org.graalvm.component.installer.remote.MergeStorage.getOrigin:(Lorg/graalvm/component/installer/model/ComponentInfo;)Lorg/graalvm/component/installer/SoftwareChannel;
            astore 3 /* orig */
        start local 3 // org.graalvm.component.installer.SoftwareChannel orig
         1: .line 184
            aload 3 /* orig */
            ifnull 2
            aload 3 /* orig */
            aload 1 /* info */
            aload 2 /* dn */
            invokeinterface org.graalvm.component.installer.SoftwareChannel.configureDownloader:(Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/remote/FileDownloader;)Lorg/graalvm/component/installer/remote/FileDownloader;
            goto 3
      StackMap locals: org.graalvm.component.installer.SoftwareChannel
      StackMap stack:
         2: aload 2 /* dn */
      StackMap locals:
      StackMap stack: org.graalvm.component.installer.remote.FileDownloader
         3: areturn
        end local 3 // org.graalvm.component.installer.SoftwareChannel orig
        end local 2 // org.graalvm.component.installer.remote.FileDownloader dn
        end local 1 // org.graalvm.component.installer.model.ComponentInfo info
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    4     1  info  Lorg/graalvm/component/installer/model/ComponentInfo;
            0    4     2    dn  Lorg/graalvm/component/installer/remote/FileDownloader;
            1    4     3  orig  Lorg/graalvm/component/installer/SoftwareChannel;
    MethodParameters:
      Name  Flags
      info  
      dn    

  public org.graalvm.component.installer.persist.MetadataLoader interceptMetadataLoader(org.graalvm.component.installer.model.ComponentInfo, org.graalvm.component.installer.persist.MetadataLoader);
    descriptor: (Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/persist/MetadataLoader;)Lorg/graalvm/component/installer/persist/MetadataLoader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.component.installer.remote.MergeStorage this
        start local 1 // org.graalvm.component.installer.model.ComponentInfo info
        start local 2 // org.graalvm.component.installer.persist.MetadataLoader delegate
         0: .line 189
            aload 0 /* this */
            aload 1 /* info */
            invokevirtual org.graalvm.component.installer.remote.MergeStorage.getOrigin:(Lorg/graalvm/component/installer/model/ComponentInfo;)Lorg/graalvm/component/installer/SoftwareChannel;
            astore 3 /* orig */
        start local 3 // org.graalvm.component.installer.SoftwareChannel orig
         1: .line 190
            aload 3 /* orig */
            instanceof org.graalvm.component.installer.ComponentCatalog$DownloadInterceptor
            ifeq 3
         2: .line 191
            aload 3 /* orig */
            checkcast org.graalvm.component.installer.ComponentCatalog$DownloadInterceptor
            aload 1 /* info */
            aload 2 /* delegate */
            invokeinterface org.graalvm.component.installer.ComponentCatalog$DownloadInterceptor.interceptMetadataLoader:(Lorg/graalvm/component/installer/model/ComponentInfo;Lorg/graalvm/component/installer/persist/MetadataLoader;)Lorg/graalvm/component/installer/persist/MetadataLoader;
            areturn
         3: .line 193
      StackMap locals: org.graalvm.component.installer.SoftwareChannel
      StackMap stack:
            aload 2 /* delegate */
            areturn
        end local 3 // org.graalvm.component.installer.SoftwareChannel orig
        end local 2 // org.graalvm.component.installer.persist.MetadataLoader delegate
        end local 1 // org.graalvm.component.installer.model.ComponentInfo info
        end local 0 // org.graalvm.component.installer.remote.MergeStorage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/graalvm/component/installer/remote/MergeStorage;
            0    4     1      info  Lorg/graalvm/component/installer/model/ComponentInfo;
            0    4     2  delegate  Lorg/graalvm/component/installer/persist/MetadataLoader;
            1    4     3      orig  Lorg/graalvm/component/installer/SoftwareChannel;
    MethodParameters:
          Name  Flags
      info      
      delegate  
}
SourceFile: "MergeStorage.java"
InnerClasses:
  public abstract DownloadInterceptor = org.graalvm.component.installer.ComponentCatalog$DownloadInterceptor of org.graalvm.component.installer.ComponentCatalog