docs: public Map<ResourceType, List<RepositoryResource>> queryAssets(String searchStr, AssetType type) throws InstallException {
          Map<ResourceType, List<RepositoryResource>> results = new HashMap<ResourceType, List<RepositoryResource>>();
          List<RepositoryResource> addOns = new ArrayList<RepositoryResource>();
          List<RepositoryResource> features = new ArrayList<RepositoryResource>();
          List<RepositoryResource> samples = new ArrayList<RepositoryResource>();
          List<RepositoryResource> openSources = new ArrayList<RepositoryResource>();
          RepositoryConnectionList loginInfo = getResolveDirector().getRepositoryConnectionList(null, null, null, this.getClass().getCanonicalName() + ".queryAssets");
          try {
              Collection<ProductDefinition> pdList = new ArrayList<ProductDefinition>();
              for (ProductInfo pi : ProductInfo.getAllProductInfo().values()) {
                  pdList.add(new ProductInfoProductDefinition(pi));
              }
  
              if (type.equals(AssetType.all) || type.equals(AssetType.addon)) {
                  log(Level.FINE, Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("MSG_SEARCHING_ADDONS"));
                  List<ResourceType> tList = new ArrayList<ResourceType>(1);
                  tList.add(ResourceType.FEATURE);
                  addOns.addAll(loginInfo.findResources(searchStr, pdList, tList, Visibility.INSTALL));
              }
  
              if (type.equals(AssetType.all) || type.equals(AssetType.feature)) {
                  log(Level.FINE, Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("MSG_SEARCHING_FEATURES"));
                  List<ResourceType> tList = new ArrayList<ResourceType>(1);
                  tList.add(ResourceType.FEATURE);
                  features.addAll(loginInfo.findResources(searchStr, pdList, tList, Visibility.PUBLIC));
              }
  
              if (type.equals(AssetType.all) || type.equals(AssetType.sample)) {
                  log(Level.FINE, Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("MSG_SEARCHING_SAMPLES"));
                  List<ResourceType> tList = new ArrayList<ResourceType>(1);
                  tList.add(ResourceType.PRODUCTSAMPLE);
                  samples.addAll(loginInfo.findResources(searchStr, pdList, tList, Visibility.PUBLIC));
              }
  
              if (type.equals(AssetType.all) || type.equals(AssetType.opensource)) {
                  log(Level.FINE, Messages.INSTALL_KERNEL_MESSAGES.getLogMessage("MSG_SEARCHING_OPENSOURCE"));
                  List<ResourceType> tList = new ArrayList<ResourceType>(1);
                  tList.add(ResourceType.OPENSOURCE);
                  openSources.addAll(loginInfo.findResources(searchStr, pdList, tList, Visibility.PUBLIC));
              }
  
              log(Level.FINE, "");
          } catch (ProductInfoParseException pipe) {
              throw ExceptionUtils.create(pipe);
          } catch (DuplicateProductInfoException dpie) {
              throw ExceptionUtils.create(dpie);
          } catch (ProductInfoReplaceException pire) {
              throw ExceptionUtils.create(pire);
          } catch (RepositoryException re) {
              throw ExceptionUtils.create(re, re.getCause(), getResolveDirector().getProxy(), getResolveDirector().defaultRepo());
          }
          if (!addOns.isEmpty())
              results.put(ResourceType.ADDON, addOns);
          if (!features.isEmpty())
              results.put(ResourceType.FEATURE, features);
          if (!samples.isEmpty())
              results.put(ResourceType.PRODUCTSAMPLE, samples);
          if (!openSources.isEmpty())
              results.put(ResourceType.OPENSOURCE, openSources);
          return results;
      }