code: public Collection<ProvisioningFeatureDefinition> getAllFeatures() {
          List<ProvisioningFeatureDefinition> result = new ArrayList<>();
          for (Entry<String, List<ProvisioningFeatureDefinition>> entry : symbolicNameToFeature.entrySet()) {
              result.add(getPreferredVersion(entry.getKey(), entry.getValue()));
          }
          return result;
      }
docs: Return all the features in the repository, except where two features have the same symbolic name
  <p>
  If two features exist with the same symbolic name, only the one that would be returned from {@link #getFeature(String)} will be returned here.
  
  @return a collection features