[130402] contentassistprocessor provisional extension point crashes workbench
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
index 62bb1dc..d621b35 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
@@ -49,7 +49,7 @@
 		if (fProcessors == null)
 			fProcessors = new HashMap();
 
-		CompoundContentAssistProcessor compoundProcessor = (CompoundContentAssistProcessor) getContentAssistProcessor(partitionType);
+		CompoundContentAssistProcessor compoundProcessor = getExistingContentAssistProcessor(partitionType);
 
 		// if processor is null, you want to remove all processors of
 		// contentType
@@ -72,6 +72,21 @@
 		super.setContentAssistProcessor(compoundProcessor, partitionType);
 	}
 
+	private CompoundContentAssistProcessor getExistingContentAssistProcessor(String partitionType) {
+		CompoundContentAssistProcessor compoundContentAssistProcessor = null;
+		IContentAssistProcessor processor = super.getContentAssistProcessor(partitionType);
+		if (processor != null) {
+			if (processor instanceof CompoundContentAssistProcessor) {
+				compoundContentAssistProcessor = (CompoundContentAssistProcessor) processor;
+			}
+			else {
+				throw new IllegalStateException("StructuredContentAssistant use CompoundContentAssistProcessor");
+			}
+		}
+		return compoundContentAssistProcessor;
+
+	}
+
 	/**
 	 * Returns the content assist processor to be used for the given content
 	 * type. Also installs any content assist processors that were added by