private boolean isAffected(BundleDescription desc, BundleDescription dependent) {
   ImportPackageSpecification[] imports = dependent.getImportPackages();
   Iterator iter = fElements.keySet().iterator();
   while (iter.hasNext()) {
     String name = ((IJavaElement) iter.next()).getElementName();
     for (int i = 0; i < imports.length; i++) {
       if (name.equals(imports[i].getName())) {
         BaseDescription supplier = imports[i].getSupplier();
         if (supplier instanceof ExportPackageDescription) {
           if (desc.equals(((ExportPackageDescription) supplier).getExporter())) return true;
         }
       }
     }
   }
   return false;
 }
 protected void addBundleManifestChange(CompositeChange result, IProgressMonitor pm)
     throws CoreException {
   super.addBundleManifestChange(result, pm);
   IMonitorModelBase model = MonitorRegistry.findModel(fProject);
   if (model != null) {
     BundleDescription desc = model.getBundleDescription();
     if (desc != null) {
       BundleDescription[] dependents = desc.getDependents();
       for (int i = 0; i < dependents.length; i++) {
         if (isAffected(desc, dependents[i])) {
           IMonitorModelBase candidate = MonitorRegistry.findModel(dependents[i]);
           if (candidate instanceof IBundlePluginModelBase) {
             IFile file = (IFile) candidate.getUnderlyingResource();
             addBundleManifestChange(file, result, pm);
           }
         }
       }
     }
   }
 }