public ExtensionsErrorReporter(IFile file) {
   super(file);
   fModel = MonitorRegistry.findModel(file.getProject());
   try {
     if (fModel != null && fModel.getUnderlyingResource() != null)
       fBuildModel = ClasspathUtilCore.getBuild(fModel);
   } catch (CoreException e) {
   }
 }
 private static boolean hasChanged(IMonitorModelBase model, long timestamp) {
   if (model.getUnderlyingResource() != null) {
     File[] files = new File(model.getInstallLocation()).listFiles();
     if (files != null) {
       for (int i = 0; i < files.length; i++) {
         if (files[i].isDirectory()) continue;
         String name = files[i].getName();
         if (name.startsWith(Constants.BUNDLE_LOCALIZATION_DEFAULT_BASENAME)
             && name.endsWith(".properties") // $NON-NLS-1$
             && files[i].lastModified() > timestamp) {
           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);
           }
         }
       }
     }
   }
 }