code: @Trivial
      public static String lowerFeature(String inFeature) {
          if (inFeature == null || inFeature.isEmpty())
              return inFeature;
  
          // Preserve the prefix (no case shift)
          int colonIndex = inFeature.indexOf(":");
  
          if (colonIndex > -1 && inFeature.length() > colonIndex) {
              // Put together preserved extension name with the downcased feature name
              return inFeature.substring(0, colonIndex).trim() + ':' + inFeature.substring(colonIndex + 1).trim().toLowerCase(Locale.ENGLISH);
          } else {
              return inFeature.toLowerCase(Locale.ENGLISH).trim();
          }
      }
docs: Get feature name with product extension unchanged and the
  feature name converted to lower case.
  
  note: feature type in featureLocations is case specific.
  In order for the bundles to be found, the case of the
  product extension in the feature name needs to be preserved.
  If it is not, an incorrect bundle repository type will be put into
  the feature definition when it is loaded from the feature cache.
  
  @param inFeature feature name
  @return String product extension unchanged and the feature name converted to lower case.