code: private void collectFeatureInfos(Map<String, ProductInfo> productInfos,
                                       Map<String, FeatureInfo> featuresBySymbolicName) {
          ManifestFileProcessor manifestFileProcessor = new ManifestFileProcessor();
          for (Map.Entry<String, Map<String, ProvisioningFeatureDefinition>> productEntry : manifestFileProcessor.getFeatureDefinitionsByProduct().entrySet()) {
              String productName = productEntry.getKey();
              Map<String, ProvisioningFeatureDefinition> features = productEntry.getValue();
  
              ContentBasedLocalBundleRepository repository;
              if (productName.equals(ManifestFileProcessor.CORE_PRODUCT_NAME)) {
                  repository = BundleRepositoryRegistry.getInstallBundleRepository();
              } else if (productName.equals(ManifestFileProcessor.USR_PRODUCT_EXT_NAME)) {
                  repository = BundleRepositoryRegistry.getUsrInstallBundleRepository();
              } else {
                  repository = manifestFileProcessor.getBundleRepository(productName, null);
              }
  
              ProductInfo productInfo = new ProductInfo(repository);
              productInfos.put(productName, productInfo);
  
              for (Map.Entry<String, ProvisioningFeatureDefinition> featureEntry : features.entrySet()) {
                  String featureSymbolicName = featureEntry.getKey();
                  ProvisioningFeatureDefinition feature = featureEntry.getValue();
  
                  FeatureInfo featureInfo = new FeatureInfo(productInfo, feature);
                  featuresBySymbolicName.put(featureSymbolicName, featureInfo);
  
                  String shortName = feature.getIbmShortName();
                  if (shortName != null) {
                      productInfo.featuresByShortName.put(shortName, featureInfo);
                  }
              }
          }
      }
docs: Collect information about all installed products and their features.
  
  @param productInfos result parameter of product name (prefix) to info
  @param featuresBySymbolicName result parameter of symbolic name to info