docs: public static List<ProductExtensionInfo> getProductExtensions(File installDir) {
          ArrayList<ProductExtensionInfo> productList = new ArrayList<ProductExtensionInfo>();
          Set<String> extensionsSoFar = new HashSet<String>();
  
          // Get the embedder SPI product extensions
          HashMap<String, Properties> embedderProductExtensions = getExtraProductExtensions();
          if (embedderProductExtensions != null) {
              ProductExtensionInfo prodInfo;
              for (Entry<String, Properties> entry : embedderProductExtensions.entrySet()) {
                  String name = entry.getKey();
                  Properties featureProperties = entry.getValue();
                  if (ExtensionConstants.USER_EXTENSION.equalsIgnoreCase(name) == false) {
                      String installLocation = featureProperties.getProperty(ProductExtension.PRODUCT_EXTENSIONS_INSTALL);
                      String productId = featureProperties.getProperty(ProductExtension.PRODUCT_EXTENSIONS_ID);
                      prodInfo = new ProductExtensionInfoImpl(name, productId, installLocation);
                      productList.add(prodInfo);
                      extensionsSoFar.add(name);
                  }
              }
          }
  
          // Apply any product extensions specified from the WLP_PRODUCT_EXT_DIR environment variable
          String extensionEnv = System.getenv(PRODUCT_EXTENSIONS_ENV);
          if (extensionEnv != null) {
              File productExtensionEnvDir = new File(extensionEnv);
              if (!!!productExtensionEnvDir.isAbsolute()) {
                  productExtensionEnvDir = getFileFromDirectory(installDir.getParentFile(), extensionEnv);
              }
  
              // Extensions added by the embedder SPI will override extensions from the WLP_PRODUCT_EXT_DIR env of the same name.
              String envData = mergeExtensions(productList, extensionsSoFar, productExtensionEnvDir);
  
              // Push Env Product Extension information found via Env to FrameworkManager for issuing a Message.
              System.clearProperty(BootstrapConstants.ENV_PRODUCT_EXTENSIONS_ADDED_BY_ENV);
              if (!!!envData.isEmpty()) {
                  System.setProperty(BootstrapConstants.ENV_PRODUCT_EXTENSIONS_ADDED_BY_ENV, envData);
              }
          }
  
          // Get the installed etc/extensions.
          File productExtensionsDir = getExtensionDir(installDir);
  
          // Extensions added by the embedder SPI or WLP_PRODUCT_EXT_DIR
          // will override extensions of the same name that exist in the install root.
          mergeExtensions(productList, extensionsSoFar, productExtensionsDir);
  
          return productList;
      }