diff --git a/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
index 08ae4d5..4106cd4 100644
--- a/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.validation/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.wst.validation; singleton:=true
-Bundle-Version: 1.2.200.qualifier
+Bundle-Version: 1.2.300.qualifier
 Bundle-Activator: org.eclipse.wst.validation.internal.plugin.ValidationPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.wst.validation/vf2/org/eclipse/wst/validation/internal/DependencyIndex.java b/plugins/org.eclipse.wst.validation/vf2/org/eclipse/wst/validation/internal/DependencyIndex.java
index fe1db15..074593b 100644
--- a/plugins/org.eclipse.wst.validation/vf2/org/eclipse/wst/validation/internal/DependencyIndex.java
+++ b/plugins/org.eclipse.wst.validation/vf2/org/eclipse/wst/validation/internal/DependencyIndex.java
@@ -157,7 +157,7 @@
 				}				
 			}
 			catch (EOFException e){
-				Tracing.log("Unable to read the dependency index file because of EOF exception"); 
+				Tracing.log("Unable to read the dependency index file because of EOF exception");  //$NON-NLS-1$
 			}
 			catch (IOException e){
 				error = true;
@@ -177,7 +177,8 @@
 	public synchronized void clear(IProject project) {
 		init();
 		for (Map.Entry<IResource,Set<Depends>> me : _dependents.entrySet()){
-			if (me.getKey().getProject() == project){
+			IResource key = me.getKey();
+			if (key != null && key.getProject() == project){
 				for (Depends d : me.getValue()){
 					if (d.delete())_dirty = true;
 				}
@@ -228,7 +229,7 @@
 		}
 	}
 		
-	public boolean isDependedOn(IResource resource) {
+	public synchronized boolean isDependedOn(IResource resource) {
 		init();
 		Set<Depends> set = _dependsOn.get(resource);
 		if (set == null || set.size() == 0)return false;
@@ -289,10 +290,8 @@
 			for (Depends d : me.getValue()){
 				IPath path = d.getDependent().getFullPath();
 				if (path != null){
-					DependsResolved dr = new DependsResolved();
-					dr.resource = path.toPortableString();
-					if (d.getValidators().size() > 0){
-						dr.validators = d.getValidators();
+					DependsResolved dr = new DependsResolved(path.toPortableString(), d.getValidators());
+					if (dr.validators.size() > 0){
 						set.add(dr);
 					}
 				}				
@@ -320,16 +319,16 @@
 	 * @author karasiuk
 	 * 
 	 */
-	private static class Depends {
+	private final static class Depends {
 
 		/** The resource that is being depended on, for example a.xsd */
-		private IResource _dependsOn;
+		private final IResource _dependsOn;
 
 		/** The resource that is dependent, for example a.xml */
-		private IResource _dependent;
+		private final IResource _dependent;
 
 		/** The id's of the validators that have asserted the dependency. */
-		private Set<String> _validators;
+		private final Set<String> _validators;
 
 		public Depends(IResource dependent, IResource dependsOn) {
 			_dependent = dependent;
@@ -367,9 +366,15 @@
 		}
 }
 
-	private static class DependsResolved {
-		String 		resource;
-		Set<String> validators;
+	private final static class DependsResolved {
+		final String 		resource;
+		final Set<String> validators;
+		
+		DependsResolved(String resource, Set<String> validators){
+			this.resource = resource;
+			this.validators = validators;
+			
+		}
 	}
 
 
