[155335] StructuredTextEditor.dispose null pointer.
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 29264ac..efe4d95 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
@@ -2017,11 +2017,15 @@
 			fStructuredModel.removeModelStateListener(getInternalModelStateListener());
 		}
 
-		IDocument doc = getDocumentProvider().getDocument(getEditorInput());
-		if (doc != null) {
-			doc.removeDocumentListener(getInternalDocumentListener());
-			if (doc instanceof IExecutionDelegatable) {
-				((IExecutionDelegatable) doc).setExecutionDelegate(null);
+		// BUG155335 - if there was no document provider, there was nothing added
+		// to document, so nothing to remove
+		if (getDocumentProvider() != null) {
+			IDocument doc = getDocumentProvider().getDocument(getEditorInput());
+			if (doc != null) {
+				doc.removeDocumentListener(getInternalDocumentListener());
+				if (doc instanceof IExecutionDelegatable) {
+					((IExecutionDelegatable) doc).setExecutionDelegate(null);
+				}
 			}
 		}
 
@@ -2121,72 +2125,64 @@
 	 * @see org.eclipse.ui.texteditor.AbstractTextEditor#doSetInput(org.eclipse.ui.IEditorInput)
 	 */
 	protected void doSetInput(IEditorInput input) throws CoreException {
-		try {
-			// TODO: if opened in more than one editor, this will cause
-			// problems.
-			IEditorInput oldInput = getEditorInput();
-			if (oldInput != null) {
-				IDocument olddoc = getDocumentProvider().getDocument(oldInput);
-				if (olddoc != null && olddoc instanceof IExecutionDelegatable) {
-					((IExecutionDelegatable) olddoc).setExecutionDelegate(null);
-				}
+		// TODO: if opened in more than one editor, this will cause
+		// problems.
+		IEditorInput oldInput = getEditorInput();
+		if (oldInput != null) {
+			IDocument olddoc = getDocumentProvider().getDocument(oldInput);
+			if (olddoc != null && olddoc instanceof IExecutionDelegatable) {
+				((IExecutionDelegatable) olddoc).setExecutionDelegate(null);
 			}
-
-			if (fStructuredModel != null && !(getDocumentProvider() instanceof IModelProvider)) {
-				fStructuredModel.releaseFromEdit();
-			}
-
-			super.doSetInput(input);
-
-			IDocument newDocument = getDocumentProvider().getDocument(input);
-			if (newDocument instanceof IExecutionDelegatable) {
-				((IExecutionDelegatable) newDocument).setExecutionDelegate(new EditorExecutionContext(this));
-			}
-
-			IStructuredModel model = null;
-			// if we have a Model provider, get the model from it
-			if (getDocumentProvider() instanceof IModelProvider) {
-				model = ((IModelProvider) getDocumentProvider()).getModel(getEditorInput());
-				if (!model.isShared()) {
-					EditorModelUtil.addFactoriesTo(model);
-				}
-			}
-			else {
-				if (newDocument instanceof IStructuredDocument) {
-					// corresponding releaseFromEdit occurs in
-					// dispose()
-					model = StructuredModelManager.getModelManager().getModelForEdit((IStructuredDocument) newDocument);
-					EditorModelUtil.addFactoriesTo(model);
-				}
-
-				else {
-					logUnexpectedDocumentKind(input);
-				}
-			}
-
-			if (fStructuredModel != null || model != null) {
-				setModel(model);
-			}
-
-			if (getInternalModel() != null) {
-				updateEditorControlsForContentType(getInternalModel().getContentTypeIdentifier());
-			}
-			else {
-				updateEditorControlsForContentType(null);
-			}
-
-			if (fProjectionModelUpdater != null)
-				fProjectionModelUpdater.initialize();
-
-			// start editor with smart insert mode
-			setInsertMode(SMART_INSERT);
 		}
-		catch (CoreException exception) {
-			// dispose editor
-			dispose();
 
-			throw new CoreException(exception.getStatus());
+		if (fStructuredModel != null && !(getDocumentProvider() instanceof IModelProvider)) {
+			fStructuredModel.releaseFromEdit();
 		}
+
+		super.doSetInput(input);
+
+		IDocument newDocument = getDocumentProvider().getDocument(input);
+		if (newDocument instanceof IExecutionDelegatable) {
+			((IExecutionDelegatable) newDocument).setExecutionDelegate(new EditorExecutionContext(this));
+		}
+
+		IStructuredModel model = null;
+		// if we have a Model provider, get the model from it
+		if (getDocumentProvider() instanceof IModelProvider) {
+			model = ((IModelProvider) getDocumentProvider()).getModel(getEditorInput());
+			if (!model.isShared()) {
+				EditorModelUtil.addFactoriesTo(model);
+			}
+		}
+		else {
+			if (newDocument instanceof IStructuredDocument) {
+				// corresponding releaseFromEdit occurs in
+				// dispose()
+				model = StructuredModelManager.getModelManager().getModelForEdit((IStructuredDocument) newDocument);
+				EditorModelUtil.addFactoriesTo(model);
+			}
+
+			else {
+				logUnexpectedDocumentKind(input);
+			}
+		}
+
+		if (fStructuredModel != null || model != null) {
+			setModel(model);
+		}
+
+		if (getInternalModel() != null) {
+			updateEditorControlsForContentType(getInternalModel().getContentTypeIdentifier());
+		}
+		else {
+			updateEditorControlsForContentType(null);
+		}
+
+		if (fProjectionModelUpdater != null)
+			fProjectionModelUpdater.initialize();
+
+		// start editor with smart insert mode
+		setInsertMode(SMART_INSERT);
 	}
 
 	/**