private static void computeNewFeatures(IInstallFeatureOperation[] jobs, Hashtable featureTable) {
   for (int i = 0; i < jobs.length; i++) {
     IInstallFeatureOperation job = jobs[i];
     IConfiguredSite targetSite = job.getTargetSite();
     IFeature newFeature = job.getFeature();
     try {
       computeNewFeature(newFeature, targetSite, featureTable, null);
     } catch (CoreException e) {
     }
   }
 }
 public static ArrayList computeDuplicateConflicts(
     IInstallFeatureOperation job,
     IInstallConfiguration config,
     IConfiguredSite targetSite,
     IFeatureReference[] optionalFeatures) {
   Hashtable featureTable = new Hashtable();
   try {
     computePresentState(featureTable, config);
     computeNewFeature(job.getFeature(), targetSite, featureTable, optionalFeatures);
     return computeConflicts(featureTable);
   } catch (CoreException e) {
     return null;
   }
 }