[319642] StructuredTextEditor may complete model lifecycle on a different model
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
index 1e8b207..3d0285d 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
@@ -1072,10 +1072,12 @@
 		initializeDocumentProvider(null);
 	}
 
-	private void aboutToSaveModel() {
-		if (getInternalModel() != null) {
-			getInternalModel().aboutToChangeModel();
+	private IStructuredModel aboutToSaveModel() {
+		IStructuredModel model = getInternalModel();
+		if (model != null) {
+			model.aboutToChangeModel();
 		}
+		return model;
 	}
 
 	protected void addSourceMenuActions(IMenuManager menu) {
@@ -1817,13 +1819,14 @@
 	 * @see org.eclipse.ui.ISaveablePart#doSave(org.eclipse.core.runtime.IProgressMonitor)
 	 */
 	public void doSave(IProgressMonitor progressMonitor) {
+		IStructuredModel model = null;
 		try {
-			aboutToSaveModel();
+			model = aboutToSaveModel();
 			updateEncodingMemento();
 			super.doSave(progressMonitor);
 		}
 		finally {
-			savedModel();
+			savedModel(model);
 		}
 	}
 
@@ -2809,9 +2812,9 @@
 		}
 	}
 
-	private void savedModel() {
-		if (getInternalModel() != null) {
-			getInternalModel().changedModel();
+	private void savedModel(IStructuredModel model) {
+		if (model != null) {
+			model.changedModel();
 		}
 	}