[212987] Threading problems in GenericPositionManager
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/GenericPositionManager.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/GenericPositionManager.java
index 84355f1..05c6856 100644
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/GenericPositionManager.java
+++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/text/GenericPositionManager.java
@@ -74,7 +74,7 @@
 	 * @see org.eclipse.jface.text.IDocument#addPosition(java.lang.String,
 	 *      org.eclipse.jface.text.Position)
 	 */
-	public void addPosition(String category, Position position) throws BadLocationException, BadPositionCategoryException {
+	public synchronized void addPosition(String category, Position position) throws BadLocationException, BadPositionCategoryException {
 
 		if ((0 > position.offset) || (0 > position.length) || (position.offset + position.length > getDocumentLength()))
 			throw new BadLocationException();
@@ -153,7 +153,7 @@
 	 * 
 	 * @see IDocument#computeIndexInCategory(String, int)
 	 */
-	protected int computeIndexInPositionList(List positions, int offset) {
+	protected synchronized int computeIndexInPositionList(List positions, int offset) {
 
 		if (positions.size() == 0)
 			return 0;
@@ -302,7 +302,7 @@
 	 * @see org.eclipse.jface.text.IDocument#insertPositionUpdater(org.eclipse.jface.text.IPositionUpdater,
 	 *      int)
 	 */
-	public void insertPositionUpdater(IPositionUpdater updater, int index) {
+	public synchronized void insertPositionUpdater(IPositionUpdater updater, int index) {
 
 		for (int i = fPositionUpdaters.size() - 1; i >= 0; i--) {
 			if (fPositionUpdaters.get(i) == updater)
@@ -329,7 +329,7 @@
 	 * @see org.eclipse.jface.text.IDocument#removePosition(java.lang.String,
 	 *      org.eclipse.jface.text.Position)
 	 */
-	public void removePosition(String category, Position position) throws BadPositionCategoryException {
+	public synchronized void removePosition(String category, Position position) throws BadPositionCategoryException {
 
 		if (position == null)
 			return;
@@ -368,7 +368,7 @@
 	/*
 	 * @see org.eclipse.jface.text.IDocument#removePositionUpdater(org.eclipse.jface.text.IPositionUpdater)
 	 */
-	public void removePositionUpdater(IPositionUpdater updater) {
+	public synchronized void removePositionUpdater(IPositionUpdater updater) {
 		for (int i = fPositionUpdaters.size() - 1; i >= 0; i--) {
 			if (fPositionUpdaters.get(i) == updater) {
 				fPositionUpdaters.remove(i);
@@ -387,7 +387,7 @@
 	 *            the document event describing the change to which to adapt
 	 *            the positions
 	 */
-	protected void updatePositions(DocumentEvent event) {
+	protected synchronized void updatePositions(DocumentEvent event) {
 		List list = new ArrayList(fPositionUpdaters);
 		Iterator e = list.iterator();
 		while (e.hasNext()) {