code: void resolveFeatures(ResolutionMode mode) {
          boolean allowMultipleVersions = mode == ResolutionMode.IGNORE_CONFLICTS ? true : false;
          FeatureResolver resolver = new FeatureResolverImpl();
          Result result = resolver.resolveFeatures(resolverRepository, featureNamesToResolve, Collections.<String> emptySet(), allowMultipleVersions);
          for (String name : result.getResolvedFeatures()) {
              ProvisioningFeatureDefinition feature = resolverRepository.getFeature(name);
              resolvedFeatures.put(feature.getSymbolicName(), feature);
          }
  
          for (String missingFeature : result.getMissing()) {
              Collection<ApplicableToProduct> featureOtherProducts = resolverRepository.getNonApplicableResourcesForName(missingFeature);
              if (featureOtherProducts.isEmpty()) {
                  featuresMissing.add(missingFeature);
              } else {
                  requirementsFoundForOtherProducts.add(missingFeature);
                  for (ApplicableToProduct feature : featureOtherProducts) {
                      resourcesWrongProduct.add(feature);
                  }
              }
          }
      }
docs: Uses the kernel resolver to resolve {@link #featureNamesToResolve} and populates {@link #resolvedFeatures} with the result.