docs: private void downloadAssets(Map<String, List<List<RepositoryResource>>> installResources, String toExtension) throws InstallException {
          if (installResources == null || installResources.isEmpty()) {
              this.installAssets = new ArrayList<List<InstallAsset>>(1);
              return;
          } else {
              this.installAssets = new ArrayList<List<InstallAsset>>(installResources.size());
          }
          int progress = 10;
          int interval1 = installResources.size() == 0 ? 40 : 40 / installResources.size();
          for (Entry<String, List<List<RepositoryResource>>> targetList : installResources.entrySet()) {
              int interval2 = targetList.getValue().size() == 0 ? interval1 : interval1 / targetList.getValue().size();
              for (List<RepositoryResource> mrList : targetList.getValue()) {
                  List<InstallAsset> iaList = new ArrayList<InstallAsset>(mrList.size());
                  this.installAssets.add(iaList);
                  int interval3 = mrList.size() == 0 ? interval2 : interval2 / mrList.size();
                  for (RepositoryResource installResource : mrList) {
                      if (InstallUtils.isDirectoryBasedRepository(installResource))
                          fireDownloadProgressEvent(progress, installResource);
                      progress += interval3;
                      File d = InstallUtils.getFileDirectoryBasedRepository(installResource);
                      if (installResource.getType().equals(ResourceType.FEATURE)) {
                          EsaResource esa = (EsaResource) installResource;
                          ESAAsset esaAsset;
                          String target = targetList.getKey();
                          try {
                              if (d != null) {
                                  esaAsset = new ESAAsset(esa.getName(), esa.getProvideFeature(), InstallUtils.toExtension(target, toExtension), d, false);
                                  if (esaAsset.getSubsystemEntry() == null) {
                                      throw ExceptionUtils.create(Messages.PROVISIONER_MESSAGES.getLogMessage("tool.install.content.no.subsystem.manifest"),
                                                                  InstallException.BAD_FEATURE_DEFINITION);
                                  }
                                  ProvisioningFeatureDefinition fd = esaAsset.getProvisioningFeatureDefinition();
                                  if (!fd.isSupportedFeatureVersion()) {
                                      throw ExceptionUtils.create(Messages.PROVISIONER_MESSAGES.getLogMessage("UNSUPPORTED_FEATURE_VERSION", fd.getFeatureName(),
                                                                                                              fd.getIbmFeatureVersion()),
                                                                  InstallException.BAD_FEATURE_DEFINITION);
                                  }
                              } else {
                                  esaAsset = new ESAAsset(esa.getName(), esa.getProvideFeature(), InstallUtils.toExtension(target, toExtension), esa);
                              }
                              iaList.add(esaAsset);
                          } catch (Exception e) {
                              throw ExceptionUtils.createByKey(e, "ERROR_INVALID_ESA", esa.getName());
                          }
                      } else if (installResource.getType().equals(ResourceType.IFIX)) {
                          try {
                              if (d != null)
                                  iaList.add(new FixAsset(installResource.getName(), d, false));
                              else
                                  iaList.add(new FixAsset(installResource.getName(), (IfixResource) installResource));
                          } catch (Exception e) {
                              throw ExceptionUtils.createByKey(e, "ERROR_INVALID_IFIX", installResource.getName());
                          }
                      } else if (installResource.getType().equals(ResourceType.PRODUCTSAMPLE)) {
                          try {
                              if (d != null)
                                  iaList.add(new SampleAsset(installResource.getName(), ((SampleResource) installResource).getShortName(), d, false));
                              else
                                  iaList.add(new SampleAsset((SampleResource) installResource));
                          } catch (Exception e) {
                              throw ExceptionUtils.createByKey(e, "ERROR_INVALID_SAMPLE", installResource.getName());
                          }
                      } else if (installResource.getType().equals(ResourceType.OPENSOURCE)) {
                          try {
                              if (d != null)
                                  iaList.add(new OpenSourceAsset(installResource.getName(), ((SampleResource) installResource).getShortName(), d, false));
                              else
                                  iaList.add(new OpenSourceAsset((SampleResource) installResource));
                          } catch (Exception e) {
                              throw ExceptionUtils.createByKey(e, "ERROR_INVALID_OPENSOURCE", installResource.getName());
                          }
                      }
                  }
              }
          }
      }