[331590] ModelManager overly-synchronized for getting referenceCounts
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
index 09a96e1..82c1854 100644
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
@@ -1518,12 +1518,12 @@
 		if (sharedObject != null) {
 			SYNC.release();
 			sharedObject.waitForLoadAttempt();
-			SYNC.acquire();
 			synchronized (sharedObject) {
 				count = sharedObject.referenceCountForRead + sharedObject.referenceCountForEdit;
 			}
+		} else {
+			SYNC.release();
 		}
-		SYNC.release();
 		return count;
 	}
 
@@ -1566,12 +1566,12 @@
 		if (sharedObject != null) {
 			SYNC.release();
 			sharedObject.waitForLoadAttempt();
-			SYNC.acquire();
 			synchronized(sharedObject) {
 				count = sharedObject.referenceCountForRead;
 			}
+		} else {
+			SYNC.release();
 		}
-		SYNC.release();
 		return count;
 	}
 
@@ -1599,12 +1599,12 @@
 		if (sharedObject != null) {
 			SYNC.release();
 			sharedObject.waitForLoadAttempt();
-			SYNC.acquire();
 			synchronized(sharedObject) {
 				count = sharedObject.referenceCountForRead + sharedObject.referenceCountForEdit;
 			}
+		} else {
+			SYNC.release();
 		}
-		SYNC.release();
 		result = count > 1;
 		return result;
 	}
@@ -1651,12 +1651,12 @@
 		if (sharedObject != null) {
 			SYNC.release();
 			sharedObject.waitForLoadAttempt();
-			SYNC.acquire();
 			synchronized(sharedObject) {
 				count = sharedObject.referenceCountForRead;
 			}
+		} else {
+			SYNC.release();
 		}
-		SYNC.release();
 		result = count > 1;
 		return result;
 	}