This commit was manufactured by cvs2svn to create tag 'v200904020304'.
diff --git a/bundles/org.eclipse.jst.jsp.core/.classpath b/bundles/org.eclipse.jst.jsp.core/.classpath
deleted file mode 100644
index ca82c98..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.classpath
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4">
-		<accessrules>
-			<accessrule kind="accessible" pattern="org/eclipse/wst/sse/**"/>
-		</accessrules>
-	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
-		<accessrules>
-			<accessrule kind="accessible" pattern="org/eclipse/wst/sse/core/**"/>
-			<accessrule kind="accessible" pattern="org/eclipse/wst/xml/core/**"/>
-			<accessrule kind="accessible" pattern="org/eclipse/wst/css/core/**"/>
-			<accessrule kind="accessible" pattern="org/eclipse/wst/html/core/**"/>
-			<accessrule kind="accessible" pattern="org/eclipse/wst/validation/**"/>
-		</accessrules>
-	</classpathentry>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.jst.jsp.core/.cvsignore b/bundles/org.eclipse.jst.jsp.core/.cvsignore
deleted file mode 100644
index 12f30eb..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-bin
-temp.folder
-jspmodel.jar
-dev.properties
-org.eclipse.jst.jsp.core_6.0.0.jar
-build.xml
-org.eclipse.jst.jsp.core_6.0.0.zip
-jspmodelsrc.zip
-@dot
-src.zip
-javaCompiler...args
diff --git a/bundles/org.eclipse.jst.jsp.core/.options b/bundles/org.eclipse.jst.jsp.core/.options
deleted file mode 100644
index 89a2c96..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.options
+++ /dev/null
@@ -1,35 +0,0 @@
-org.eclipse.jst.jsp.core/debug=true
-org.eclipse.jst.jsp.core/debug/tracefilter=
-org.eclipse.jst.jsp.core/debug/jspindexmanager=false
-org.eclipse.jst.jsp.core/debug/jsptranslation=false
-org.eclipse.jst.jsp.core/debug/jsptranslationstodisk=false
-org.eclipse.jst.jsp.core/debug/jspsearch=false
-
-org.eclipse.jst.jsp.core/taglib/resolve=false
-
-
-# org.eclipse.jst.jsp.core.contentmodel.tld.TLDCMDocumentManager._debug
-org.eclipse.jst.jsp.core/debug/tldcmdocument/manager=false
-org.eclipse.jst.jsp.core/debug/tldcmdocument/cache=false
-
-# org.eclipse.jst.jsp.core.contentmodel.tld.CMDocumentFactoryTLD._debug
-org.eclipse.jst.jsp.core/debug/tldcmdocument/factory=false
-
-#org.eclipse.jst.jsp.core.internal.contentmodel.ProjectDescription._debugIndexCreation
-org.eclipse.jst.jsp.core/taglib/indexcreation=false
-#org.eclipse.jst.jsp.core.internal.contentmodel.ProjectDescription._debugIndexTime
-org.eclipse.jst.jsp.core/taglib/indextime=false
-
-#org.eclipse.jst.jsp.core.internal.contentmodel.TaglibIndex._debugEvents
-org.eclipse.jst.jsp.core/taglib/events=false
-#org.eclipse.jst.jsp.core.internal.contentmodel.TaglibIndex._debugIndexCreation
-org.eclipse.jst.jsp.core/taglib/indexcreation=false
-#org.eclipse.jst.jsp.core.internal.contentmodel.TaglibIndex._debugResolution
-org.eclipse.jst.jsp.core/taglib/resolve=false
-
-org.eclipse.jst.jsp.core/debug/jspjavamapping=false
-
-org.eclipse.jst.jsp.core/debug/jspvalidator=false
-org.eclipse.jst.jsp.core/debug/taglibvars=false
-
-org.eclipse.jst.jsp.core/debug/taglibclassloader
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/.project b/bundles/org.eclipse.jst.jsp.core/.project
deleted file mode 100644
index 0f10b7a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jst.jsp.core</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index afa5c91..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:32 EDT 2006
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.runtime.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.runtime.prefs
deleted file mode 100644
index 7ec5750..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.runtime.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Mon Apr 17 01:48:39 EDT 2006
-eclipse.preferences.version=1
-line.separator=\r\n
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 66ddc69..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,79 +0,0 @@
-#Wed Mar 28 02:56:12 EDT 2007

-eclipse.preferences.version=1

-org.eclipse.jdt.core.builder.cleanOutputFolder=clean

-org.eclipse.jdt.core.builder.duplicateResourceTask=warning

-org.eclipse.jdt.core.builder.invalidClasspath=ignore

-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch

-org.eclipse.jdt.core.circularClasspath=error

-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled

-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled

-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled

-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2

-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

-org.eclipse.jdt.core.compiler.compliance=1.4

-org.eclipse.jdt.core.compiler.debug.lineNumber=generate

-org.eclipse.jdt.core.compiler.debug.localVariable=generate

-org.eclipse.jdt.core.compiler.debug.sourceFile=generate

-org.eclipse.jdt.core.compiler.doc.comment.support=enabled

-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100

-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning

-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore

-org.eclipse.jdt.core.compiler.problem.deprecation=ignore

-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning

-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore

-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error

-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore

-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error

-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore

-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled

-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled

-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private

-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore

-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error

-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled

-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public

-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore

-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled

-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore

-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=error

-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error

-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled

-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error

-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled

-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore

-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore

-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning

-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore

-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning

-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore

-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error

-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

-org.eclipse.jdt.core.compiler.problem.unusedImport=error

-org.eclipse.jdt.core.compiler.problem.unusedLabel=error

-org.eclipse.jdt.core.compiler.problem.unusedLocal=error

-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error

-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

-org.eclipse.jdt.core.compiler.source=1.3

-org.eclipse.jdt.core.incompatibleJDKLevel=ignore

-org.eclipse.jdt.core.incompleteClasspath=error

diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 301c7ad..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Mon Apr 17 01:48:39 EDT 2006
-eclipse.preferences.version=1
-internal.default.compliance=default
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<templates/>
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.ltk.core.refactoring.prefs
deleted file mode 100644
index c59368c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.ltk.core.refactoring.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:32 EDT 2006
-eclipse.preferences.version=1
-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index fc522bb..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,16 +0,0 @@
-#Mon Apr 17 02:01:33 EDT 2006
-compilers.incompatible-environment=0
-compilers.p.build=0
-compilers.p.deprecated=1
-compilers.p.illegal-att-value=0
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=0
-compilers.p.unknown-attribute=0
-compilers.p.unknown-class=0
-compilers.p.unknown-element=0
-compilers.p.unknown-resource=0
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.p.unused-element-or-attribute=0
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/CSSJSPParser/HowToGen.html b/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/CSSJSPParser/HowToGen.html
deleted file mode 100644
index ea439f1..0000000
--- a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/CSSJSPParser/HowToGen.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<body>
-<p>
-JSPedCSSTokenizer class is a scanner generated by <a href="http://www.jflex.de/">JFlex</a> 1.4.1 
-from the JSPedCSSTokenizer.flex grammer file.
-After generating the scanner, I removed unused private field errors.
-</p>
-</body>
-<html>
diff --git a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/CSSJSPParser/JSPedCSSTokenizer.flex b/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/CSSJSPParser/JSPedCSSTokenizer.flex
deleted file mode 100644
index 6daf75a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/CSSJSPParser/JSPedCSSTokenizer.flex
+++ /dev/null
@@ -1,598 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2006, 2008 IBM Corporation and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     IBM Corporation - initial API and implementation

- *******************************************************************************/

-package org.eclipse.jst.jsp.css.core.internal.parser;

-

-import java.io.CharArrayReader;

-import java.io.IOException;

-import java.util.ArrayList;

-import java.util.List;

-

-import org.eclipse.jst.jsp.css.core.internal.parserz.JSPedCSSRegionContexts;

-import org.eclipse.wst.css.core.internal.parser.CSSRegionUtil;

-import org.eclipse.wst.css.core.internal.parser.ICSSTokenizer;

-import org.eclipse.wst.css.core.internal.parser.regions.CSSTextRegionFactory;

-import org.eclipse.wst.css.core.internal.parserz.CSSTextToken;

-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;

-

-%%

-

-%public

-%class JSPedCSSTokenizer

-%implements JSPedCSSRegionContexts, ICSSTokenizer

-%function primGetNextToken

-%type String

-%char

-%line

-%unicode

-%caseless

-%pack

-

-%{

-	private final static String UNDEFINED = "undefined";

-	private String fBufferedContext = null;

-	private int fBufferedStart;

-//	private int fBufferedTextLength;

-	private int fBufferedLength;

-//	private StringBuffer fBufferedText = null;

-	private CSSTextRegionFactory fRegionFactory = CSSTextRegionFactory.getInstance();

-	private int fInitialState = YYINITIAL;

-	public final static int BUFFER_SIZE_NORMAL = 16384;

-	public final static int BUFFER_SIZE_SMALL = 256;

-	private int fInitialBufferSize = BUFFER_SIZE_NORMAL;

-

-	public void setInitialState(int state) {

-		fInitialState = state;

-	}

-	

-	public void setInitialBufferSize(int size) {

-		fInitialBufferSize = size;

-	}

-

-	/* user method */

-  	public final ITextRegion getNextToken() throws IOException {

-		String context;

-		String nextTokenType;

-		boolean spaceFollows;

-//		StringBuffer text;

-		int start;

-		int textLength;

-		int length;

-		if (fBufferedContext != null) {

-			context = fBufferedContext;

-//			text = fBufferedText;

-			start = fBufferedStart;

-			textLength = length = fBufferedLength;

-

-			fBufferedContext = null;

-		} else {

-			context = primGetNextToken();

-//			text = new StringBuffer(yytext());

-			start = yychar;

-			textLength = length = yylength();

-		}

-

-		if (context != null) {

-			if (context == CSS_JSP_SCRIPTLET || context == CSS_JSP_EL){

-				nextTokenType = primGetNextToken();

-				while (nextTokenType != CSS_JSP_END && nextTokenType != CSS_EL_END && nextTokenType != CSS_JSP_COMMENT) {

-//					text.append(yytext());

-					textLength += yylength();

-					length = textLength;

-					if (context.equals(CSS_JSP_SCRIPTLET) && (yystate() == ST_JSP_DIRECTIVE || yystate() == ST_JSP_EXP || yystate() == ST_JSP_DECLARATION)){

-						context = nextTokenType;

-					}

-					nextTokenType = primGetNextToken();

-					if (nextTokenType == null){

-						break;

-					}

-				}

-				// [236008] - Should not try and consider the token a

-				// comment unless  a comment was started

-				if (context == CSS_JSP_SCRIPTLET && nextTokenType == CSS_JSP_COMMENT){

-					while (nextTokenType != CSS_JSP_COMMENT_END) {

-//						text.append(yytext());

-						textLength += yylength();

-						length = textLength;

-						if (context.equals(CSS_JSP_SCRIPTLET) && yystate() == ST_JSP_COMMENT){

-							context = nextTokenType;

-						}

-

-						nextTokenType = primGetNextToken();

-						if (nextTokenType == null){

-							break;

-						}

-					}				

-					if (context == CSS_JSP_COMMENT){

-						context = CSS_COMMENT;

-					}

-				}

-				textLength += yylength();

-				length = textLength;

-				

-			}

-			if (context == UNDEFINED) {

-				// undef -> concatenate undef's

-				nextTokenType = primGetNextToken();

-				while (nextTokenType == UNDEFINED) {

-//					text.append(yytext());

-					textLength += yylength();

-					length = textLength;

-					nextTokenType = primGetNextToken();

-				}

-				fBufferedContext = nextTokenType;

-//				fBufferedText = new StringBuffer(yytext());

-				fBufferedStart = yychar;

-				fBufferedLength = yylength();

-			} else {

-				nextTokenType = null;

-				spaceFollows = false;

-				if (CSSRegionUtil.isDeclarationValueType(context)) { // declaration value can contain VALUE_S

-					nextTokenType = primGetNextToken();

-					spaceFollows = (nextTokenType == CSS_DECLARATION_VALUE_S);

-				} else if (canContainSpace(context)) {

-					nextTokenType = primGetNextToken();

-					spaceFollows = (nextTokenType == CSS_S);

-				}

-				if (nextTokenType != null) { // nextToken is retrieved

-					if (spaceFollows) {

-						// next is space -> append

-//						text.append(yytext());

-						length += yylength();

-					} else {

-						// next is NOT space -> push this for next time, return itself

-						fBufferedContext = nextTokenType;

-//						fBufferedText = new StringBuffer(yytext());

-						fBufferedStart = yychar;

-						fBufferedLength = yylength();

-					}

-				}

-			}

-		}

-

-		if (context != null) {

-			if (context == UNDEFINED) {

-				context = CSS_UNKNOWN;

-			}

-			return fRegionFactory.createRegion(context, start, textLength, length);

-		} else {

-			return null;

-		}

-  	}

-

-	/* user method */

-	/* for standalone use */

-  	public final List parseText() throws IOException {

-  		List tokens = new ArrayList();

-

-  		CSSTextToken token;

-		for (String kind = primGetNextToken(); kind != null; kind = primGetNextToken()) {

-			token = new CSSTextToken();

-			token.kind = kind;  				

-			token.start = yychar;

-			token.length = yylength();

-			token.image = yytext();

-			tokens.add(token);

-		}

-

-  		return tokens;

-  	}

-  	

-  	/* user method */

-  	private boolean canContainSpace(String type) {

-  		if (type == CSS_DELIMITER || type == CSS_RBRACE || type == CSS_DECLARATION_DELIMITER) {

-  			return false;

-  		} else {

-  			return true;

-  		}

-  	}

-

-	/* user method */

-	public final int getOffset() {

-		return yychar;

-	}

-	

-	/* user method */

-	public final boolean isEOF() {

-		return zzAtEOF;

-	}

-

-	/* user method */

-	public void reset(char[] charArray) {

-		reset(new CharArrayReader(charArray), 0);

-	}

-

-	/* user method */

-	public final void reset(java.io.Reader in, int newOffset) {

-		/** the input device */

-		zzReader = in;

-

-		/** the current state of the DFA */

-		zzState = 0;

-

-		/** the current lexical state */

-		zzLexicalState = fInitialState; //YYINITIAL;

-

-		/** this buffer contains the current text to be matched and is

-			the source of the yytext() string */

-		if (zzBuffer.length != fInitialBufferSize) {

-			zzBuffer = new char[fInitialBufferSize];

-		}

-		java.util.Arrays.fill(zzBuffer, (char)0);

-

-		/** the textposition at the last accepting state */

-		zzMarkedPos = 0;

-

-		/** the textposition at the last state to be included in yytext */

-		zzPushbackPos = 0;

-

-		/** the current text position in the buffer */

-		zzCurrentPos = 0;

-

-		/** startRead marks the beginning of the yytext() string in the buffer */

-		zzStartRead = 0;

-

-		/** endRead marks the last character in the buffer, that has been read

-			from input */

-		zzEndRead = 0;

-

-		/** number of newlines encountered up to the start of the matched text */

-		yyline = 0;

-

-		/** the number of characters up to the start of the matched text */

-		yychar = 0;

-

-		/**

-		 * the number of characters from the last newline up to the start of the 

-		 * matched text

-		 */

-		yycolumn = 0; 

-

-		/** 

-		 * yy_atBOL == true <=> the scanner is currently at the beginning of a line

-		 */

-		zzAtBOL = false;

-		

-		/** yy_atEOF == true <=> the scanner has returned a value for EOF */

-		zzAtEOF = false;

-

-		/* user variables */

-		//		fUndefined.delete(0, fUndefined.length());

-	}

-

-	/* user method */

-	public JSPedCSSTokenizer() {

-		super();

-	}

-	

-	private int fJSPPreviousState = fInitialState;

-	private void yyJspBegin(int newstate){

-		fJSPPreviousState = yystate();

-		yybegin(newstate);

-	}

-	private void yyJspEnd(){

-		yybegin(fJSPPreviousState);

-	}

-%}

-

-%state ST_CHARSET_NAME

-%state ST_CHARSET_DELIMITER

-%state ST_IMPORT_URI

-%state ST_IMPORT_MEDIUM

-%state ST_IMPORT_DELIMITER

-%state ST_MEDIA_MEDIUM

-%state ST_MEDIA_DELIMITER

-%state ST_PAGE_PSEUDO_PAGE

-%state ST_PAGE_DELIMITER

-%state ST_FONT_FACE_DELIMITER

-%state ST_SELECTOR

-%state ST_SELECTOR_MODIFIER

-%state ST_SELECTOR_ATTRIBUTE_NAME

-%state ST_SELECTOR_ATTRIBUTE_OPERATOR

-%state ST_SELECTOR_ATTRIBUTE_VALUE

-%state ST_SELECTOR_ATTRIBUTE_END

-%state ST_DECLARATION

-%state ST_DECLARATION_SEPARATOR

-%state ST_DECLARATION_PRE_VALUE

-%state ST_DECLARATION_VALUE

-%state ST_JSP_SCRIPTLET

-%state ST_JSP_DIRECTIVE

-%state ST_JSP_DECLARATION

-%state ST_JSP_EXP

-%state ST_JSP_EL

-%state ST_JSP_COMMENT

-

-

-h = [0-9a-f]

-nonascii = [\u0080-\uffff]

-unicode = \\{h}{1,6}[ \t\r\n\f]?

-escape = {unicode}|\\[ -~\u0080-\uffff]

-nmstart = [_a-zA-Z-]|{nonascii}|{escape}

-nmchar = [_a-zA-Z0-9-]|{nonascii}|{escape}

-string1 = \"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\"

-string2 = \'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\'

-

-ident = {nmstart}{nmchar}*

-name = {nmchar}+

-num = [+-]?([0-9]+|[0-9]*"."[0-9]+)

-string = {string1}|{string2}

-url = ([ !#$%&*-~]|{nonascii}|{escape})*

-s = [ \t\r\n\f]

-w = {s}*

-nl = \n|\r\n|\r|\f

-range = \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??|{h})))))

-

-hash = "#"{name}

-uri = ("url("{w}{string}{w}")"|"url("{w}{url}{w}")")

-function = {ident}"("

-unicode_range = "U"\+[0-9a-fA-F?]{1,6}("-"[0-9a-fA-F?]{1,6})?

-

-SS = [\x20\x09\x0D\x0A]

-jspstart = "<"{SS}*"%"{SS}*

-jspend = "%"{SS}*">"

-elstart = "$"{SS}*"{"

-elend = "}"

-

-%%

-

-

-

-<YYINITIAL> {

- {jspstart}          {yyJspBegin(ST_JSP_SCRIPTLET);  return CSS_JSP_SCRIPTLET;}

- {elstart}          {yyJspBegin(ST_JSP_EL);  return CSS_JSP_EL;}

-}

-

-<ST_JSP_SCRIPTLET> {

- "@"	{yybegin(ST_JSP_DIRECTIVE); return CSS_JSP_DIRECTIVE;}

- "="	{yybegin(ST_JSP_EXP); return CSS_JSP_EXP;}

- "!"	{yybegin(ST_JSP_DECLARATION); return CSS_JSP_DECL;}

- {jspend} {yyJspEnd();  return CSS_JSP_END;}

- "--" { yybegin(ST_JSP_COMMENT); return CSS_JSP_COMMENT;}

-}

-

-/* override global "}" */

-<ST_JSP_EL> {

- {elend} {yyJspEnd(); return CSS_EL_END; }

-}

-

-<ST_JSP_DIRECTIVE, ST_JSP_EXP, ST_JSP_DECLARATION> {

- {jspend} {yyJspEnd();  return CSS_JSP_END;}

-}

-

-<ST_JSP_COMMENT> {

- -+-{jspend} { yyJspEnd(); return CSS_JSP_COMMENT_END; }

- "}"         { return UNDEFINED; }

-}

-

-

-/*

- * *** global ***

- */

-

-{s}+ { return CSS_S; }

-"<!--" { return CSS_CDO; }

-"-->" { return CSS_CDC; }

-"}" { yybegin(YYINITIAL); return CSS_RBRACE; }

-\/\*[^*]*\*+([^/*][^*]*\*+)*\/ { return CSS_COMMENT; }

-//\<\%--[^-}]*[}]*[^}]*-+-\%\> { return CSS_COMMENT; }

-

-

-//<YYINITIAL> {

-//	"@import" {	yybegin(ST_IMPORT_URI); return CSS_IMPORT; }

-//}

-

-/*

- * *** charset rule ***

- * CHARSET_SYM S* STRING S* ';'

- */

-

-"@charset" { yybegin(ST_CHARSET_NAME); return CSS_CHARSET; }

-

-<ST_CHARSET_NAME> {

-	{string} { yybegin(ST_CHARSET_DELIMITER); return CSS_STRING; }

-}

-

-<ST_CHARSET_DELIMITER> {

-	";" { yybegin(YYINITIAL); return CSS_DELIMITER; }

-}

-

-/*

- * *** import rule ***

- * IMPORT_SYM S* [STRING|URI] S* [ medium [ COMMA S* medium]* ]? ';' S*

- */

-

-"@import" { yybegin(ST_IMPORT_URI); return CSS_IMPORT; }

-

-<ST_IMPORT_URI> {

-	{string} { yybegin(ST_IMPORT_MEDIUM); return CSS_STRING; }

-	//	"url("{w}{string}{w}")" { yybegin(ST_IMPORT_MEDIUM); return CSS_URI; }

-	//	"url("{w}{url}{w}")" { yybegin(ST_IMPORT_MEDIUM); return CSS_URI; }

-	{uri} { yybegin(ST_IMPORT_MEDIUM); return CSS_URI; }

-	";" { yybegin(YYINITIAL); return CSS_DELIMITER; }

-}

-

-<ST_IMPORT_MEDIUM> {

-	{ident} { yybegin(ST_IMPORT_DELIMITER); return CSS_MEDIUM; }

-	";" { yybegin(YYINITIAL); return CSS_DELIMITER; }

-}

-

-<ST_IMPORT_DELIMITER> {

-	";" { yybegin(YYINITIAL); return CSS_DELIMITER; }

-	"," { yybegin(ST_IMPORT_MEDIUM); return CSS_MEDIA_SEPARATOR; }

-}

-

-/*

- * *** media rule ***

- * MEDIA_SYM S* medium [ COMMA S* medium ]* LBRACE S* ruleset* '}' S*

- */

-

-"@media" { yybegin(ST_MEDIA_MEDIUM); return CSS_MEDIA; }

-

-/* 

- * medium

- * IDENT S*

- */

-<ST_MEDIA_MEDIUM> {

-	{ident} { yybegin(ST_MEDIA_DELIMITER); return CSS_MEDIUM; }

-}

-

-<ST_MEDIA_DELIMITER> {

-	"{" { yybegin(YYINITIAL); return CSS_LBRACE; }

-	"," { yybegin(ST_MEDIA_MEDIUM); return CSS_MEDIA_SEPARATOR; }

-}

-

-/*

- * *** page rule **

- * PAGE_SYM S* pseudo_page? S* LBRACE S* declaration [ ';' S* declaration ]* '}' S*

- */

-

-"@page" { yybegin(ST_PAGE_PSEUDO_PAGE); return CSS_PAGE; }

- 

-/*

- * pseudo_page

- * ':' IDENT

- */

-

-<ST_PAGE_PSEUDO_PAGE> {

-	":"?{ident} { yybegin(ST_PAGE_DELIMITER); return CSS_PAGE_SELECTOR; }

-	"{" { yybegin(ST_DECLARATION); return CSS_LBRACE; }

-}

-

-<ST_PAGE_DELIMITER> {

-	"{" { yybegin(ST_DECLARATION); return CSS_LBRACE; }

-}

-

-/*

- * font-face

- * FONT_FACE_SYM S* '{' S* declaration [ ';' S* declaration '* '}' S*

- */

-

-"@font-face" { yybegin(ST_FONT_FACE_DELIMITER); return CSS_FONT_FACE; }

-

-<ST_FONT_FACE_DELIMITER> {

-	"{" { yybegin(ST_DECLARATION); return CSS_LBRACE; }

-}

-

-/*

- * selector

- * simple_selector [ combinator simple_selector ]*

- */

-

-/*

- * simple_selector

- * element_name [ HASH | class | attrib | pseudo ]* | [ HASH | class | attrib | pseudo ]+

- */

-

-<YYINITIAL, ST_SELECTOR_MODIFIER, ST_SELECTOR> {

-	"*" { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_UNIVERSAL; }

-	{hash} { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_ID; }

-//	":"{ident} { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_PSEUDO; }

-	":"{ident}("("{s}*{ident}{s}*")")? { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_PSEUDO; }

-	"."{name} { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_CLASS; }

-	"[" { yybegin(ST_SELECTOR_ATTRIBUTE_NAME); return CSS_SELECTOR_ATTRIBUTE_START; }

-}

-

-<YYINITIAL, ST_SELECTOR> {

-	{ident} { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_ELEMENT_NAME; }

-}

-

-<ST_SELECTOR_MODIFIER> {

-	"," { yybegin(ST_SELECTOR); return CSS_SELECTOR_SEPARATOR; }

-	// using LOOKAHEAD

-	{s}+/[^+>\{] { yybegin(ST_SELECTOR); return CSS_SELECTOR_COMBINATOR; }

-	"+"|">" { yybegin(ST_SELECTOR); return CSS_SELECTOR_COMBINATOR; }

-	"{" { yybegin(ST_DECLARATION); return CSS_LBRACE; }

-}

-

-/*

- * attrib

- * '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* [ IDENT | STRING ] S* ]? ']'

- */

-

-<ST_SELECTOR_ATTRIBUTE_NAME> {

-	{ident} { yybegin(ST_SELECTOR_ATTRIBUTE_OPERATOR); return CSS_SELECTOR_ATTRIBUTE_NAME; }

-}

-

-<ST_SELECTOR_ATTRIBUTE_OPERATOR> {

-	"="|"~="|"|=" { yybegin(ST_SELECTOR_ATTRIBUTE_VALUE); return CSS_SELECTOR_ATTRIBUTE_OPERATOR; }

-	"]" { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_ATTRIBUTE_END; }

-}

-

-<ST_SELECTOR_ATTRIBUTE_VALUE> {

-	{ident}|{string} { yybegin(ST_SELECTOR_ATTRIBUTE_END); return CSS_SELECTOR_ATTRIBUTE_VALUE; }

-}

-

-<ST_SELECTOR_ATTRIBUTE_END> {

-	"]" { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_ATTRIBUTE_END; }

-}

-

-/*

- * declaration

- * property ':' S* expr prio? | // empty //

- */

-

-<ST_DECLARATION> {

-	{ident} { yybegin(ST_DECLARATION_SEPARATOR); return CSS_DECLARATION_PROPERTY; }

-    {jspstart}          {yyJspBegin(ST_JSP_SCRIPTLET);  return CSS_JSP_SCRIPTLET;}

-    {elstart}          {yyJspBegin(ST_JSP_EL);  return CSS_JSP_EL;}

-}

-

-<ST_DECLARATION_SEPARATOR> {

-	":" { yybegin(ST_DECLARATION_PRE_VALUE); return CSS_DECLARATION_SEPARATOR; }

-    {jspstart}          {yyJspBegin(ST_JSP_SCRIPTLET);  return CSS_JSP_SCRIPTLET;}

-    {elstart}          {yyJspBegin(ST_JSP_EL);  return CSS_JSP_EL;}    

-}

-

-<ST_DECLARATION_PRE_VALUE, ST_DECLARATION_VALUE> {

-	"!"{s}*"important" { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_IMPORTANT; }

-	{ident} { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_IDENT; }

-	")" { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_PARENTHESIS_CLOSE; }

-	{num}{ident} { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_DIMENSION; }

-	{num}"%" { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_PERCENTAGE; }

-	{num} { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_NUMBER; }

-	{function} { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_FUNCTION; }

-	{string} { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_STRING; }

-	{uri} { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_URI; }

-	"#"{name} { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_HASH; }

-	{unicode_range} { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_UNICODE_RANGE; }

-	[,/] { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_OPERATOR; }

-    {jspstart}          {yyJspBegin(ST_JSP_SCRIPTLET);  return CSS_JSP_SCRIPTLET;}

-    {elstart}          {yyJspBegin(ST_JSP_EL);  return CSS_JSP_EL;}    

-}

-

-<ST_DECLARATION_VALUE> {

-	{s}+/[^;}] { return CSS_DECLARATION_VALUE_S; }

-    {jspstart}          {yyJspBegin(ST_JSP_SCRIPTLET);  return CSS_JSP_SCRIPTLET;}

-    {elstart}          {yyJspBegin(ST_JSP_EL);  return CSS_JSP_EL;}

-}

-

-<ST_DECLARATION, ST_DECLARATION_SEPARATOR, ST_DECLARATION_PRE_VALUE, ST_DECLARATION_VALUE> {

-	";" { yybegin(ST_DECLARATION); return CSS_DECLARATION_DELIMITER; }

-	//	"}" { yybegin(YYINITIAL); return CSS_RBRACE; }

-}

-

-

-//<YYINITIAL, ST_IMPORT_URI, ST_IMPORT_MEDIUM, ST_IMPORT_DELIMITER> {

-//	\/\*[^*]*\*+([^/*][^*]*\*+)*\/ { return CSS_COMMENT; }

-//	{s}+ { return CSS_S; }

-//	. { return UNDEFINED; }

-//}

-

-//<YYINITIAL, ST_IMPORT_URI, ST_IMPORT_MEDIUM, ST_IMPORT_DELIMITER> {

-//	[^ \t\r\n\f]+ { return CSS_UNKNOWN; }

-//}

-

-

-

-

-

-. {

-	return UNDEFINED;

-}

diff --git a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer.jFlex b/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer.jFlex
deleted file mode 100644
index 9cfce86..0000000
--- a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer.jFlex
+++ /dev/null
@@ -1,304 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2005, 2008 IBM Corporation and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- *     IBM Corporation - initial API and implementation

- *******************************************************************************/

-/*nlsXXX*/

-package org.eclipse.jst.jsp.core.internal.contenttype;

-import java.io.IOException;

-import java.io.Reader;

-import java.util.Arrays;

-

-import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;

-import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;

-

-%%

-

-%{

-

-

-

-

-        private boolean hasMore = true;

-        private final static int MAX_TO_SCAN = 8000;

-        StringBuffer string = new StringBuffer();

-        // state stack for easier state handling

-        private IntStack fStateStack = new IntStack();

-        private String valueText = null;

-        private boolean isXHTML;

-        private boolean isWML;

-

-

-        public JSPHeadTokenizer() {

-                super();

-        }

-

-          public void reset (Reader in) {

-                /* the input device */

-                zzReader = in;

-

-                /* the current state of the DFA */

-                zzState = 0;

-

-                /* the current lexical state */

-                zzLexicalState = YYINITIAL;

-

-                /* this buffer contains the current text to be matched and is

-                 the source of the yytext() string */

-                Arrays.fill(zzBuffer, (char)0);

-

-                /* the textposition at the last accepting state */

-                zzMarkedPos = 0;

-

-                /* the textposition at the last state to be included in yytext */

-                //zzPushbackPos = 0;

-

-                /* the current text position in the buffer */

-                zzCurrentPos = 0;

-

-                /* startRead marks the beginning of the yytext() string in the buffer */

-                zzStartRead = 0;

-

-                /**

-                 * endRead marks the last character in the buffer, that has been read

-                 * from input

-                 */

-                zzEndRead = 0;

-

-                /* number of newlines encountered up to the start of the matched text */

-                //yyline = 0;

-

-                /* the number of characters up to the start of the matched text */

-                yychar = 0;

-

-                /**

-                 * the number of characters from the last newline up to the start

-                 * of the matched text

-                 */

-                //yycolumn = 0;

-

-                /**

-                 * yy_atBOL == true <=> the scanner is currently at the beginning

-                 * of a line

-                 */

-                zzAtBOL = true;

-

-                /* yy_atEOF == true <=> the scanner has returned a value for EOF */

-                zzAtEOF = false;

-

-                /* denotes if the user-EOF-code has already been executed */

-                zzEOFDone = false;

-

-

-                fStateStack.clear();

-

-                hasMore = true;

-                isXHTML=false;

-                isWML=false;

-

-

-        }

-

-

-        public final HeadParserToken getNextToken() throws IOException, Exception {

-                String context = null;

-                context = primGetNextToken();

-                HeadParserToken result = null;

-                if (valueText != null) {

-                        result = createToken(context, yychar, valueText);

-                        valueText = null;

-                } else {

-                        result = createToken(context, yychar, yytext());

-                }

-                return result;

-        }

-

-        public final boolean hasMoreTokens() {

-                return hasMore && yychar < MAX_TO_SCAN;

-        }

-        private void pushCurrentState() {

-                fStateStack.push(yystate());

-

-        }

- 

-        private void popState() {

-                yybegin(fStateStack.pop());

-        }

-        private HeadParserToken createToken(String context, int start, String text) {

-                return new HeadParserToken(context, start, text);

-        }

-        

-        public boolean isXHTML() {

-            return isXHTML;

-        }

-        public boolean isWML() {

-            return isWML;

-        }        

-

-%}

-

-%eof{

-        hasMore=false;

-%eof}

-

-%public

-%class JSPHeadTokenizer

-%function primGetNextToken

-%type String

-%char

-%unicode

-%ignorecase

-//%debug

-%switch

-%buffer 8192

-%scanerror java.lang.Exception

-

-

-UTF16BE = \xFE\xFF

-UTF16LE = \xFF\xFE

-UTF83ByteBOM = \xEF\xBB\xBF

-

-// SpaceChar = [\x20\x09]

-

-

-// [3] S ::= (0x20 | 0x9 | 0xD | 0xA)+

-S = [\x20\x09\x0D\x0A]

-

-//BeginAttributeeValue = {S}* \= {S}*

-

-LineTerminator = \r|\n

-

-

-Z = (\x00)?

-S_UTF = {Z}{S}{Z}

-BeginAttributeValueUTF = {S_UTF}* \= {S_UTF}*

-

-%state ST_XMLDecl

-%state ST_PAGE_DIRECTIVE

-%state QuotedAttributeValue

-%state DQ_STRING

-%state SQ_STRING

-%state UnDelimitedString

-

-%%

-

-

-<YYINITIAL>

-{

-         // force to start at beginning of line (^) and at beginning of file (yychar == 0)

-        ^ {UTF16BE}           {if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16BE;}}

-        ^ {UTF16LE}           {if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16LE;}}

-        ^ {UTF83ByteBOM}       {if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF83ByteBOM;}}

-        

-        // force to be started on first line, but we do allow preceeding spaces

-		^ {S_UTF}* ({Z}<{Z}\?{Z}x{Z}m{Z}l{Z}){S_UTF}+ {if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;}}

-

-

-        // following are some simply rules to identify JSP content as "XHTML"

-        // see http://www.rfc-editor.org/rfc/rfc3236.txt

-		{Z}<{Z}\!{Z}D{Z}O{Z}C{Z}T{Z}Y{Z}P{Z}E{Z} {S_UTF}* {Z}h{Z}t{Z}m{Z}l{Z} {S_UTF}* {Z}P{Z}U{Z}B{Z}L{Z}I{Z}C{Z} .* {Z}\/{Z}\/{Z}D{Z}T{Z}D{Z}{S_UTF}{Z}X{Z}H{Z}T{Z}M{Z}L{Z}                {isXHTML = true;}

-		{Z}<{Z}h{Z}t{Z}m{Z}l{Z} {S_UTF}* {Z}x{Z}m{Z}l{Z}n{Z}s{Z} {S_UTF}* {Z}\={Z} {S_UTF}* (({Z}\"{Z}) | ({Z}\'{Z})) {Z}h{Z}t{Z}t{Z}p{Z}:{Z}\/{Z}\/{Z}w{Z}w{Z}w{Z}\.{Z}w{Z}3{Z}\.{Z}o{Z}r{Z}g{Z}\/{Z}1{Z}9{Z}9{Z}9{Z}\/{Z}x{Z}h{Z}t{Z}m{Z}l{Z}     {isXHTML = true;}

-         // another case that's part of the "HTML family" is WML 1.0 (WML 2.0 is part of XHTML)

-		{Z}<{Z}\!{Z}D{Z}O{Z}C{Z}T{Z}Y{Z}P{Z}E{Z} {S_UTF}* {Z}w{Z}m{Z}l{Z} {S_UTF}* {Z}P{Z}U{Z}B{Z}L{Z}I{Z}C{Z} .* {Z}\/{Z}\/{Z}D{Z}T{Z}D {S}{Z}W{Z}M{Z}L{Z}                   {isWML = true;}

-

-		{Z}<{Z}%{Z} {S_UTF}* {Z}@{Z} {S_UTF}* (({Z}p{Z}a{Z}g{Z}e{Z})|({Z}t{Z}a{Z}g{Z})) {S_UTF}+   {yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart;}

-		(({Z}<{Z}j{Z}s{Z}p{Z}:{Z}d{Z}i{Z}r{Z}e{Z}c{Z}t{Z}i{Z}v{Z}e{Z}\.{Z}p{Z}a{Z}g{Z}e{Z})|({Z}<{Z}j{Z}s{Z}p{Z}:{Z}d{Z}i{Z}r{Z}e{Z}c{Z}t{Z}i{Z}v{Z}e{Z}\.{Z}t{Z}a{Z}g{Z})) {S_UTF}+           {yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart;}

-

-}

-

-<ST_XMLDecl>

-{

-        ({Z}v{Z}e{Z}r{Z}s{Z}i{Z}o{Z}n{Z}) {BeginAttributeValueUTF} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;}

-        ({Z}e{Z}n{Z}c{Z}o{Z}d{Z}i{Z}n{Z}g{Z}) {BeginAttributeValueUTF} {pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding;}

-        // note the "forced end" (via 'hasMore=false') once the end of XML Declaration found

-        // This is since non-ascii chars may follow and may cause IOExceptions which would not occur once stream is

-        // read with incorrect encoding (such as if platform encoding is in effect until true encoding detected).

-        // BUT, the hasMore=false was removed for this JSP case (probably still ok for pure XML) because

-        // in a JSP, we must parse past xmlDecl to get at JSP page directive.

-        // We'll assume all chars in this area are "readable" as is.

-		{S_UTF}* {Z}\?{Z}>{Z}    {yybegin(YYINITIAL); return XMLHeadTokenizerConstants.XMLDeclEnd;}

-}

-

-<ST_PAGE_DIRECTIVE>

-{

-//  removed 'language' since it really can be handled seperately from encoding, but may add it back later for simple re-use.

-		{Z}l{Z}a{Z}n{Z}g{Z}u{Z}a{Z}g{Z}e{Z}     {BeginAttributeValueUTF} {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageLanguage;}

-        {Z}c{Z}o{Z}n{Z}t{Z}e{Z}n{Z}t{Z}T{Z}y{Z}p{Z}e{Z} {BeginAttributeValueUTF}  {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageContentType;}

-        {Z}p{Z}a{Z}g{Z}e{Z}E{Z}n{Z}c{Z}o{Z}d{Z}i{Z}n{Z}g{Z} {BeginAttributeValueUTF} {pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageEncoding;}

-        // note the "forced end" (via 'hasMore=false') once the end of XML Declaration found

-        // This is since non-ascii chars may follow and may cause IOExceptions which would not occur once stream is

-        // read in correct encoding.

-

-        // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=4205 demonstrates how we need to keep parsing,

-        // even if come to end of one page directive, so hasMore=false was removed from these rules.

-		{Z}%{Z}>{Z}    { yybegin(YYINITIAL);  return JSPHeadTokenizerConstants.PageDirectiveEnd;}

-        {Z}\/{Z}>{Z}    { yybegin(YYINITIAL); return JSPHeadTokenizerConstants.PageDirectiveEnd;}

-}

-

-

-<QuotedAttributeValue>

-{

-        {Z}\"{Z}                      { yybegin(DQ_STRING); string.setLength(0); }

-        {Z}\'{Z}                      { yybegin(SQ_STRING); string.setLength(0); }

-        // in this state, anything other than a space character can start an undelimited string

-		{S_UTF}*.           { yypushback(1); yybegin(UnDelimitedString); string.setLength(0);}

-}

-

-

-<DQ_STRING>

-{

-

-        {Z}\"{Z}			{ popState(); valueText = string.toString(); return EncodingParserConstants.StringValue; }

-        {Z}{LineTerminator}{Z}        { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-        {Z}\?{Z}>{Z}	{ yypushback(yylength()); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-        {Z}<{Z}				{ yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-		[^\x00]			{ string.append( yytext() ); }

-        {Z}%{Z}>{Z}		{ yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-

-

-}

-

-<SQ_STRING>

-{

-

-        {Z}\'{Z}                      { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;}

-		{Z}{LineTerminator}{Z}        { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-        {Z}%{Z}>{Z}               { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-        {Z}<{Z}                     { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-		// Skip over the single-byte 0s

-		[^\x00]			{ string.append( yytext() ); }

-        {Z}%{Z}>{Z}                    { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-

-

-}

-

-<UnDelimitedString>

-{

-

-

-        {S_UTF}                     { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue; }

-        {Z}{LineTerminator}{Z}        { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-        {Z}\?{Z}>{Z}                   { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-        {Z}<{Z}                     { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-        // these are a bit special, since we started an undelimit string, but found a quote ... probably indicates a missing beginning quote

-        {Z}\'{Z}                      { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;}

-        {Z}\"{Z}                      { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;}        

-

-		[^\x00]			{ string.append( yytext() ); }

-        {Z}%{Z}>{Z}                    { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;}

-

-}

-

-// The "match anything" rule should always be in effect except for when looking for end of string

-// (That is, remember to update state list if/when new states added)

-.|\n	{if(yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;}}

-

-// this rule always in effect

-<<EOF>>         {hasMore = false; return EncodingParserConstants.EOF;}

-

-

diff --git a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/buildParser.xml b/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/buildParser.xml
deleted file mode 100644
index 2ebe182..0000000
--- a/bundles/org.eclipse.jst.jsp.core/DevTimeSupport/buildParser.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="tokenizer" default="HeadTokenizer">
-	
-	<!-- Note: for Eclipse env., the JFlex 1.4 jar should be added 
-	to the ant global entries  -->
-	<taskdef classname="JFlex.anttask.JFlexTask" name="jflex" />
-		
-	<target name="init">
-		<property name="src.file" value="JSPHeadTokenizer.jFlex"/>			
-		<property name="src.dir" value="HeadParsers"/>
-		<property name="dest.dir" value="../src"/>
-		<!-- touch causes to always build, remove for real 'make' behavior -->
-		<touch file="${src.dir}/${src.file}"/>
-					
-	</target>
-
-	<target name="HeadTokenizer" depends="init">
-		<antcall target="run-jflex"/>
-	</target>
-
-	<target name="run-jflex" depends="init">
-		<jflex
-	    	file="${src.dir}/${src.file}"
-	    	destdir="${dest.dir}"
-			verbose="true"
-			nobak="true"
-			time="on"
-	    />
-	</target>
-	
-
-</project>
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
deleted file mode 100644
index cc281e1..0000000
--- a/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,60 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.jst.jsp.core; singleton:=true
-Bundle-Version: 1.2.122.qualifier
-Bundle-Activator: org.eclipse.jst.jsp.core.internal.JSPCorePlugin
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.jst.jsp.core.internal;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contentmodel;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contentmodel.tld;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contentproperties;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contenttype;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.document;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.domdocument;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.encoding;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.java;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.java.jspel;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.java.search;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.modelhandler;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.modelquery;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.parser;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.parser.internal;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.preferences;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.provisional;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.provisional.contenttype;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.provisional.text;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.regions;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.taglib;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.tasks;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.text;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.util;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.validation;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.jspel,
- org.eclipse.jst.jsp.core.taglib,
- org.eclipse.jst.jsp.core.text,
- org.eclipse.jst.jsp.css.core.internal.contentmodel;x-internal:=true,
- org.eclipse.jst.jsp.css.core.internal.contenttype;x-internal:=true,
- org.eclipse.jst.jsp.css.core.internal.document;x-internal:=true,
- org.eclipse.jst.jsp.css.core.internal.encoding;x-internal:=true,
- org.eclipse.jst.jsp.css.core.internal.modelhandler;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.css.core.internal.parser;x-internal:=true,
- org.eclipse.jst.jsp.css.core.internal.parserz;x-internal:=true
-Require-Bundle: com.ibm.icu;bundle-version="[3.8.1,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.core.filebuffers;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jdt.core;bundle-version="[3.4.0,3.5.0)",
- org.eclipse.wst.common.uriresolver;bundle-version="[1.1.301,1.2.0)",
- org.eclipse.wst.sse.core;bundle-version="[1.1.300,1.2.0)",
- org.eclipse.wst.xml.core;bundle-version="[1.1.300,1.2.0)",
- org.eclipse.wst.css.core;bundle-version="[1.1.200,1.2.0)",
- org.eclipse.wst.html.core;bundle-version="[1.1.200,1.2.0)",
- org.eclipse.wst.validation;bundle-version="[1.2.0,1.3.0)",
- javax.servlet.jsp;bundle-version="[2.0.0,3.0.0)",
- org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)";resolution:=optional,
- org.eclipse.wst.common.modulecore;bundle-version="[1.1.200,2.0.0)";resolution:=optional
-Bundle-ActivationPolicy: lazy; exclude:="org.eclipse.jst.jsp.core.internal.contenttype"
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/bundles/org.eclipse.jst.jsp.core/about.html b/bundles/org.eclipse.jst.jsp.core/about.html
deleted file mode 100644
index 2199df3..0000000
--- a/bundles/org.eclipse.jst.jsp.core/about.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-
-<BODY lang="EN-US">
-
-<H3>About This Content</H3>
-
-<P>June, 2008</P>
-
-<H3>License</H3>
-
-<P>The Eclipse Foundation makes available all content in this plug-in 
-("Content"). Unless otherwise indicated below, the Content is provided to you 
-under the terms and conditions of the Eclipse Public License Version 1.0 
-("EPL"). A copy of the EPL is available at
-<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-
-<P>If you did not receive this Content directly from the Eclipse Foundation, the 
-Content is being redistributed by another party ("Redistributor") and different 
-terms and conditions may apply to your use of any object code in the Content. 
-Check the RedistributorÂ’s license that was provided with the Content. If no such 
-license exists, contact the Redistributor. Unless otherwise indicated below, the 
-terms and conditions of the EPL still apply to any source code in the Content 
-and such source code may be obtained at
-<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
-
-</BODY>
-</HTML>
diff --git a/bundles/org.eclipse.jst.jsp.core/build.properties b/bundles/org.eclipse.jst.jsp.core/build.properties
deleted file mode 100644
index 92ef44d..0000000
--- a/bundles/org.eclipse.jst.jsp.core/build.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.xml,\
-               .options,\
-               plugin.properties,\
-               META-INF/,\
-               .,\
-               about.html
-bin.excludes = @dot/**,\
-               temp.folder/**
-src.includes = component.xml,\
-               DevTimeSupport/,\
-               schema/
-source.. = src/
diff --git a/bundles/org.eclipse.jst.jsp.core/component.xml b/bundles/org.eclipse.jst.jsp.core/component.xml
deleted file mode 100644
index ab88fac..0000000
--- a/bundles/org.eclipse.jst.jsp.core/component.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.jst.jsp">
-	<component-depends unrestricted="true" />
-	<plugin id="org.eclipse.jst.jsp.core" fragment="false" />
-	<package name="org.eclipse.jst.jsp.core.taglib" api="false">
-		<type name="IJarRecord" implement="false" />
-		<type name="ITagDirRecord" implement="false" />
-		<type name="ITaglibIndexDelta" implement="false" />
-		<type name="ITaglibIndexListener" implement="true" />
-		<type name="ITaglibDescriptor" implement="false" />
-		<type name="ITaglibRecord" implement="false" />
-		<!-- <type name="ITaglibRecordEvent" implement="false" /> -->
-		<type name="ITLDRecord" implement="false" />
-		<type name="IURLRecord" implement="false" />
-		<type name="TaglibIndex" subclass="false" instantiate="false" />
-		<type name="TaglibIndexDelta" subclass="false" instantiate="false" />
-	</package>
-	<plugin id="org.eclipse.jst.jsp.ui" fragment="false" />
-	<package name="org.eclipse.jst.jsp.ui" api="false">
-		<type name="StructuredTextViewerConfigurationJSP" subclass="true" instantiate="true" />
-	</package>
-	<package name="org.eclipse.jst.jsp.ui.views.contentoutline" api="false">
-		<type name="JSPContentOutlineConfiguration" subclass="true" instantiate="true" />
-	</package>
-	<plugin id="org.eclipse.jst.jsp.ui.infopop" fragment="false" />
-	<description url="http://eclipse.org/webtools/jst/components/jsp/overview.html" />
-</component>
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/plugin.properties b/bundles/org.eclipse.jst.jsp.core/plugin.properties
deleted file mode 100644
index f6fdf1e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/plugin.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-providerName=Eclipse.org
-pluginName=Structured Source JSP Model
-Structured_JSP_Document_Factory_Extension.name=Structured JSP Document Factory Extension
-JSP_Content_Type_Extension_Element.name=JSP
-JSP_Tag_Content_Type_Extension_Element.name=JSP Tag Definition
-JSP_TagX_Content_Type_Extension_Element.name=JSP Tag Definition (XML)
-JSP_TLD_Content_Type_Extension_Element.name=Tag Library Descriptor
-JSP_Fragment_Content_Type_Extension_Element.name=JSP Fragment
-JSP_Syntax_Validator.name=JSP Syntax Validator
-JSP_Directive_Validator.name=JSP Directive Validator
-EL_Syntax_Validator.name=EL Syntax Validator
-JSP_Content_Validator.name=JSP Content Validator
-Structured_JSP_Document_Setup_participant.name=Structured JSP Document Setup Participant
-_validationMarker.name=JSP Problem
-_taskMarker.name=JSP Task
-
-extension-point.name.0 = JSP EL Translator
-
-contentTypeCSSJSPName=CSS JSP
-contentTypeCSSJSPFName=CSS JSP Fragment
-
-contentTypeCSSDocumentFactoryName=Content Type CSS JSP document factory extension
diff --git a/bundles/org.eclipse.jst.jsp.core/plugin.xml b/bundles/org.eclipse.jst.jsp.core/plugin.xml
deleted file mode 100644
index ad6153c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/plugin.xml
+++ /dev/null
@@ -1,328 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-   <extension-point id="elTranslator" name="%extension-point.name.0" schema="schema/eltranslator.exsd"/>
-
-	<extension point="org.eclipse.wst.sse.core.modelHandler">
-		<modelHandler
-			class="org.eclipse.jst.jsp.core.internal.modelhandler.ModelHandlerForJSP"
-			associatedContentTypeId="org.eclipse.jst.jsp.core.jspsource"
-			id="org.eclipse.jst.jsp.core.internal.modelhandler">
-		</modelHandler>
-		<modelHandler
-			class="org.eclipse.jst.jsp.core.internal.modelhandler.ModelHandlerForJSP"
-			associatedContentTypeId="org.eclipse.jst.jsp.core.jspfragmentsource"
-			id="org.eclipse.jst.jsp.core.internal.modelhandler">
-		</modelHandler>
-		<modelHandler
-			class="org.eclipse.jst.jsp.core.internal.modelhandler.ModelHandlerForTag"
-			associatedContentTypeId="org.eclipse.jst.jsp.core.tagsource"
-			id="org.eclipse.jst.jsp.core.internal.modelhandler.tag">
-		</modelHandler>
-	</extension>
-
-	<extension point="org.eclipse.wst.xml.core.documentFactories">
-		<factory
-			type="tld"
-			class="org.eclipse.jst.jsp.core.internal.contentmodel.tld.CMDocumentFactoryTLD">
-		</factory>
-	</extension>
-
-	<extension point="org.eclipse.wst.sse.core.taskscanner">
-		<scanner
-			id="org.eclipse.jst.jsp.core.internal.tasks.JSPFileTaskScanner"
-			class="org.eclipse.jst.jsp.core.internal.tasks.JSPFileTaskScanner:org.eclipse.jst.jsp.core.taskMarker"
-			contentTypeIds="org.eclipse.jst.jsp.core.jspsource" />
-	</extension>
-	<extension
-		id="taskMarker"
-		name="%_taskMarker.name"
-		point="org.eclipse.core.resources.markers">
-      <super type="org.eclipse.core.resources.taskmarker"/>
-		<persistent value="true"/>
-	</extension>
- <extension
-         id="validationMarker"
-         name="%_validationMarker.name"
-         point="org.eclipse.core.resources.markers">
-      <super type="org.eclipse.wst.validation.problemmarker"/>
-      <persistent value="true"/>
- </extension>
-
-	<extension
-		point="org.eclipse.core.filebuffers.documentCreation"
-		id="org.eclipse.jst.jsp.core.documentfactories"
-		name="%Structured_JSP_Document_Factory_Extension.name">
-		<factory
-			contentTypeId="org.eclipse.jst.jsp.core.jspsource"
-			class="org.eclipse.wst.sse.core.internal.filebuffers.BasicStructuredDocumentFactory" />
-	</extension>
-	<extension
-		point="org.eclipse.core.filebuffers.documentSetup"
-		id="org.eclipse.jst.jsp.core.documentsetup"
-		name="%Structured_JSP_Document_Setup_participant.name">
-		<participant
-			contentTypeId="org.eclipse.jst.jsp.core.jspsource"
-			class="org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController" />
-	</extension>
-	<extension point="org.eclipse.team.core.fileTypes">
-		<fileTypes
-			type="text"
-			extension="jsp">
-		</fileTypes>
-		<fileTypes
-			type="text"
-			extension="jspf" />
-		<fileTypes
-			type="text"
-			extension="jspx" />
-		<fileTypes
-			type="text"
-			extension="jsf">
-		</fileTypes>
-		<fileTypes
-			type="text"
-			extension="jsv">
-		</fileTypes>
-		<fileTypes
-			type="text"
-			extension="jtpl">
-		</fileTypes>
-		<fileTypes
-			type="text"
-			extension="tld" />
-		<fileTypes
-			type="text"
-			extension="tag" />
-		<fileTypes
-			type="text"
-			extension="tagx" />
-		<fileTypes
-			type="text"
-			extension="tagf" />
-	</extension>
-	<extension point="org.eclipse.wst.sse.core.formatProcessors">
-		<processor
-			class="org.eclipse.wst.html.core.internal.format.HTMLFormatProcessorImpl"
-			contentTypeId="org.eclipse.jst.jsp.core.jspsource">
-		</processor>
-	</extension>
-
-	<extension point="org.eclipse.core.runtime.contentTypes">
-		<!-- create content type for JSP files -->
-		<content-type
-			file-extensions="jsp,jsv,jtpl,jspx"
-			priority="high"
-			name="%JSP_Content_Type_Extension_Element.name"
-			id="jspsource"
-			base-type="org.eclipse.core.runtime.text"
-			default-charset="ISO-8859-1">
-			<describer
-				class="org.eclipse.jst.jsp.core.internal.contenttype.ContentDescriberForJSP" />
-		</content-type>
-		<!-- create content type for JSP fragment files -->
-		<content-type
-			file-extensions="jspf,jsf"
-			priority="high"
-			name="%JSP_Fragment_Content_Type_Extension_Element.name"
-			id="jspfragmentsource"
-			base-type="org.eclipse.jst.jsp.core.jspsource"
-			default-charset="ISO-8859-1">
-			<describer
-				class="org.eclipse.jst.jsp.core.internal.contenttype.ContentDescriberForJSP" />
-		</content-type>
-		<!-- create content type for JSP 2.0 Tag file types -->
-		<content-type
-			file-extensions="tag,tagx,tagf"
-			priority="high"
-			name="%JSP_Tag_Content_Type_Extension_Element.name"
-			id="tagsource"
-			base-type="org.eclipse.jst.jsp.core.jspsource"
-			default-charset="ISO-8859-1"/>
-		<!-- create content type for .tld files -->
-		<content-type
-			file-extensions="tld"
-			priority="high"
-			name="%JSP_TLD_Content_Type_Extension_Element.name"
-			id="tldsource"
-			base-type="org.eclipse.core.runtime.xml"
-			default-charset="UTF-8"/>
-
-  	<!--======================================================================================-->
-	<!-- minimal content-type css jsp support                                                 -->
-	<!--======================================================================================-->
-        <content-type
-			file-extensions="jsp"
-			priority="high"
-			name="%contentTypeCSSJSPName"
-			id="cssjspsource"
-			base-type="org.eclipse.jst.jsp.core.jspsource">
-			<describer
-				class="org.eclipse.jst.jsp.css.core.internal.contenttype.ContentDescriberForJSPedCSS" />
-		</content-type>
-        <content-type
-	        file-extensions="jspf"
-			priority="high"
-			name="%contentTypeCSSJSPFName"
-			id="cssjspfragmentsource"
-			base-type="org.eclipse.jst.jsp.core.cssjspsource">
-			<describer
-				class="org.eclipse.jst.jsp.css.core.internal.contenttype.ContentDescriberForJSPedCSS" />
-		</content-type>
-	</extension>
-
-	<!-- initialize jsp core preferences -->
-	<extension point="org.eclipse.core.runtime.preferences">
-		<initializer
-			class="org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceInitializer" />
-	</extension>
-
-	<!--======================================================================================-->
-	<!-- JSP batch validation                                       						  -->
-	<!--======================================================================================-->
-   <extension id="JSPBatchValidator" name="%JSP_Syntax_Validator.name" point="org.eclipse.wst.validation.validatorV2">
-      <validator
-            build="true"
-            class="org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator"
-            manual="true"
-            version="1"
-            markerId="org.eclipse.jst.jsp.core.validationMarker">
-         <include>
-            <rules>
-	           <projectNature id="org.eclipse.jdt.core.javanature"/>
-            </rules>
-         </include>
-         <include>
-            <rules>
-				<contentType id="org.eclipse.jst.jsp.core.jspsource"/>
-				<!-- needed until bug 181443 is implemented -->
-				<contentType id="org.eclipse.jst.jsp.core.jspfragmentsource"/>
-				<contentType id="org.eclipse.jst.jsp.core.tagsource"/>
-               <fileext
-                     caseSensitive="false"
-                     ext="jsp">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="jspf">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="jsf">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="tag">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="tagf">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="jsv">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="jtpl">
-               </fileext>
-            </rules>
-         </include>
-         <group id="org.eclipse.wst.sse.core.structuredModelGroup"/>
-      </validator>
-   </extension>
-	
-   <extension id="JSPContentValidator" name="%JSP_Content_Validator.name" point="org.eclipse.wst.validation.validatorV2">
-      <validator
-            build="true"
-            class="org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator"
-            manual="true"
-            version="1"
-            markerId="org.eclipse.jst.jsp.core.validationMarker">
-         <include>
-            <rules>
-				<contentType id="org.eclipse.jst.jsp.core.jspsource"/>
-				<!-- needed until bug 181443 is implemented -->
-				<contentType id="org.eclipse.jst.jsp.core.jspfragmentsource"/>
-               <fileext
-                     caseSensitive="false"
-                     ext="jsp">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="jspf">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="jsf">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="tag">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="tagf">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="jsv">
-               </fileext>
-               <fileext
-                     caseSensitive="false"
-                     ext="jtpl">
-               </fileext>
-            </rules>
-         </include>
-         <group id="org.eclipse.wst.sse.core.structuredModelGroup"/>
-      </validator>
-   </extension>
-		
-    <extension
-       point="org.eclipse.jst.jsp.core.elTranslator">
-       <elTranslator
-          class="org.eclipse.jst.jsp.core.internal.java.jspel.JSPELTranslator"
-          name="Default JSP 2.0 EL Translator"
-          id="org.eclipse.jst.jsp.defaultJSP20"/>
-    </extension>
-    
-	<extension point="org.eclipse.wst.sse.core.modelHandler">
-		<modelHandler
-			class="org.eclipse.jst.jsp.css.core.internal.modelhandler.ModelHandlerForJSPedCSS"
-			associatedContentTypeId="org.eclipse.jst.jsp.core.cssjspsource"
-			id="org.eclipse.jst.jsp.css.core.modelhandler">
-		</modelHandler>
-		<modelHandler
-			class="org.eclipse.jst.jsp.css.core.internal.modelhandler.ModelHandlerForJSPedCSS"
-			associatedContentTypeId="org.eclipse.jst.jsp.core.cssjspfragmentsource"
-			id="org.eclipse.jst.jsp.css.core.modelhandler">
-		</modelHandler>
-	</extension>
-	
-	<extension
-		point="org.eclipse.core.filebuffers.documentCreation"
-		id="org.eclipse.jst.jsp.css.core.internal.documentfactories"
-		name="%contentTypeCSSDocumentFactoryName">
-		<factory
-			contentTypeId="org.eclipse.jst.jsp.core.cssjspsource"
-			class="org.eclipse.wst.sse.core.internal.filebuffers.BasicStructuredDocumentFactory" />
-	</extension>
-	<extension
-		point="org.eclipse.core.filebuffers.documentSetup"
-		id="org.eclipse.jst.jsp.css.core.documentsetup"
-		name="%Structured_JSP_Document_Setup_participant.name">
-		<participant
-			contentTypeId="org.eclipse.jst.jsp.core.cssjspsource"
-			class="org.eclipse.jst.jsp.css.core.internal.contentmodel.JSPedCSSTaglibController" />
-	</extension>
-	<!--
-	<extension
-		point="org.eclipse.core.filebuffers.documentCreation"
-		id="org.eclipse.jst.jsp.css.core.internal.documentfactories.fragment"
-		name="%contentTypeCSSDocumentFactoryName">
-		<factory
-			contentTypeId="org.eclipse.jst.jsp.core.cssjspfragmentsource"
-			class="org.eclipse.wst.sse.core.internal.filebuffers.BasicStructuredDocumentFactory" />
-	</extension>	
-	-->
-</plugin>
diff --git a/bundles/org.eclipse.jst.jsp.core/schema/eltranslator.exsd b/bundles/org.eclipse.jst.jsp.core/schema/eltranslator.exsd
deleted file mode 100644
index 34e412b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/schema/eltranslator.exsd
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.jst.jsp.core">
-<annotation>
-      <appInfo>
-         <meta.schema plugin="org.eclipse.jst.jsp.core" id="elTranslator" name="JSP EL Translator"/>
-      </appInfo>
-      <documentation>
-         Extension point to customer JSP Expression Language Generation
-      </documentation>
-   </annotation>
-
-   <element name="extension">
-      <complexType>
-         <sequence>
-            <element ref="elTranslator"/>
-         </sequence>
-         <attribute name="point" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A fully qualified identifier of the target extension point.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string">
-            <annotation>
-               <documentation>
-                  An optional identifier of the extension instance.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  An optional name of the extension instance.
-               </documentation>
-               <appInfo>
-                  <meta.attribute translatable="true"/>
-               </appInfo>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <element name="elTranslator">
-      <annotation>
-         <appInfo>
-            <meta.element labelAttribute="name"/>
-         </appInfo>
-      </annotation>
-      <complexType>
-         <attribute name="class" type="string" use="required">
-            <annotation>
-               <documentation>
-                  Fully qualified class name for the EL Translator.  Must be an implementor of org.eclipse.jst.jsp.core.jspel.IJSPELTranslator.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>
-                  The name of the EL translator.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="id" type="string" use="required">
-            <annotation>
-               <documentation>
-                  A unique string identifier for an EL Translator.
-               </documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="since"/>
-      </appInfo>
-      <documentation>
-         [Enter the first release in which this extension point appears.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="examples"/>
-      </appInfo>
-      <documentation>
-         [Enter extension point usage example here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="apiInfo"/>
-      </appInfo>
-      <documentation>
-         [Enter API information here.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="implementation"/>
-      </appInfo>
-      <documentation>
-         [Enter information about supplied implementation of this extension point.]
-      </documentation>
-   </annotation>
-
-   <annotation>
-      <appInfo>
-         <meta.section type="copyright"/>
-      </appInfo>
-      <documentation>
-         
-      </documentation>
-   </annotation>
-
-</schema>
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/Assert.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/Assert.java
deleted file mode 100644
index a5d8e17..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/Assert.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal;
-
-
-
-/**
- * <code>Assert</code> is useful for for embedding runtime sanity checks in
- * code. The predicate methods all test a condition and throw some type of
- * unchecked exception if the condition does not hold.
- * <p>
- * Assertion failure exceptions, like most runtime exceptions, are thrown when
- * something is misbehaving. Assertion failures are invariably unspecified
- * behavior; consequently, clients should never rely on these being thrown
- * (and certainly should not being catching them specifically).
- * </p>
- */
-public final class Assert {
-
-	/**
-	 * <code>AssertionFailedException</code> is a runtime exception thrown
-	 * by some of the methods in <code>Assert</code>.
-	 * <p>
-	 * This class is not declared public to prevent some misuses; programs
-	 * that catch or otherwise depend on assertion failures are susceptible to
-	 * unexpected breakage when assertions in the code are added or removed.
-	 * </p>
-	 */
-	class AssertionFailedException extends RuntimeException {
-		/**
-		 * Comment for <code>serialVersionUID</code>
-		 */
-		private static final long serialVersionUID = 1L;
-
-		/**
-		 * Constructs a new exception.
-		 */
-		public AssertionFailedException() {
-			super();
-		}
-
-		/**
-		 * Constructs a new exception with the given message.
-		 */
-		public AssertionFailedException(String detail) {
-			super(detail);
-		}
-	}
-
-	/**
-	 * Asserts that an argument is legal. If the given boolean is not
-	 * <code>true</code>, an <code>IllegalArgumentException</code> is
-	 * thrown. The given message is included in that exception, to aid
-	 * debugging.
-	 * 
-	 * @param expression
-	 *            the outcode of the check
-	 * @param message
-	 *            the message to include in the exception
-	 * @return <code>true</code> if the check passes (does not return if the
-	 *         check fails)
-	 * @exception IllegalArgumentException
-	 *                if the legality test failed
-	 */
-	public static boolean isLegal(boolean expression, String message) {
-		if (!expression)
-			throw new IllegalArgumentException(message);
-		return expression;
-	}
-
-	/**
-	 * Asserts that the given object is not <code>null</code>. If this is
-	 * not the case, some kind of unchecked exception is thrown. The given
-	 * message is included in that exception, to aid debugging.
-	 * 
-	 * @param object
-	 *            the value to test
-	 * @param message
-	 *            the message to include in the exception
-	 * @exception IllegalArgumentException
-	 *                if the object is <code>null</code>
-	 */
-	public static void isNotNull(Object object, String message) {
-		if (object == null) {
-			throw new Assert().new AssertionFailedException(message);
-		}
-	}
-
-	/**
-	 * Asserts that the given boolean is <code>true</code>. If this is not
-	 * the case, some kind of unchecked exception is thrown. The given message
-	 * is included in that exception, to aid debugging.
-	 * 
-	 * @param expression
-	 *            the outcode of the check
-	 * @param message
-	 *            the message to include in the exception
-	 * @return <code>true</code> if the check passes (does not return if the
-	 *         check fails)
-	 */
-	public static boolean isTrue(boolean expression, String message) {
-		if (!expression) {
-			throw new Assert().new AssertionFailedException(message);
-		}
-		return expression;
-	}
-
-	/* This class is not intended to be instantiated. */
-	private Assert() {
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCoreMessages.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCoreMessages.java
deleted file mode 100644
index e6a72fc..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCoreMessages.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Strings used by JSP Core
- * 
- * @plannedfor 1.0
- */
-public class JSPCoreMessages extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.jst.jsp.core.internal.JSPCorePluginResources"; //$NON-NLS-1$
-
-	public static String JSPDirectiveValidator_0;
-	public static String JSPDirectiveValidator_1;
-	public static String JSPDirectiveValidator_2;
-	public static String JSPDirectiveValidator_3;
-	public static String JSPDirectiveValidator_4;
-	public static String JSPDirectiveValidator_5;
-	public static String JSPDirectiveValidator_6;
-	public static String JSPDirectiveValidator_7;
-	public static String JSPDirectiveValidator_8;
-	public static String JSPActionValidator_0;
-	public static String JSPIndexManager_0;
-	public static String JSPIndexManager_2;
-	public static String JSP_Search;
-	public static String JSPEL_Syntax;
-	public static String JSPEL_Token;
-	public static String JSPDocumentLoader_1;
-	public static String JSPFContentPropertiesManager_Updating;
-	public static String JSPFContentPropertiesManager_Problems_Updating;
-	public static String JSPBatchValidator_0;
-	public static String TaglibHelper_0;
-	public static String TaglibHelper_1;
-	public static String TaglibHelper_2;
-	public static String TaglibHelper_3;
-	public static String JSPTranslator_0;
-	public static String JSPTranslator_1;
-	public static String JSPTranslator_2;
-	public static String JSPTranslator_3;
-	
-	/**
-	 * @deprecated
-	 */
-	public static String MESSAGE_JSP_VALIDATING_MESSAGE_UI_;
-	
-	private JSPCoreMessages() {
-	}
-
-	static {
-		// initialize resource bundle
-		NLS.initializeMessages(BUNDLE_NAME, JSPCoreMessages.class);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePlugin.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePlugin.java
deleted file mode 100644
index cda29d7..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePlugin.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal;
-
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentPropertiesManager;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache;
-import org.eclipse.jst.jsp.core.internal.java.search.JSPIndexManager;
-import org.eclipse.jst.jsp.core.internal.taglib.TaglibHelperManager;
-import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
-import org.osgi.framework.BundleContext;
-
-/**
- * The main plugin class to be used in the desktop.
- */
-public class JSPCorePlugin extends Plugin {
-	// The shared instance.
-	private static JSPCorePlugin plugin;
-
-	/**
-	 * The constructor.
-	 */
-	public JSPCorePlugin() {
-		super();
-		plugin = this;
-	}
-
-	/**
-	 * Returns the shared instance.
-	 * 
-	 * @deprecated - will be removed. Currently used to get "model
-	 *             preferences", but there are other, better ways.
-	 */
-	public static JSPCorePlugin getDefault() {
-		return plugin;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-
-		/*
-		 * JSPIndexManager depends on TaglibController, so TaglibController
-		 * should be started first
-		 */
-		TaglibIndex.startup();
-		TaglibController.startup();
-
-		// listen for classpath changes
-		JavaCore.addElementChangedListener(TaglibHelperManager.getInstance());
-
-
-		JSPIndexManager.getInstance().initialize();
-
-		// listen for resource changes to update content properties keys
-		JSPFContentPropertiesManager.startup();
-
-		DeploymentDescriptorPropertyCache.start();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		DeploymentDescriptorPropertyCache.stop();
-
-		/*
-		 * stop listening for resource changes to update content properties
-		 * keys
-		 */
-		JSPFContentPropertiesManager.shutdown();
-
-		// stop any indexing
-		JSPIndexManager.getInstance().shutdown();
-
-		// stop listening for classpath changes
-		JavaCore.removeElementChangedListener(TaglibHelperManager.getInstance());
-
-		// stop taglib controller
-		TaglibController.shutdown();
-		TaglibIndex.shutdown();
-
-		super.stop(context);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePluginResources.properties b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePluginResources.properties
deleted file mode 100644
index 2ff51e7..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePluginResources.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-JSPIndexManager_0=Updating JSP Index
-JSPIndexManager_2=JSP Indexer indexing {0} files
-JSP_Search=JSP Search - 
-JSPDocumentLoader_1=Program Error: structured model had no structuredDocument
-JSPEL_Syntax=EL Syntax Error 
-JSPEL_Token=Unable to analyze EL expression due to lexical analysis error
-MESSAGE_JSP_VALIDATING_MESSAGE_UI_=JSP Validator validating {0}
-JSPFContentPropertiesManager_Updating=Updating JSP Fragment Content Settings
-JSPFContentPropertiesManager_Problems_Updating=Problem saving JSP Fragment Content Settings for {0}
-JSPDirectiveValidator_0={0} is a reserved prefix.  Try another
-JSPDirectiveValidator_1=Cannot find the tag library descriptor for "{0}"
-JSPDirectiveValidator_2=The prefix "{0} "is used more than once
-JSPDirectiveValidator_3=A {0} value is required in this directive
-JSPDirectiveValidator_4=Fragment "{0}" was not be found at expected path {1}
-JSPDirectiveValidator_5=Missing required attribute "{0}"
-JSPDirectiveValidator_6=Undefined attribute name "{0}"
-JSPDirectiveValidator_7=A {0} or {1} value is required in this directive
-JSPDirectiveValidator_8=The superclass "{0}" was not found on the build path
-JSPActionValidator_0=Tag ({0}) must be empty
-JSPBatchValidator_0=Gathering files in {0}
-TaglibHelper_0=The TagExtraInfo class for {0} ({1}) was not found on the build path
-TaglibHelper_1=The TagExtraInfo class for {0} ({1}) could not be instantiated
-TaglibHelper_2=A problem was encountered using TagExtraInfo class {1} for {0} 
-TaglibHelper_3=The tag handler class for {0} ({1}) was not found on the build path
-JSPTranslator_0=Invalid identifier: "{0}"
-JSPTranslator_1=Undefined type: {0}
-JSPTranslator_2=Cannot declare both "class" and "beanName" attributes
-JSPTranslator_3=Unknown type for identifier "{0}"
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/Logger.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/Logger.java
deleted file mode 100644
index 02d02ae..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/Logger.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal;
-
-import com.ibm.icu.util.StringTokenizer;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.osgi.framework.Bundle;
-
-/**
- * Small convenience class to log messages to plugin's log file and also, if desired,
- * the console. This class should only be used by classes in this plugin. Other
- * plugins should make their own copy, with appropriate ID.
- */
-public class Logger {
-	private static final String PLUGIN_ID = "org.eclipse.jst.jsp.core"; //$NON-NLS-1$
-	
-	private static final String TRACEFILTER_LOCATION = "/debug/tracefilter"; //$NON-NLS-1$
-
-	public static final int OK = IStatus.OK; // 0
-	public static final int INFO = IStatus.INFO; // 1
-	public static final int WARNING = IStatus.WARNING; // 2
-	public static final int ERROR = IStatus.ERROR; // 4
-
-	public static final int OK_DEBUG = 200 + OK;
-	public static final int INFO_DEBUG = 200 + INFO;
-	public static final int WARNING_DEBUG = 200 + WARNING;
-	public static final int ERROR_DEBUG = 200 + ERROR;
-
-	/**
-	 * Adds message to log.
-	 * @param level severity level of the message (OK, INFO, WARNING, ERROR, OK_DEBUG, INFO_DEBUG, WARNING_DEBUG, ERROR_DEBUG)
-	 * @param message text to add to the log
-	 * @param exception exception thrown
-	 */
-	protected static void _log(int level, String message, Throwable exception) {
-		if (level == OK_DEBUG || level == INFO_DEBUG || level == WARNING_DEBUG || level == ERROR_DEBUG) {
-			if (!isDebugging())
-				return;
-		}
-
-		int severity = IStatus.OK;
-		switch (level) {
-			case INFO_DEBUG :
-			case INFO :
-				severity = IStatus.INFO;
-				break;
-			case WARNING_DEBUG :
-			case WARNING :
-				severity = IStatus.WARNING;
-				break;
-			case ERROR_DEBUG :
-			case ERROR :
-				severity = IStatus.ERROR;
-		}
-		message = (message != null) ? message : "null"; //$NON-NLS-1$
-		Status statusObj = new Status(severity, PLUGIN_ID, severity, message, exception);
-		Bundle bundle = Platform.getBundle(PLUGIN_ID);
-		if (bundle != null) 
-			Platform.getLog(bundle).log(statusObj);
-	}
-
-	/**
-	 * Prints message to log if category matches /debug/tracefilter option.
-	 * @param message text to print
-	 * @param category category of the message, to be compared with /debug/tracefilter
-	 */
-	protected static void _trace(String category, String message, Throwable exception) {
-		if (isTracing(category)) {
-			message = (message != null) ? message : "null"; //$NON-NLS-1$
-			Status statusObj = new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, exception);
-			Bundle bundle = Platform.getBundle(PLUGIN_ID);
-			if (bundle != null) 
-				Platform.getLog(bundle).log(statusObj);
-		}
-	}
-
-	/**
-	 * @return true if the platform is debugging
-	 */
-	public static boolean isDebugging() {
-		return Platform.inDebugMode();
-	}
-
-	/**
-	 * Determines if currently tracing a category
-	 * @param category
-	 * @return true if tracing category, false otherwise
-	 */
-	public static boolean isTracing(String category) {
-		if (!isDebugging())
-			return false;
-
-		String traceFilter = Platform.getDebugOption(PLUGIN_ID + TRACEFILTER_LOCATION);
-		if (traceFilter != null) {
-			StringTokenizer tokenizer = new StringTokenizer(traceFilter, ","); //$NON-NLS-1$
-			while (tokenizer.hasMoreTokens()) {
-				String cat = tokenizer.nextToken().trim();
-				if (category.equals(cat)) {
-					return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	public static void log(int level, String message) {
-		_log(level, message, null);
-	}
-
-	public static void log(int level, String message, Throwable exception) {
-		_log(level, message, exception);
-	}
-
-	public static void logException(String message, Throwable exception) {
-		_log(ERROR, message, exception);
-	}
-
-	public static void logException(Throwable exception) {
-		_log(ERROR, exception.getMessage(), exception);
-	}
-
-	public static void traceException(String category, String message, Throwable exception) {
-		_trace(category, message, exception);
-	}
-
-	public static void traceException(String category, Throwable exception) {
-		_trace(category, exception.getMessage(), exception);
-	}
-
-	public static void trace(String category, String message) {
-		_trace(category, message, null);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMContentWrapperImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMContentWrapperImpl.java
deleted file mode 100644
index 11707b7..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMContentWrapperImpl.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel;
-
-
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-
-public class CMContentWrapperImpl extends CMNodeWrapperImpl implements CMContent {
-
-	private CMContent fCMContent = null;
-
-	/**
-	 * CMContentWrapper constructor comment.
-	 * @param prefix java.lang.String
-	 * @param node org.eclipse.wst.xml.core.internal.contentmodel.CMNode
-	 */
-	public CMContentWrapperImpl(String prefix, org.eclipse.wst.xml.core.internal.contentmodel.CMContent node) {
-		super(prefix, node);
-		fCMContent = node;
-	}
-
-	/**
-	 * getMaxOccur method
-	 * @return int
-	 *
-	 * If -1, it's UNBOUNDED.
-	 */
-	public int getMaxOccur() {
-		return fCMContent.getMaxOccur();
-	}
-
-	/**
-	 * getMinOccur method
-	 * @return int
-	 *
-	 * If 0, it's OPTIONAL.
-	 * If 1, it's REQUIRED.
-	 */
-	public int getMinOccur() {
-		return fCMContent.getMinOccur();
-	}
-
-	public CMNode getOriginNode() {
-		return fCMContent;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMDocumentWrapperImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMDocumentWrapperImpl.java
deleted file mode 100644
index b330f92..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMDocumentWrapperImpl.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel;
-
-
-
-import java.util.Hashtable;
-import java.util.Iterator;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMNodeWrapper;
-
-public class CMDocumentWrapperImpl implements CMDocument, CMNodeWrapper {
-
-	class CMNamedNodeMapImpl implements CMNamedNodeMap {
-
-		protected Hashtable table = new Hashtable();
-
-		public CMNamedNodeMapImpl() {
-			super();
-		}
-
-		Hashtable getHashtable() {
-			return table;
-		}
-
-		public int getLength() {
-			return table.size();
-		}
-
-		public CMNode getNamedItem(String name) {
-			return (CMNode) table.get(name);
-		}
-
-		public CMNode item(int index) {
-			Object result = null;
-			int size = table.size();
-			if (index < size) {
-				Iterator values = iterator();
-				for (int i = 0; i <= index; i++) {
-					result = values.next();
-				}
-			}
-			return (CMNode) result;
-		}
-
-		public Iterator iterator() {
-			return table.values().iterator();
-		}
-
-		public void setNamedItem(String name, CMNode aNode) {
-			if (name != null && aNode != null)
-				table.put(name, aNode);
-		}
-	}
-
-	public class CMNamespaceImpl implements CMNamespace {
-		public String getNodeName() {
-			return CMDocumentWrapperImpl.this.getURI();
-		}
-
-		public int getNodeType() {
-			return CMNode.NAME_SPACE;
-		}
-
-		public String getPrefix() {
-			return CMDocumentWrapperImpl.this.getPrefix();
-		}
-
-		public Object getProperty(String property) {
-			return null;
-		}
-
-		public String getURI() {
-			return CMDocumentWrapperImpl.this.getURI();
-		}
-
-		public boolean supports(String feature) {
-			return false;
-		}
-	}
-
-	private CMDocument fDocument;
-	private CMNamedNodeMap fElements = null;
-	private CMNamedNodeMap fEntities = null;
-	private CMNamespace fNamespace = new CMNamespaceImpl();
-	private String fPrefix;
-	private String fURI;
-
-	public CMDocumentWrapperImpl(String newURI, String newPrefix, CMDocument tld) {
-		fURI = newURI;
-		fPrefix = newPrefix;
-		fDocument = tld;
-	}
-
-	/**
-	 * 
-	 * @return org.eclipse.wst.xml.core.internal.contentmodel.CMDocument
-	 */
-	public CMDocument getDocument() {
-		return fDocument;
-	}
-
-	/**
-	 * getElements method
-	 * @return CMNamedNodeMap
-	 *
-	 * Returns CMNamedNodeMap of ElementDeclaration
-	 */
-	public CMNamedNodeMap getElements() {
-		if (fElements == null) {
-			int length = getDocument().getElements().getLength();
-			CMNamedNodeMapImpl elements = new CMNamedNodeMapImpl();
-			for (int i = 0; i < length; i++) {
-				CMElementDeclaration ed = new CMElementDeclarationWrapperImpl(fPrefix, (CMElementDeclaration) getDocument().getElements().item(i));
-				elements.setNamedItem(ed.getNodeName(), ed);
-			}
-			fElements = elements;
-		}
-		return fElements;
-	}
-
-	/**
-	 * getEntities method
-	 * @return CMNamedNodeMap
-	 *
-	 * Returns CMNamedNodeMap of EntityDeclaration
-	 */
-	public CMNamedNodeMap getEntities() {
-		if (fEntities == null) {
-			fEntities = getDocument().getEntities();
-		}
-		return fEntities;
-	}
-
-	/**
-	 * getNamespace method
-	 * @return CMNamespace
-	 */
-	public CMNamespace getNamespace() {
-		return fNamespace;
-	}
-
-	/**
-	 * getNodeName method
-	 * @return java.lang.String
-	 */
-	public String getNodeName() {
-		return getDocument().getNodeName();
-	}
-
-	/**
-	 * getNodeType method
-	 * @return int
-	 *
-	 * Returns one of :
-	 *
-	 */
-	public int getNodeType() {
-		return getDocument().getNodeType();
-	}
-
-	public CMNode getOriginNode() {
-		return fDocument;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getPrefix() {
-		return fPrefix;
-	}
-
-	/**
-	 * getProperty method
-	 * @return java.lang.Object
-	 *
-	 * Returns the object property desciped by the propertyName
-	 *
-	 */
-	public Object getProperty(String propertyName) {
-		return getDocument().getProperty(propertyName);
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getURI() {
-		return fURI;
-	}
-
-	/**
-	 * supports method
-	 * @return boolean
-	 *
-	 * Returns true if the CMNode supports a specified property
-	 *
-	 */
-	public boolean supports(String propertyName) {
-		return getDocument().supports(propertyName);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMElementDeclarationWrapperImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMElementDeclarationWrapperImpl.java
deleted file mode 100644
index 69eeca3..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMElementDeclarationWrapperImpl.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel;
-
-
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-
-public class CMElementDeclarationWrapperImpl extends CMNodeWrapperImpl implements CMElementDeclaration {
-	private CMContent fCMContent = null;
-
-	protected CMElementDeclaration fElementDecl = null;
-
-	/**
-	 * CMElementDeclarationWrapper constructor comment.
-	 * @param prefix java.lang.String
-	 * @param node org.eclipse.wst.xml.core.internal.contentmodel.CMNode
-	 */
-	public CMElementDeclarationWrapperImpl(String prefix, CMElementDeclaration node) {
-		super(prefix, node);
-		fElementDecl = node;
-	}
-
-	/**
-	 * getAttributes method
-	 * @return CMNamedNodeMap
-	 *
-	 * Returns CMNamedNodeMap of AttributeDeclaration
-	 */
-	public CMNamedNodeMap getAttributes() {
-		return fElementDecl.getAttributes();
-	}
-
-	/**
-	 * getCMContent method
-	 * @return CMContent
-	 *
-	 * Returns the root node of this element's content model.
-	 * This can be an CMElementDeclaration or a CMGroup
-	 */
-	public CMContent getContent() {
-		if (fCMContent == null) {
-			CMContent content = fElementDecl.getContent();
-			if (content == null)
-				return null;
-			if (content instanceof CMGroup)
-				fCMContent = new CMGroupWrapperImpl(fPrefix, (CMGroup) content);
-			else
-				fCMContent = new CMContentWrapperImpl(fPrefix, content);
-		}
-		return fCMContent;
-	}
-
-	/**
-	 * getContentType method
-	 * @return int
-	 *
-	 * Returns one of :
-	 * ANY, EMPTY, ELEMENT, MIXED, PCDATA, CDATA.
-	 */
-	public int getContentType() {
-		return fElementDecl.getContentType();
-	}
-
-	/**
-	 * getDataType method
-	 * @return java.lang.String
-	 */
-	public CMDataType getDataType() {
-		return fElementDecl.getDataType();
-	}
-
-	/**
-	 * getElementName method
-	 * @return java.lang.String
-	 */
-	public String getElementName() {
-		return getNodeName();
-	}
-
-	/**
-	 * getLocalElements method
-	 * @return CMNamedNodeMap
-	 *
-	 * Returns a list of locally defined elements.
-	 */
-	public CMNamedNodeMap getLocalElements() {
-		return fElementDecl.getLocalElements();
-	}
-
-	/**
-	 * getMaxOccur method
-	 * @return int
-	 *
-	 * If -1, it's UNBOUNDED.
-	 */
-	public int getMaxOccur() {
-		return fElementDecl.getMaxOccur();
-	}
-
-	/**
-	 * getMinOccur method
-	 * @return int
-	 *
-	 * If 0, it's OPTIONAL.
-	 * If 1, it's REQUIRED.
-	 */
-	public int getMinOccur() {
-		return fElementDecl.getMinOccur();
-	}
-
-	public CMNode getOriginNode() {
-		return fElementDecl;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMGroupWrapperImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMGroupWrapperImpl.java
deleted file mode 100644
index ee8619e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMGroupWrapperImpl.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNodeList;
-
-public class CMGroupWrapperImpl extends CMContentWrapperImpl implements CMGroup {
-	class CMNodeListImpl implements CMNodeList {
-		private List nodes = null;
-
-		/**
-		 * CMNodeListImpl constructor comment.
-		 */
-		public CMNodeListImpl() {
-			super();
-			nodes = new ArrayList();
-		}
-
-		/**
-		 * @return org.eclipse.wst.xml.core.internal.contentmodel.CMNode
-		 * @param node org.eclipse.wst.xml.core.internal.contentmodel.CMNode
-		 */
-		public void appendItem(CMNode node) {
-			nodes.add(node);
-		}
-
-		/**
-		 * getLength method
-		 * @return int
-		 */
-		public int getLength() {
-			return nodes.size();
-		}
-
-		/**
-		 * item method
-		 * @return CMNode
-		 * @param index int
-		 */
-		public CMNode item(int index) {
-			if (index < 0 || index >= nodes.size())
-				return null;
-			return (CMNode) nodes.get(index);
-		}
-	}
-
-	private CMNodeList fChildNodes = null;
-	private CMGroup fGroup = null;
-
-	/**
-	 * CMGroupWrapper constructor comment.
-	 * @param prefix java.lang.String
-	 * @param node org.eclipse.wst.xml.core.internal.contentmodel.CMContent
-	 */
-	public CMGroupWrapperImpl(String prefix, CMGroup node) {
-		super(prefix, node);
-	}
-
-	/**
-	 * getChildNodes method
-	 * @return CMNodeList
-	 *
-	 * Returns child CMNodeList, which includes ElementDefinition or CMElement.
-	 */
-	public CMNodeList getChildNodes() {
-		if (fChildNodes == null) {
-			CMNodeListImpl childNodes = new CMNodeListImpl();
-			CMNodeList children = fGroup.getChildNodes();
-			for (int i = 0; i < children.getLength(); i++) {
-				CMNode child = children.item(i);
-				if (child instanceof CMGroup)
-					childNodes.appendItem(new CMGroupWrapperImpl(fPrefix, (CMGroup) child));
-				else if (child instanceof CMElementDeclaration)
-					childNodes.appendItem(new CMElementDeclarationWrapperImpl(fPrefix, (CMElementDeclaration) child));
-				else
-					// error?
-					childNodes.appendItem(new CMNodeWrapperImpl(fPrefix, child));
-			}
-			fChildNodes = childNodes;
-		}
-		return fChildNodes;
-	}
-
-	/**
-	 * getOperation method
-	 * @return int
-	 *
-	 * Returns one of :
-	 * ALONE (a), SEQUENCE (a,b), CHOICE (a|b), ALL (a&b).
-	 */
-	public int getOperator() {
-		return fGroup.getOperator();
-	}
-
-	public CMNode getOriginNode() {
-		return fGroup;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMNodeWrapperImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMNodeWrapperImpl.java
deleted file mode 100644
index a8b7d21..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/CMNodeWrapperImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel;
-
-
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMNodeWrapper;
-
-public class CMNodeWrapperImpl implements CMNode, CMNodeWrapper {
-	private CMNode fNode = null;
-	private String fNodeName = null;
-
-	protected String fPrefix = null;
-
-	/**
-	 * CMNodeWrapper constructor comment.
-	 */
-	public CMNodeWrapperImpl(String prefix, CMNode node) {
-		super();
-		fPrefix = prefix;
-		fNode = node;
-
-		fNodeName = fPrefix + ":" + fNode.getNodeName(); //$NON-NLS-1$
-	}
-
-	/**
-	 * getNodeName method
-	 * @return java.lang.String
-	 */
-	public String getNodeName() {
-		return fNodeName;
-	}
-
-	/**
-	 * getNodeType method
-	 * @return int
-	 *
-	 * Returns one of :
-	 *
-	 */
-	public int getNodeType() {
-		return fNode.getNodeType();
-	}
-
-	public CMNode getOriginNode() {
-		return fNode;
-	}
-
-	/**
-	 * getProperty method
-	 * @return java.lang.Object
-	 *
-	 * Returns the object property desciped by the propertyName
-	 *
-	 */
-	public Object getProperty(String propertyName) {
-		return fNode.getProperty(propertyName);
-	}
-
-	/**
-	 * supports method
-	 * @return boolean
-	 *
-	 * Returns true if the CMNode supports a specified property
-	 *
-	 */
-	public boolean supports(String propertyName) {
-		return fNode.supports(propertyName);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/JSPCMDocumentFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/JSPCMDocumentFactory.java
deleted file mode 100644
index 59b2b3e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/JSPCMDocumentFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel;
-
-import org.eclipse.wst.html.core.internal.contentmodel.HTMLCMDocumentFactory;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocType;
-
-/**
- * CMDocument factory for JSP documents (which for now live in the HTML Core
- * plugin).
- */
-public final class JSPCMDocumentFactory {
-
-	private JSPCMDocumentFactory() {
-		super();
-	}
-
-	public static CMDocument getCMDocument() {
-		return getCMDocument(CMDocType.JSP20_DOC_TYPE);
-	}
-
-	/**
-	 * @return org.eclipse.wst.xml.core.internal.contentmodel.CMDocument
-	 * @param cmtype
-	 *            java.lang.String
-	 */
-	public static CMDocument getCMDocument(String cmtype) {
-		if (cmtype == null)
-			return getCMDocument();
-		return HTMLCMDocumentFactory.getCMDocument(cmtype);
-	}
-
-	public static CMDocument getCMDocument(float jspVersion) {
-		if (jspVersion >= 2)
-			return getCMDocument(CMDocType.JSP20_DOC_TYPE);
-		if (jspVersion >= 1.2)
-			return getCMDocument(CMDocType.JSP12_DOC_TYPE);
-		if (jspVersion >= 1)
-			return getCMDocument(CMDocType.JSP11_DOC_TYPE);
-		return getCMDocument();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/TaglibController.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/TaglibController.java
deleted file mode 100644
index e01248f..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/TaglibController.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.IDocumentSetupParticipant;
-import org.eclipse.core.filebuffers.IDocumentSetupParticipantExtension;
-import org.eclipse.core.filebuffers.IFileBuffer;
-import org.eclipse.core.filebuffers.IFileBufferListener;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.LocationKind;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.taglib.ITaglibIndexDelta;
-import org.eclipse.jst.jsp.core.taglib.ITaglibIndexListener;
-import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument;
-import org.eclipse.wst.sse.core.internal.util.Assert;
-
-/**
- * Provides a direct mapping from IStructuredDocument to supporting
- * TLDCMDocumentManager.
- * 
- * Listens to the creation of JSP type TextFileBuffers and forces a text-less
- * reparse after connecting taglib-supporting listeners. Connecting the
- * listeners before the text is set would be ideal, but there is no way to
- * look up taglib references since the location is not yet knowable. Since
- * taglibs can affect the parsing of the document, a reparse is currently
- * required to react to custom tags with tagdependent content.
- */
-public class TaglibController implements IDocumentSetupParticipant, IDocumentSetupParticipantExtension {
-
-	class DocumentInfo implements ITaglibIndexListener {
-		IStructuredDocument document;
-		ITextFileBuffer textFileBuffer;
-		IPath location;
-		LocationKind locationKind;
-		TLDCMDocumentManager tldDocumentManager;
-
-		public void indexChanged(ITaglibIndexDelta delta) {
-			int type = delta.getKind();
-			if (type == ITaglibIndexDelta.CHANGED || type == ITaglibIndexDelta.REMOVED) {
-				ITaglibIndexDelta[] deltas = delta.getAffectedChildren();
-				boolean affected = false;
-				for (int i = 0; i < deltas.length; i++) {
-					Object key = TLDCMDocumentManager.getUniqueIdentifier(deltas[i].getTaglibRecord());
-					if (tldDocumentManager.getDocuments().containsKey(key)) {
-						affected = true;
-					}
-				}
-				if (affected) {
-					if (_debugCache) {
-						System.out.println("TLDCMDocumentManager cleared its private CMDocument cache"); //$NON-NLS-1$
-					}
-					tldDocumentManager.getDocuments().clear();
-					tldDocumentManager.getSourceParser().resetHandlers();
-
-					if (document instanceof BasicStructuredDocument) {
-						((BasicStructuredDocument) document).reparse(this);
-					}
-				}
-			}
-			tldDocumentManager.indexChanged(delta);
-		}
-	}
-
-	static final boolean _debugCache = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/tldcmdocument/cache")); //$NON-NLS-1$ //$NON-NLS-2$
-
-	class FileBufferListener implements IFileBufferListener {
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#bufferContentAboutToBeReplaced(org.eclipse.core.filebuffers.IFileBuffer)
-		 */
-		public void bufferContentAboutToBeReplaced(IFileBuffer buffer) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#bufferContentReplaced(org.eclipse.core.filebuffers.IFileBuffer)
-		 */
-		public void bufferContentReplaced(IFileBuffer buffer) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#bufferCreated(org.eclipse.core.filebuffers.IFileBuffer)
-		 */
-		public void bufferCreated(IFileBuffer buffer) {
-			if (buffer instanceof ITextFileBuffer) {
-				IDocument document = ((ITextFileBuffer) buffer).getDocument();
-				// ignore non-JSP documents
-				synchronized (_instance.fJSPdocuments) {
-					if (!_instance.fJSPdocuments.contains(document))
-						return;
-				}
-				Assert.isTrue(document instanceof IStructuredDocument, getClass().getName() + " SetupParticipant was called for non-IStructuredDocument"); //$NON-NLS-1$
-
-				DocumentInfo info = null;
-				synchronized (_instance.fDocumentMap) {
-					info = (DocumentInfo) _instance.fDocumentMap.get(document);
-				}
-				if (info != null) {
-					// remember the buffer now
-					info.textFileBuffer = (ITextFileBuffer) buffer;
-				}
-				else {
-					/*
-					 * Unlikely due to the addition of
-					 * IDocumentSetupParticipantExtension#setup()
-					 */
-					info = new DocumentInfo();
-					info.document = (IStructuredDocument) document;
-					info.textFileBuffer = (ITextFileBuffer) buffer;
-					info.location = buffer.getLocation();
-					info.locationKind = LocationKind.NORMALIZE;
-					info.tldDocumentManager = new TLDCMDocumentManager();
-					info.tldDocumentManager.setSourceParser((JSPSourceParser) info.document.getParser());
-					synchronized (_instance.fDocumentMap) {
-						_instance.fDocumentMap.put(document, info);
-					}
-					TaglibIndex.addTaglibIndexListener(info);
-					if (document instanceof BasicStructuredDocument && document.getLength() > 0) {
-						((BasicStructuredDocument) document).reparse(this);
-					}
-				}
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#bufferDisposed(org.eclipse.core.filebuffers.IFileBuffer)
-		 */
-		public void bufferDisposed(IFileBuffer buffer) {
-			if (buffer instanceof ITextFileBuffer) {
-				IDocument document = ((ITextFileBuffer) buffer).getDocument();
-				synchronized (_instance.fJSPdocuments) {
-					if (!_instance.fJSPdocuments.remove(document))
-						return;
-				}
-			}
-			DocumentInfo info = null;
-			synchronized (fDocumentMap) {
-				Map.Entry[] entries = (Map.Entry[]) fDocumentMap.entrySet().toArray(new Map.Entry[fDocumentMap.size()]);
-				for (int i = 0; i < entries.length; i++) {
-					info = (DocumentInfo) entries[i].getValue();
-					/**
-					 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=222137
-					 * 
-					 * Might be null if setup() has been called but
-					 * bufferCreated() has not, yet.
-					 */
-					if (info != null && info.textFileBuffer != null && info.textFileBuffer.equals(buffer)) {
-						fDocumentMap.remove(entries[i].getKey());
-						break;
-					}
-				}
-			}
-			if (info != null) {
-				info.tldDocumentManager.clearCache();
-				TaglibIndex.removeTaglibIndexListener(info);
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#dirtyStateChanged(org.eclipse.core.filebuffers.IFileBuffer,
-		 *      boolean)
-		 */
-		public void dirtyStateChanged(IFileBuffer buffer, boolean isDirty) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#stateChangeFailed(org.eclipse.core.filebuffers.IFileBuffer)
-		 */
-		public void stateChangeFailed(IFileBuffer buffer) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#stateChanging(org.eclipse.core.filebuffers.IFileBuffer)
-		 */
-		public void stateChanging(IFileBuffer buffer) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#stateValidationChanged(org.eclipse.core.filebuffers.IFileBuffer,
-		 *      boolean)
-		 */
-		public void stateValidationChanged(IFileBuffer buffer, boolean isStateValidated) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#underlyingFileDeleted(org.eclipse.core.filebuffers.IFileBuffer)
-		 */
-		public void underlyingFileDeleted(IFileBuffer buffer) {
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.filebuffers.IFileBufferListener#underlyingFileMoved(org.eclipse.core.filebuffers.IFileBuffer,
-		 *      org.eclipse.core.runtime.IPath)
-		 */
-		public void underlyingFileMoved(IFileBuffer buffer, IPath path) {
-		}
-
-
-	}
-
-	static TaglibController _instance = null;
-	static private boolean fIsShutdown = false;
-
-	public static IPath getLocation(IDocument document) {
-		synchronized (_instance.fDocumentMap) {
-			DocumentInfo info = (DocumentInfo) _instance.fDocumentMap.get(document);
-			if (info != null)
-				return info.location;
-			return null;
-		}
-	}
-
-	/**
-	 * @param manager
-	 * @return
-	 */
-	public static IPath getLocation(TLDCMDocumentManager manager) {
-		// if _instance is null, we are already shutting donw
-		if (_instance == null)
-			return null;
-
-		IPath location = null;
-		synchronized (_instance.fDocumentMap) {
-			Iterator docInfos = _instance.fDocumentMap.values().iterator();
-			while (docInfos.hasNext() && location == null) {
-				DocumentInfo info = (DocumentInfo) docInfos.next();
-				if (info.tldDocumentManager.equals(manager))
-					location = info.location;
-			}
-		}
-		return location;
-	}
-
-	public static TLDCMDocumentManager getTLDCMDocumentManager(IDocument document) {
-		// if _instance is null, we are already shutting down
-		if (_instance == null)
-			return null;
-		synchronized (_instance.fDocumentMap) {
-			DocumentInfo info = (DocumentInfo) _instance.fDocumentMap.get(document);
-			if (info != null)
-				return info.tldDocumentManager;
-			return null;
-
-		}
-	}
-
-	private static synchronized boolean isShutdown() {
-		return fIsShutdown;
-	}
-
-	private static synchronized void setShutdown(boolean isShutdown) {
-		fIsShutdown = isShutdown;
-	}
-
-	public synchronized static void shutdown() {
-		setShutdown(true);
-		FileBuffers.getTextFileBufferManager().removeFileBufferListener(_instance.fBufferListener);
-		_instance = null;
-	}
-
-	public synchronized static void startup() {
-		if (_instance == null) {
-			_instance = new TaglibController();
-			FileBuffers.getTextFileBufferManager().addFileBufferListener(_instance.fBufferListener);
-		}
-		setShutdown(false);
-	}
-
-	IFileBufferListener fBufferListener;
-
-	Map fDocumentMap;
-
-	List fJSPdocuments;
-
-	/*
-	 * This constructor is only to be called as part of the FileBuffer
-	 * framework
-	 */
-	public TaglibController() {
-		super();
-		fBufferListener = new FileBufferListener();
-		fJSPdocuments = new ArrayList(1);
-		fDocumentMap = new HashMap(1);
-	}
-
-
-	/*
-	 * This method is only to be called as part of the FileBuffer framework
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.filebuffers.IDocumentSetupParticipant#setup(org.eclipse.jface.text.IDocument)
-	 */
-	public void setup(IDocument document) {
-		// if we've already shutdown, just ignore
-		if (isShutdown())
-			return;
-		// reference the shared instance's documents directly
-		synchronized (_instance.fJSPdocuments) {
-			_instance.fJSPdocuments.add(document);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.filebuffers.IDocumentSetupParticipantExtension#setup(org.eclipse.jface.text.IDocument,
-	 *      org.eclipse.core.runtime.IPath,
-	 *      org.eclipse.core.filebuffers.LocationKind)
-	 */
-	public void setup(IDocument document, IPath location, LocationKind locationKind) {
-		// if we've already shutdown, just ignore
-		if (isShutdown()) {
-			if(Platform.inDevelopmentMode()) {
-				System.out.println("org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController.setup(" + location + ")");
-			}
-			return;
-		}
-		// reference the shared instance's documents directly
-		synchronized (_instance.fJSPdocuments) {
-			_instance.fJSPdocuments.add(document);
-		}
-
-		DocumentInfo info = new DocumentInfo();
-		info.document = (IStructuredDocument) document;
-		info.textFileBuffer = null; // will be supplied later
-		info.location = location;
-		info.locationKind = locationKind;
-		info.tldDocumentManager = new TLDCMDocumentManager();
-		synchronized (_instance.fDocumentMap) {
-			_instance.fDocumentMap.put(document, info);
-		}
-		info.tldDocumentManager.setSourceParser((JSPSourceParser) info.document.getParser());
-		if (document instanceof BasicStructuredDocument && document.getLength() > 0) {
-			((BasicStructuredDocument) document).reparse(this);
-		}
-		TaglibIndex.addTaglibIndexListener(info);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMAttributeDeclarationImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMAttributeDeclarationImpl.java
deleted file mode 100644
index 41d7ed9..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMAttributeDeclarationImpl.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-
-
-import java.util.Enumeration;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDAttributeDeclaration;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-
-public class CMAttributeDeclarationImpl implements TLDAttributeDeclaration {
-
-	private CMDataType attrType = new CMDataTypeImpl(CMDataType.CDATA);
-	private String fDescription;
-
-	//
-	private boolean fIsFragment = false;
-
-	private CMDocument fOwnerDocument;
-	// optional id
-	private String id = null;
-
-	// required name
-	private String name = null;
-	// optional "required" element present, defaults to not present
-	private boolean required = false;
-
-	// optional run-time (scriplet derived) value of attributes, defaults to
-	// none/false
-	private String rtexprvalue = null;
-
-	private String type = null;
-
-	/**
-	 * CMAttributeDeclarationImpl constructor comment.
-	 */
-	public CMAttributeDeclarationImpl(CMDocument owner) {
-		super();
-		fOwnerDocument = owner;
-	}
-
-	/**
-	 * getAttrName method
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getAttrName() {
-		return getNodeName();
-	}
-
-	/**
-	 * getAttrType method
-	 * 
-	 * @return CMDataType
-	 */
-	public CMDataType getAttrType() {
-		return attrType;
-	}
-
-	/**
-	 * @deprecated in superclass
-	 */
-	public String getDefaultValue() {
-		return ""; //$NON-NLS-1$
-	}
-
-	/**
-	 * @return Returns the description.
-	 */
-	public String getDescription() {
-		return fDescription;
-	}
-
-	/**
-	 * @deprecated in superclass
-	 */
-	public Enumeration getEnumAttr() {
-		return null;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getId() {
-		return id;
-	}
-
-	/**
-	 * getNodeName method
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getNodeName() {
-		return name;
-	}
-
-	/**
-	 * getNodeType method
-	 * 
-	 * @return int
-	 * 
-	 * Returns one of :
-	 * 
-	 */
-	public int getNodeType() {
-		return CMNode.ATTRIBUTE_DECLARATION;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jst.jsp.core.contentmodel.tld.TLDAttributeDeclaration#getOwnerDocument()
-	 */
-	public CMDocument getOwnerDocument() {
-		return fOwnerDocument;
-	}
-
-	/**
-	 * getProperty method
-	 * 
-	 * @return java.lang.Object
-	 * 
-	 * Returns the object property desciped by the propertyName
-	 * 
-	 */
-	public Object getProperty(String propertyName) {
-		if (propertyName != null && propertyName.equals(JSP12TLDNames.DESCRIPTION)) {
-			return getDescription(); // return attribute description
-		}
-		else if (propertyName.equals(TLDDocument.CM_KIND)) {
-			return TLDDocument.JSP_TLD;
-		}
-		else if (propertyName.equals(JSP12TLDNames.SMALL_ICON) || propertyName.equals(JSP12TLDNames.LARGE_ICON)) {
-			return getOwnerDocument().getProperty(propertyName);
-		}
-		return null;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public java.lang.String getRtexprvalue() {
-		return rtexprvalue;
-	}
-
-	public String getType() {
-		return type;
-	}
-
-	/**
-	 * getUsage method
-	 * 
-	 * @return int OPTIONAL|REQUIRED
-	 */
-	public int getUsage() {
-		return required ? REQUIRED : OPTIONAL;
-	}
-
-	/**
-	 * @return Returns the isFragment.
-	 */
-	public boolean isFragment() {
-		return fIsFragment;
-	}
-
-	/**
-	 * 
-	 * @return boolean
-	 */
-	public boolean isRequired() {
-		return required;
-	}
-
-	/**
-	 * @param description
-	 *            The description to set.
-	 */
-	public void setDescription(String description) {
-		fDescription = description;
-	}
-
-	/**
-	 * @param isFragment
-	 *            The isFragment to set.
-	 */
-	public void setFragment(boolean isFragment) {
-		fIsFragment = isFragment;
-	}
-
-	/**
-	 * 
-	 * @param newId
-	 *            java.lang.String
-	 */
-	public void setId(String newId) {
-		id = newId;
-	}
-
-	public void setNodeName(String string) {
-		name = string;
-	}
-
-	/**
-	 * 
-	 * @param newRequired
-	 *            boolean
-	 */
-	public void setRequired(boolean newRequired) {
-		required = newRequired;
-	}
-
-	/**
-	 * 
-	 * @param newRequired
-	 *            boolean
-	 */
-	public void setRequiredString(String newRequired) {
-		if (newRequired != null) {
-			if (newRequired.equalsIgnoreCase(JSP12TLDNames.TRUE) || newRequired.equalsIgnoreCase(JSP12TLDNames.YES))
-				setRequired(true);
-			else if (newRequired.equalsIgnoreCase(JSP12TLDNames.FALSE) || newRequired.equalsIgnoreCase(JSP12TLDNames.NO))
-				setRequired(false);
-		}
-	}
-
-	/**
-	 * 
-	 * @param newRtexprvalue
-	 *            java.lang.String
-	 */
-	public void setRtexprvalue(String newRtexprvalue) {
-		rtexprvalue = newRtexprvalue;
-	}
-
-	public void setType(String type) {
-		this.type = type;
-	}
-
-	/**
-	 * supports method
-	 * 
-	 * @return boolean
-	 * 
-	 * Returns true if the CMNode supports a specified property
-	 * 
-	 */
-	public boolean supports(String propertyName) {
-		return propertyName == null || propertyName.equals(JSP12TLDNames.DESCRIPTION) || propertyName.equals(TLDDocument.CM_KIND) || propertyName.equals(JSP12TLDNames.SMALL_ICON) || propertyName.equals(JSP12TLDNames.LARGE_ICON);
-	}
-
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append("\n\t " + super.toString()); //$NON-NLS-1$
-		buffer.append("\n\t name:" + StringUtils.escape(getNodeName())); //$NON-NLS-1$
-		// Boolean.toString(boolean) is introduced in 1.4
-		// buffer.append("\n\t required:" +
-		// StringUtils.escape(Boolean.toString(isRequired())));
-		buffer.append("\n\t required:" + StringUtils.toString(isRequired())); //$NON-NLS-1$
-		buffer.append("\n\t rtexpr:" + StringUtils.escape(getRtexprvalue())); //$NON-NLS-1$
-		if (getId() != null)
-			buffer.append("\n\t id:" + StringUtils.escape(getId())); //$NON-NLS-1$
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDataTypeImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDataTypeImpl.java
deleted file mode 100644
index 1c325a3..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDataTypeImpl.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-
-public class CMDataTypeImpl implements CMDataType {
-
-	protected String dataTypeName;
-
-	public CMDataTypeImpl(String dataTypeName) {
-		this.dataTypeName = dataTypeName;
-	}
-
-	/**
-	 * getTypeName method
-	 * @return java.lang.String
-	 *
-	 * This method returns a suitable default value that can be used when an instance of the data type is created.
-	 * This returns null of a suitable default is not available.
-	 */
-	public String generateInstanceValue() {
-		return null;
-	}
-
-	public String getDataTypeName() {
-		return dataTypeName;
-	}
-
-	/**
-	 * getTypeName method
-	 * @return java.lang.String[]
-	 *
-	 */
-	public String[] getEnumeratedValues() {
-		return null;
-	}
-
-	/**
-	 * getTypeName method
-	 * @return java.lang.String  
-	 *
-	 * Returns the implied value or null if none exists.
-	 */
-	public String getImpliedValue() {
-		return null;
-	}
-
-	/**
-	 * getImpliedValueKind method
-	 * @return int
-	 *
-	 * Returns one of :
-	 * IMPLIED_VALUE_NONE, IMPLIED_VALUE_FIXED, IMPLIED_VALUE_DEFAULT.
-	 */
-	public int getImpliedValueKind() {
-		return IMPLIED_VALUE_NONE;
-	}
-
-	public String getNodeName() {
-		return dataTypeName;
-	}
-
-	public int getNodeType() {
-		return CMNode.DATA_TYPE;
-	}
-
-	/**
-	 * getProperty method
-	 * @return java.lang.Object
-	 *
-	 * Returns the object property described by the propertyName
-	 *
-	 */
-	public Object getProperty(String propertyName) {
-		return null;
-	}
-
-	/**
-	 * supports method
-	 * @return boolean
-	 *
-	 * Returns true if the CMNode supports a specified property
-	 *
-	 */
-	public boolean supports(String propertyName) {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentFactoryTLD.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentFactoryTLD.java
deleted file mode 100644
index aae5823..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentFactoryTLD.java
+++ /dev/null
@@ -1,1094 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP11TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP20TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDFunction;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDInitParam;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDListener;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDValidator;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDVariable;
-import org.eclipse.jst.jsp.core.internal.modelhandler.ModelHandlerForJSP;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP20Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.internal.util.DocumentProvider;
-import org.eclipse.jst.jsp.core.internal.util.FacetModuleCoreSupport;
-import org.eclipse.jst.jsp.core.taglib.IJarRecord;
-import org.eclipse.jst.jsp.core.taglib.ITLDRecord;
-import org.eclipse.jst.jsp.core.taglib.ITagDirRecord;
-import org.eclipse.jst.jsp.core.taglib.ITaglibRecord;
-import org.eclipse.jst.jsp.core.taglib.IURLRecord;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.util.JarUtilities;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.factory.CMDocumentFactory;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-import org.w3c.dom.Element;
-import org.w3c.dom.EntityReference;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * CMDocumentBuilder for Taglib Descriptors
- * 
- * Returns namespace-less CMDocuments for a taglib descriptor, loading it
- * directly from a file or extracted from a JAR archive. Content Model objects
- * will implement the TLDCMDocument, TLDElementDeclaration, and
- * TLDAttributeDeclaration interfaces for extended properties.
- */
-public class CMDocumentFactoryTLD implements CMDocumentFactory {
-
-	static final boolean _debug = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/tldcmdocument/factory")); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * CMDocumentFactoryTLD constructor comment.
-	 */
-	public CMDocumentFactoryTLD() {
-		super();
-	}
-
-	/**
-	 * NOT API
-	 * 
-	 * @param baselocation
-	 * @param input
-	 * @return
-	 */
-	public CMDocument buildCMDocument(String baselocation, InputStream input) {
-		DocumentProvider provider = new DocumentProvider();
-		provider.setValidating(false);
-		provider.setRootElementName(JSP11TLDNames.TAGLIB);
-		provider.setInputStream(input);
-		if (baselocation != null)
-			provider.setBaseReference(baselocation);
-		return loadDocument(baselocation, provider.getRootElement());
-	}
-
-	/**
-	 * @param fileName
-	 * @return
-	 */
-	private CMDocumentImpl buildCMDocumentFromFolder(IPath path) {
-		if (_debug) {
-			System.out.println("tagdir loading for " + path); //$NON-NLS-1$
-		}
-		// EBNF is listed at 1.3.10
-		CMDocumentImpl document = new CMDocumentImpl();
-		document.setBaseLocation(path.toString());
-		document.setTlibversion("1.0"); //$NON-NLS-1$
-		IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(path);
-		IResource[] tagfiles;
-		try {
-			tagfiles = folder.members();
-			for (int i = 0; i < tagfiles.length; i++) {
-				if (tagfiles[i].getType() == IResource.FILE) {
-					if (tagfiles[i].getType() != IResource.FILE)
-						continue;
-					String extension = tagfiles[i].getFileExtension();
-					if (extension != null && (extension.equals("tag") || extension.equals("tagx"))) {
-						CMElementDeclaration ed = createElementDeclaration(document, (IFile) tagfiles[i]);
-						if (ed != null) {
-							document.fElements.setNamedItem(ed.getNodeName(), ed);
-						}
-					}
-				}
-			}
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		return document;
-	}
-
-	/**
-	 * NOT API
-	 * 
-	 * @param fileName
-	 * @return
-	 */
-	protected CMDocument buildCMDocumentFromFile(String fileName) {
-		// load the taglib descriptor file
-		DocumentProvider provider = new DocumentProvider();
-		provider.setValidating(false);
-		provider.setBaseReference(fileName);
-		provider.setRootElementName(JSP11TLDNames.TAGLIB);
-		provider.setFileName(fileName);
-		Node rootElement = provider.getRootElement();
-		return loadDocument(fileName, rootElement);
-	}
-
-	protected CMDocument buildCMDocumentFromFile(IFile file) {
-		InputStream input = null;
-		try {
-			input = file.getContents(false);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		if (input != null)
-			return buildCMDocument(file.getFullPath().toString(), input);
-		return null;
-	}
-
-	/**
-	 * Builds a CMDocument assuming the JSP v1.1 default path
-	 * 
-	 * @param jarFileName -
-	 *            the name of the containing JAR file
-	 */
-	protected CMDocument buildCMDocumentFromJar(String jarFileName) {
-		// load the taglib descriptor file
-		return buildCMDocumentFromJar(jarFileName, JarUtilities.JSP11_TAGLIB);
-	}
-
-	/**
-	 * Builds a CMDocument
-	 * 
-	 * @param jarFileName -
-	 *            the name of the containing JAR file
-	 * @param contentFileName -
-	 *            the path within the JAR for a valid taglib descriptor
-	 */
-	protected CMDocument buildCMDocumentFromJar(String jarFileName, String contentFileName) {
-		// load the taglib descriptor file
-		DocumentProvider provider = new DocumentProvider();
-		provider.setValidating(false);
-		provider.setBaseReference(jarFileName);
-		provider.setRootElementName(JSP11TLDNames.TAGLIB);
-		provider.setJarFileName(jarFileName);
-		provider.setFileName(contentFileName);
-		CMDocument document = loadDocument("jar:file://" + jarFileName + "!" + contentFileName, provider.getRootElement()); //$NON-NLS-1$ //$NON-NLS-2$
-		// TODO: Add the tags declared in META-INF/tags, see JSP 2.0 section
-		// 8.4.1
-		return document;
-	}
-
-	protected CMAttributeDeclaration createAttributeDeclaration(CMDocument document, Node attrNode) {
-		CMAttributeDeclarationImpl attr = new CMAttributeDeclarationImpl(document);
-
-		Node child = attrNode.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ELEMENT_NODE) {
-				if (child.getNodeName().equals(JSP11TLDNames.NAME) && child.hasChildNodes()) {
-					attr.setNodeName(getContainedText(child));
-				}
-				else if (child.getNodeName().equals(JSP12TLDNames.DESCRIPTION) && child.hasChildNodes()) {
-					attr.setDescription(getContainedText(child));
-				}
-				else if (child.getNodeName().equals(JSP11TLDNames.ID) && child.hasChildNodes()) {
-					attr.setId(getContainedText(child));
-				}
-				else if (child.getNodeName().equals(JSP11TLDNames.REQUIRED) && child.hasChildNodes()) {
-					attr.setRequiredString(getContainedText(child));
-				}
-				else if (child.getNodeName().equals(JSP11TLDNames.RTEXPRVALUE) && child.hasChildNodes()) {
-					attr.setRtexprvalue(getContainedText(child));
-				}
-				else if (child.getNodeName().equals(JSP20TLDNames.FRAGMENT) && child.hasChildNodes()) {
-					attr.setFragment(Boolean.valueOf(getContainedText(child)).booleanValue());
-				}
-			}
-			child = child.getNextSibling();
-		}
-
-		return attr;
-	}
-
-	/**
-	 * Builds a CMDocument from a taglib descriptor
-	 * 
-	 * @param uri -
-	 *            the location of a valid taglib descriptor
-	 */
-	public CMDocument createCMDocument(String uri) {
-		CMDocument result = null;
-		URL url = null;
-		try {
-			url = new URL(uri);
-		}
-		catch (MalformedURLException e) {
-			result = createCMDocumentFromFile(uri);
-		}
-		if (result == null && url != null) {
-			if (url.getProtocol().equals("file")) { //$NON-NLS-1$
-				result = createCMDocumentFromFile(url.getFile());
-			}
-			else {
-				/**
-				 * Skip anything else since trying to load a TLD from a remote
-				 * location has unpredictable performance impact.
-				 */
-			}
-		}
-		if (result == null)
-			result = new CMDocumentImpl();
-		return result;
-	}
-
-	/**
-	 * @param fileName
-	 * @return
-	 */
-	private CMDocument createCMDocumentFromFile(String fileName) {
-		CMDocument result = null;
-		if (fileName.endsWith(".jar")) { //$NON-NLS-1$
-			result = buildCMDocumentFromJar(fileName);
-		}
-		else {
-			File file = new File(fileName);
-			try {
-				if (file.isDirectory()) {
-					result = buildCMDocumentFromDirectory(file);
-				}
-				else {
-					result = buildCMDocumentFromFile(fileName);
-				}
-			}
-			catch (SecurityException e) {
-				result = null;
-			}
-		}
-		return result;
-	}
-
-	private CMDocument buildCMDocumentFromDirectory(File file) {
-		IFile[] foundFilesForLocation = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(new Path(file.getPath()));
-		for (int i = 0; i < foundFilesForLocation.length; i++) {
-			if (foundFilesForLocation[i].isAccessible() && foundFilesForLocation[i].getType() == IResource.FOLDER) {
-				return buildCMDocumentFromFolder(foundFilesForLocation[i].getFullPath());
-			}
-		}
-		return null;
-	}
-
-	protected CMElementDeclaration createElementDeclaration(CMDocumentImpl document, Element tagFileNode, String path) {
-		CMElementDeclarationImpl ed = new CMElementDeclarationImpl(document);
-		/*
-		 * Preload with information from the tag file--it can be overwritten
-		 * by the values from the TLD
-		 */
-		IPath tagPath = FacetModuleCoreSupport.resolve(new Path(document.getBaseLocation()), path);
-		if (tagPath.segmentCount() > 1) {
-			IFile tagFile = ResourcesPlugin.getWorkspace().getRoot().getFile(tagPath);
-			if (tagFile.isAccessible()) {
-				ed.setPath(tagFile.getFullPath().toString());
-				if (tagPath.getFileExtension().equals("tag")) {
-					loadTagFile(ed, tagFile, true);
-				}
-				else if (tagPath.getFileExtension().equals("tagx")) {
-					loadTagXFile(ed, tagFile, true);
-				}
-
-				if (tagFile.getLocation() != null && ed.getSmallIcon() != null) {
-					ed.setSmallIconURL(URIHelper.normalize(ed.getSmallIcon(), "file:" + tagFile.getLocation().toString(), tagFile.getLocation().removeLastSegments(1).toString()));
-				}
-			}
-		}
-
-		// load information declared within the .tld
-		Node child = tagFileNode.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ELEMENT_NODE) {
-				String nodeName = child.getNodeName();
-				if (nodeName.equals(JSP12TLDNames.DESCRIPTION) && child.hasChildNodes()) {
-					ed.setDescription(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.DISPLAY_NAME) && child.hasChildNodes()) {
-					ed.setDisplayName(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.EXAMPLE) && child.hasChildNodes()) {
-					ed.setExample(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.ICON) && child.hasChildNodes()) {
-					ed.setSmallIcon(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.NAME) && child.hasChildNodes()) {
-					ed.setNodeName(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.PATH) && child.hasChildNodes()) {
-					ed.setPath(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.TAG_EXTENSION)) {
-					ed.getExtensions().add(child);
-				}
-			}
-			child = child.getNextSibling();
-		}
-		
-		return ed;
-	}
-
-	protected CMElementDeclaration createElementDeclaration(CMDocument document, Node tagNode) {
-		CMElementDeclarationImpl ed = new CMElementDeclarationImpl(document);
-
-		Node child = tagNode.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ELEMENT_NODE) {
-				// tag information
-				String nodeName = child.getNodeName();
-				if (nodeName.equals(JSP11TLDNames.NAME) && child.hasChildNodes()) {
-					ed.setNodeName(getContainedText(child));
-				}
-				else if ((nodeName.equals(JSP11TLDNames.TAGCLASS) || nodeName.equals(JSP12TLDNames.TAG_CLASS)) && child.hasChildNodes()) {
-					ed.setTagclass(getContainedText(child));
-				}
-				else if ((nodeName.equals(JSP11TLDNames.TEICLASS) || nodeName.equals(JSP12TLDNames.TEI_CLASS)) && child.hasChildNodes()) {
-					ed.setTeiclass(getContainedText(child));
-				}
-				else if ((nodeName.equals(JSP11TLDNames.BODYCONTENT) || nodeName.equals(JSP12TLDNames.BODY_CONTENT)) && child.hasChildNodes()) {
-					String bodycontent = getContainedText(child);
-					// Apparently, Apache Tomcat is not case sensitive about
-					// these values
-					if (bodycontent.equalsIgnoreCase(JSP11TLDNames.CONTENT_JSP))
-						ed.setBodycontent(JSP11TLDNames.CONTENT_JSP);
-					else if (bodycontent.equalsIgnoreCase(JSP11TLDNames.CONTENT_TAGDEPENDENT))
-						ed.setBodycontent(JSP11TLDNames.CONTENT_TAGDEPENDENT);
-					else if (bodycontent.equalsIgnoreCase(JSP11TLDNames.CONTENT_EMPTY))
-						ed.setBodycontent(JSP11TLDNames.CONTENT_EMPTY);
-					else if (bodycontent.equalsIgnoreCase(JSP20TLDNames.CONTENT_SCRIPTLESS))
-						ed.setBodycontent(JSP20TLDNames.CONTENT_SCRIPTLESS);
-				}
-				// info (1.1 only) or description (1.2 only)
-				else if ((nodeName.equals(JSP11TLDNames.INFO) || nodeName.equals(JSP12TLDNames.DESCRIPTION)) && child.hasChildNodes()) {
-					ed.setDescription(getContainedText(child));
-				}
-				// attributes
-				else if (nodeName.equals(JSP11TLDNames.ATTRIBUTE)) {
-					CMAttributeDeclaration attr = createAttributeDeclaration(document, child);
-					ed.fAttributes.setNamedItem(attr.getAttrName(), attr);
-				}
-				// variables
-				else if (nodeName.equals(JSP12TLDNames.VARIABLE)) {
-					ed.getVariables().add(createVariable(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.LARGE_ICON) && child.hasChildNodes()) {
-					ed.setLargeIcon(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.SMALL_ICON) && child.hasChildNodes()) {
-					ed.setSmallIcon(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.TAG_EXTENSION) && child.getNodeType() == Node.ELEMENT_NODE) {
-					ed.getExtensions().add(child);
-				}
-			}
-			child = child.getNextSibling();
-		}
-		return ed;
-	}
-
-	private CMElementDeclaration createElementDeclaration(CMDocument document, IFile tagFile) {
-		CMElementDeclarationImpl ed = new CMElementDeclarationImpl(document);
-		// in tag files, the default body content is scriptless instead of JSP
-		ed.setBodycontent(JSP20TLDNames.CONTENT_SCRIPTLESS);
-		String shortFilename = tagFile.getName();
-		String fileExtension = tagFile.getFileExtension();
-		if (fileExtension != null && fileExtension.length() > 0) {
-			shortFilename = shortFilename.substring(0, shortFilename.length() - fileExtension.length() - 1);
-		}
-		ed.setNodeName(shortFilename);
-		ed.setPath(tagFile.getFullPath().toString());
-		if (fileExtension.equals("tag")) {
-			loadTagFile(ed, tagFile, true);
-		}
-		else if (fileExtension.equals("tagx")) {
-			loadTagXFile(ed, tagFile, true);
-		}
-
-		if (tagFile.getLocation() != null && ed.getSmallIcon() != null) {
-			ed.setSmallIconURL(URIHelper.normalize(ed.getSmallIcon(), "file:" + tagFile.getLocation().toString(), tagFile.getLocation().removeLastSegments(1).toString()));
-		}
-		return ed;
-	}
-
-	protected TLDFunction createFunction(CMDocument document, Node functionNode) {
-		TLDFunctionImpl function = new TLDFunctionImpl(document);
-		boolean hasName = false;
-
-		Node child = functionNode.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ELEMENT_NODE) {
-				// tag information
-				String nodeName = child.getNodeName();
-				if (nodeName.equals(JSP12TLDNames.DESCRIPTION) && child.hasChildNodes()) {
-					function.setDescription(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.DISPLAY_NAME) && child.hasChildNodes()) {
-					function.setName(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.EXAMPLE) && child.hasChildNodes()) {
-					function.setExample(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.FUNCTION_CLASS) && child.hasChildNodes()) {
-					function.setClassName(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.FUNCTION_EXTENSION) && child.hasChildNodes()) {
-					function.getExtensions().add(child);
-				}
-				else if (nodeName.equals(JSP20TLDNames.FUNCTION_SIGNATURE) && child.hasChildNodes()) {
-					function.setSignature(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP20TLDNames.ICON) && child.hasChildNodes()) {
-					function.setIcon(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.NAME) && child.hasChildNodes()) {
-					function.setName(getContainedText(child));
-					hasName = function.getName().trim().length() > 0;
-				}
-			}
-			child = child.getNextSibling();
-		}
-		if (hasName) {
-			return function;
-		}
-		return null;
-	}
-
-	protected TLDInitParam createInitParam(Node initParamNode) {
-		TLDInitParamImpl initParam = new TLDInitParamImpl();
-		Node child = initParamNode.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ELEMENT_NODE) {
-				String nodeName = child.getNodeName();
-				if (nodeName.equals(JSP12TLDNames.VALIDATOR_PARAM_NAME) && child.hasChildNodes()) {
-					initParam.setName(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.VALIDATOR_PARAM_VALUE) && child.hasChildNodes()) {
-					initParam.setValue(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.DESCRIPTION) && child.hasChildNodes()) {
-					initParam.setDescription(getContainedText(child));
-				}
-			}
-			child = child.getNextSibling();
-		}
-		return initParam;
-	}
-
-	protected TLDListener createListener(Node listenerNode) {
-		TLDListenerImpl listener = new TLDListenerImpl();
-		Node child = listenerNode.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ELEMENT_NODE) {
-				String nodeName = child.getNodeName();
-				if (nodeName.equals(JSP12TLDNames.LISTENER_CLASS) && child.hasChildNodes()) {
-					listener.setListenerClass(getContainedText(child));
-				}
-			}
-			child = child.getNextSibling();
-		}
-		return listener;
-	}
-
-	protected TLDValidator createValidator(Node validatorNode) {
-		TLDValidatorImpl validator = new TLDValidatorImpl();
-		Node child = validatorNode.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ELEMENT_NODE) {
-				String nodeName = child.getNodeName();
-				if (nodeName.equals(JSP12TLDNames.VALIDATOR_CLASS) && child.hasChildNodes()) {
-					validator.setValidatorClass(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.VALIDATOR_INIT_PARAM) && child.hasChildNodes()) {
-					validator.getInitParams().add(createInitParam(child));
-				}
-			}
-			child = child.getNextSibling();
-		}
-		return validator;
-	}
-
-	protected TLDVariable createVariable(Node variableNode) {
-		TLDVariableImpl variable = new TLDVariableImpl();
-		Node child = variableNode.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ELEMENT_NODE) {
-				String nodeName = child.getNodeName();
-				if (nodeName.equals(JSP12TLDNames.VARIABLE_CLASS) && child.hasChildNodes()) {
-					variable.setVariableClass(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.VARIABLE_DECLARE) && child.hasChildNodes()) {
-					variable.setDeclareString(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.VARIABLE_NAME_FROM_ATTRIBUTE) && child.hasChildNodes()) {
-					variable.setNameFromAttribute(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.VARIABLE_NAME_GIVEN) && child.hasChildNodes()) {
-					variable.setNameGiven(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.VARIABLE_SCOPE) && child.hasChildNodes()) {
-					variable.setScope(getContainedText(child));
-				}
-				else if (nodeName.equals(JSP12TLDNames.DESCRIPTION) && child.hasChildNodes()) {
-					variable.setDescription(getContainedText(child));
-				}
-			}
-			child = child.getNextSibling();
-		}
-		return variable;
-	}
-
-	protected String getContainedText(Node parent) {
-		NodeList children = parent.getChildNodes();
-		if (children.getLength() == 1) {
-			return getValue(children.item(0));
-		}
-		StringBuffer s = new StringBuffer();
-		Node child = parent.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ENTITY_REFERENCE_NODE) {
-				String reference = ((EntityReference) child).getNodeValue();
-				if (reference == null && child.getNodeName() != null) {
-					reference = "&" + child.getNodeName() + ";"; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				if (reference != null) {
-					s.append(reference.trim());
-				}
-			}
-			else {
-				s.append(getValue(child));
-			}
-			child = child.getNextSibling();
-		}
-		return s.toString().trim();
-	}
-
-	private String getValue(Node n) {
-		if (n == null)
-			return ""; //$NON-NLS-1$
-		String value = n.getNodeValue();
-		if (value == null)
-			return ""; //$NON-NLS-1$
-		return value.trim();
-	}
-
-	public boolean isBuilderForGrammar(String grammarFileName) {
-		String fileName = grammarFileName.toLowerCase();
-		return fileName.endsWith(".tld") || fileName.endsWith(".jar"); //$NON-NLS-2$//$NON-NLS-1$
-	}
-
-	private CMDocument loadDocument(String baseLocation, Node taglib) {
-		Node root = taglib;
-
-		// create the CMDocument
-		CMDocumentImpl document = new CMDocumentImpl();
-		document.setBaseLocation(baseLocation);
-
-		if (root == null) {
-			if (_debug) {
-				System.out.println("null \"taglib\" element for TLD " + baseLocation); //$NON-NLS-1$
-			}
-			return document;
-		}
-
-		// populate the CMDocument
-		Node child = root.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() != Node.ELEMENT_NODE) {
-				child = child.getNextSibling();
-				continue;
-			}
-			String nodeName = child.getNodeName();
-			if(nodeName.indexOf(':') > 0) {
-				nodeName = nodeName.substring(nodeName.indexOf(':'));
-			}
-			// tag
-			if (nodeName.equals(JSP11TLDNames.TAG)) {
-				CMElementDeclaration ed = createElementDeclaration(document, child);
-				if (ed != null) {
-					document.fElements.setNamedItem(ed.getNodeName(), ed);
-				}
-			}
-			// tag-file
-			else if (nodeName.equals(JSP20TLDNames.TAG_FILE) && child.getNodeType() == Node.ELEMENT_NODE && child.hasChildNodes()) {
-				Element tagFileElement = (Element) child;
-				Node path = tagFileElement.getFirstChild();
-				while (path != null) {
-					if (path.getNodeType() == Node.ELEMENT_NODE && (JSP20TLDNames.PATH.equals(path.getNodeName()) || JSP20TLDNames.PATH.equals(path.getLocalName()))) {
-						String pathValue = getContainedText(path);
-						if (pathValue != null && pathValue.length() > 0) {
-							CMElementDeclarationImpl ed = (CMElementDeclarationImpl) createElementDeclaration(document, tagFileElement, pathValue);
-							if (ed != null) {
-								document.fElements.setNamedItem(ed.getNodeName(), ed);
-							}
-						}
-					}
-					path = path.getNextSibling();
-				}
-			}
-			// other one-of-a-kind children
-			// JSP version
-			else if ((nodeName.equals(JSP11TLDNames.JSPVERSION) || nodeName.equals(JSP12TLDNames.JSP_VERSION)) && child.hasChildNodes()) {
-				document.setJspversion(getContainedText(child));
-			}
-			// tag library version
-			else if ((nodeName.equals(JSP11TLDNames.TLIBVERSION) || nodeName.equals(JSP12TLDNames.TLIB_VERSION)) && child.hasChildNodes()) {
-				document.setTlibversion(getContainedText(child));
-			}
-			// short name
-			else if ((nodeName.equals(JSP11TLDNames.SHORTNAME) || nodeName.equals(JSP12TLDNames.SHORT_NAME)) && child.hasChildNodes()) {
-				document.setShortname(getContainedText(child));
-			}
-			// URI/URN
-			else if ((nodeName.equals(JSP11TLDNames.URI) || nodeName.equals(JSP11TLDNames.URN)) && child.hasChildNodes()) { //$NON-NLS-1$
-				document.setUri(getContainedText(child));
-			}
-			// info
-			else if (nodeName.equals(JSP11TLDNames.INFO) && child.hasChildNodes()) {
-				document.setInfo(getContainedText(child));
-			}
-			// New JSP 1.2
-			// description
-			else if (nodeName.equals(JSP12TLDNames.DESCRIPTION)) {
-				document.setDescription(getContainedText(child));
-			}
-			// display name
-			else if (nodeName.equals(JSP12TLDNames.DISPLAY_NAME) && child.hasChildNodes()) {
-				document.setDisplayName(getContainedText(child));
-			}
-			// large icon
-			else if (nodeName.equals(JSP12TLDNames.LARGE_ICON) && child.hasChildNodes()) {
-				document.setLargeIcon(getContainedText(child));
-			}
-			// small icon
-			else if (nodeName.equals(JSP12TLDNames.SMALL_ICON) && child.hasChildNodes()) {
-				document.setSmallIcon(getContainedText(child));
-			}
-			// validator
-			else if (nodeName.equals(JSP12TLDNames.VALIDATOR)) {
-				document.setValidator(createValidator(child));
-			}
-			// listener
-			else if (nodeName.equals(JSP12TLDNames.LISTENER)) {
-				document.getListeners().add(createListener(child));
-			}
-			else if (nodeName.equals(JSP20TLDNames.FUNCTION)) {
-				TLDFunction function = createFunction(document, child);
-				if (function != null) {
-					document.getFunctions().add(function);
-				}
-			}
-			else if (nodeName.equals(JSP20TLDNames.TAGLIB_EXTENSION)) {
-				document.getExtensions().add(child);
-			}
-
-			child = child.getNextSibling();
-		}
-		return document;
-	}
-
-	private void loadTagXFile(final CMElementDeclarationImpl ed, IFile tagxFile, boolean allowIncludes) {
-		ed.setPath(tagxFile.getFullPath().toString());
-		ed.setTagSource(TLDElementDeclaration.SOURCE_TAG_FILE);
-		try {
-			SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
-			InputSource inputSource = new InputSource(tagxFile.getFullPath().toString());
-			InputStream input = tagxFile.getContents(false);
-			inputSource.setByteStream(input);
-			parser.parse(inputSource, new DefaultHandler() {
-				public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
-					InputSource inputSource2 = new InputSource(systemId);
-					inputSource2.setByteStream(new ByteArrayInputStream(new byte[0]));
-					return inputSource2;
-				}
-
-				public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
-					super.startElement(uri, localName, qName, attributes);
-					if (qName.equals(JSP20Namespace.ElementName.DIRECTIVE_TAG)) {
-						if (attributes.getIndex(JSP12TLDNames.DISPLAY_NAME) >= 0)
-							ed.setDisplayName(attributes.getValue(JSP12TLDNames.DISPLAY_NAME));
-						if (attributes.getIndex(JSP12TLDNames.BODY_CONTENT) >= 0)
-							ed.setBodycontent(attributes.getValue(JSP12TLDNames.BODY_CONTENT));
-						if (attributes.getIndex(JSP20TLDNames.DYNAMIC_ATTRIBUTES) >= 0)
-							ed.setDynamicAttributes(attributes.getValue(JSP20TLDNames.DYNAMIC_ATTRIBUTES));
-						if (attributes.getIndex(JSP12TLDNames.SMALL_ICON) >= 0)
-							ed.setSmallIcon(attributes.getValue(JSP12TLDNames.SMALL_ICON));
-						if (attributes.getIndex(JSP12TLDNames.LARGE_ICON) >= 0)
-							ed.setLargeIcon(attributes.getValue(JSP12TLDNames.LARGE_ICON));
-						if (attributes.getIndex(JSP12TLDNames.DESCRIPTION) >= 0)
-							ed.setDescription(attributes.getValue(JSP12TLDNames.DESCRIPTION));
-						if (attributes.getIndex(JSP20TLDNames.EXAMPLE) >= 0)
-							ed.setExample(attributes.getValue(JSP20TLDNames.EXAMPLE));
-						if (attributes.getIndex(JSP20TLDNames.SCRIPTING_LANGUAGE) >= 0)
-							ed.setScriptingLanguage(attributes.getValue(JSP20TLDNames.SCRIPTING_LANGUAGE));
-						if (attributes.getIndex(JSP20TLDNames.IMPORT) >= 0)
-							ed.setImport(attributes.getValue(JSP20TLDNames.IMPORT));
-						if (attributes.getIndex(JSP20TLDNames.PAGE_ENCODING) >= 0)
-							ed.setPageEncoding(attributes.getValue(JSP20TLDNames.PAGE_ENCODING));
-						if (attributes.getIndex(JSP20TLDNames.IS_EL_IGNORED) >= 0)
-							ed.setIsELIgnored(attributes.getValue(JSP20TLDNames.IS_EL_IGNORED));
-					}
-					else if (qName.equals(JSP20Namespace.ElementName.DIRECTIVE_ATTRIBUTE)) {
-						CMAttributeDeclarationImpl attribute = new CMAttributeDeclarationImpl(ed.getOwnerDocument());
-						String nameValue = attributes.getValue(JSP12TLDNames.NAME);
-						attribute.setNodeName(nameValue);
-						if (attributes.getIndex(JSP20TLDNames.FRAGMENT) >= 0)
-							attribute.setFragment(Boolean.valueOf(attributes.getValue(JSP20TLDNames.FRAGMENT)).booleanValue());
-						if (attributes.getIndex(JSP12TLDNames.RTEXPRVALUE) >= 0)
-							attribute.setRtexprvalue(attributes.getValue(JSP12TLDNames.RTEXPRVALUE));
-						if (attributes.getIndex(JSP20TLDNames.TYPE) >= 0)
-							attribute.setType(attributes.getValue(JSP20TLDNames.TYPE));
-						if (attributes.getIndex(JSP12TLDNames.DESCRIPTION) >= 0)
-							attribute.setDescription(attributes.getValue(JSP12TLDNames.DESCRIPTION));
-						if (attributes.getIndex(JSP12TLDNames.REQUIRED) >= 0)
-							attribute.setRequiredString(attributes.getValue(JSP12TLDNames.REQUIRED));
-						if (nameValue != null && nameValue.length() > 0) {
-							ed.fAttributes.setNamedItem(nameValue, attribute);
-						}
-					}
-					else if (qName.equals(JSP20Namespace.ElementName.DIRECTIVE_VARIABLE)) {
-						TLDVariableImpl variable = new TLDVariableImpl();
-						if (attributes.getIndex(JSP12TLDNames.VARIABLE_NAME_GIVEN) >= 0)
-							variable.setNameGiven(attributes.getValue(JSP12TLDNames.VARIABLE_NAME_GIVEN));
-						if (attributes.getIndex(JSP12TLDNames.VARIABLE_NAME_FROM_ATTRIBUTE) >= 0)
-							variable.setNameFromAttribute(attributes.getValue(JSP12TLDNames.VARIABLE_NAME_FROM_ATTRIBUTE));
-						if (attributes.getIndex(JSP20TLDNames.VARIABLE_ALIAS) >= 0)
-							variable.setAlias(attributes.getValue(JSP20TLDNames.VARIABLE_ALIAS));
-						if (attributes.getIndex(JSP12TLDNames.VARIABLE_CLASS) >= 0)
-							variable.setVariableClass(attributes.getValue(JSP12TLDNames.VARIABLE_CLASS));
-						if (attributes.getIndex(JSP12TLDNames.VARIABLE_DECLARE) >= 0)
-							variable.setDeclareString(attributes.getValue(JSP12TLDNames.VARIABLE_DECLARE));
-						if (attributes.getIndex(JSP11Namespace.ATTR_NAME_SCOPE) >= 0)
-							variable.setScope(attributes.getValue(JSP11Namespace.ATTR_NAME_SCOPE));
-						if (attributes.getIndex(JSP12TLDNames.DESCRIPTION) >= 0)
-							variable.setDescription(attributes.getValue(JSP12TLDNames.DESCRIPTION));
-						if (variable.getAlias() != null || variable.getNameFromAttribute() != null || variable.getNameGiven() != null) {
-							ed.getVariables().add(variable);
-						}
-					}
-					else if (qName.equals(JSP11Namespace.ElementName.DIRECTIVE_INCLUDE)) {
-						IPath filePath = null;
-						String text = attributes.getValue(JSP11Namespace.ATTR_NAME_FILE);
-						if (text != null) {
-							filePath = FacetModuleCoreSupport.resolve(new Path(((CMDocumentImpl) ed.getOwnerDocument()).getBaseLocation()), text);
-							IFile includedFile = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
-							if (includedFile.isAccessible()) {
-								loadTagXFile(ed, includedFile, false);
-							}
-						}
-					}
-				}
-			});
-			input.close();
-		}
-		catch (ParserConfigurationException e) {
-			Logger.logException(e);
-		}
-		catch (SAXException e) {
-			Logger.logException(e);
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		ed.setLocationString(tagxFile.getFullPath().toString());
-	}
-
-	private void loadTagFile(CMElementDeclarationImpl ed, IFile tagFile, boolean allowIncludes) {
-		try {
-			IStructuredDocument document = (IStructuredDocument) new ModelHandlerForJSP().getDocumentLoader().createNewStructuredDocument(tagFile);
-			IStructuredDocumentRegion documentRegion = document.getFirstStructuredDocumentRegion();
-			ed.setPath(tagFile.getFullPath().toString());
-			ed.setTagSource(TLDElementDeclaration.SOURCE_TAG_FILE);
-			while (documentRegion != null) {
-				if (documentRegion.getType().equals(DOMJSPRegionContexts.JSP_DIRECTIVE_NAME)) {
-					if (documentRegion.getNumberOfRegions() > 2) {
-						ITextRegionList regions = documentRegion.getRegions();
-						String directiveName = documentRegion.getText(regions.get(1));
-						if (JSP12TLDNames.TAG.equals(directiveName)) {
-							// 8.5.1
-							String attrName = null;
-							for (int i = 2; i < documentRegion.getNumberOfRegions(); i++) {
-								ITextRegion region = regions.get(i);
-								String text = documentRegion.getText(region);
-								if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-									attrName = text;
-								}
-								// process value
-								else if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-									text = StringUtils.strip(text);
-									if (JSP12TLDNames.DISPLAY_NAME.equals(attrName)) {
-										ed.setDisplayName(text);
-									}
-									else if (JSP12TLDNames.BODY_CONTENT.equals(attrName)) {
-										ed.setBodycontent(text);
-									}
-									else if (JSP20TLDNames.DYNAMIC_ATTRIBUTES.equals(attrName)) {
-										ed.setDynamicAttributes(text);
-									}
-									else if (JSP12TLDNames.SMALL_ICON.equals(attrName)) {
-										ed.setSmallIcon(text);
-									}
-									else if (JSP12TLDNames.LARGE_ICON.equals(attrName)) {
-										ed.setLargeIcon(text);
-									}
-									else if (JSP12TLDNames.DESCRIPTION.equals(attrName)) {
-										ed.setDescription(text);
-									}
-									else if (JSP20TLDNames.EXAMPLE.equals(attrName)) {
-										ed.setExample(text);
-									}
-									else if (JSP20TLDNames.SCRIPTING_LANGUAGE.equals(attrName)) {
-										ed.setScriptingLanguage(text);
-									}
-									else if (JSP20TLDNames.IMPORT.equals(attrName)) {
-										ed.setImport(text);
-									}
-									else if (JSP20TLDNames.PAGE_ENCODING.equals(attrName)) {
-										ed.setPageEncoding(text);
-									}
-									else if (JSP20TLDNames.IS_EL_IGNORED.equals(attrName)) {
-										ed.setIsELIgnored(text);
-									}
-								}
-							}
-						}
-						else if (JSP12TLDNames.ATTRIBUTE.equals(directiveName)) {
-							CMAttributeDeclarationImpl attribute = new CMAttributeDeclarationImpl(ed.getOwnerDocument());
-							// 8.5.2
-							String attrName = null;
-							for (int i = 2; i < documentRegion.getNumberOfRegions(); i++) {
-								ITextRegion region = regions.get(i);
-								String text = documentRegion.getText(region);
-								if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-									attrName = text;
-								}
-								// process value
-								else if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE && attrName != null) {
-									text = StringUtils.strip(text);
-									if (JSP12TLDNames.NAME.equals(attrName)) {
-										attribute.setNodeName(text);
-									}
-									else if (JSP20TLDNames.FRAGMENT.equals(attrName)) {
-										attribute.setFragment(Boolean.valueOf(text).booleanValue());
-									}
-									else if (JSP12TLDNames.RTEXPRVALUE.equals(attrName)) {
-										attribute.setRtexprvalue(text);
-									}
-									else if (JSP20TLDNames.TYPE.equals(attrName)) {
-										attribute.setType(text);
-									}
-									else if (JSP12TLDNames.DESCRIPTION.equals(attrName)) {
-										attribute.setDescription(text);
-									}
-									else if (JSP12TLDNames.REQUIRED.equals(attrName)) {
-										attribute.setRequiredString(text);
-									}
-								}
-							}
-							if (attribute.getNodeName() != null) {
-								ed.fAttributes.setNamedItem(attribute.getNodeName(), attribute);
-							}
-						}
-						else if (JSP12TLDNames.VARIABLE.equals(directiveName)) {
-							TLDVariableImpl variable = new TLDVariableImpl();
-							String attrName = null;
-							for (int i = 2; i < documentRegion.getNumberOfRegions(); i++) {
-								ITextRegion region = regions.get(i);
-								String text = documentRegion.getText(region);
-								if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-									attrName = text;
-								}
-								// process value
-								else if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE && attrName != null) {
-									text = StringUtils.strip(text);
-									if (JSP12TLDNames.VARIABLE_NAME_GIVEN.equals(attrName)) {
-										variable.setNameGiven(text);
-									}
-									else if (JSP12TLDNames.VARIABLE_NAME_FROM_ATTRIBUTE.equals(attrName)) {
-										variable.setNameFromAttribute(text);
-									}
-									else if (JSP20TLDNames.VARIABLE_ALIAS.equals(attrName)) {
-										variable.setAlias(text);
-									}
-									else if (JSP12TLDNames.VARIABLE_CLASS.equals(attrName)) {
-										variable.setVariableClass(text);
-									}
-									else if (JSP12TLDNames.VARIABLE_DECLARE.equals(attrName)) {
-										variable.setDeclareString(text);
-									}
-									else if (JSP11Namespace.ATTR_NAME_SCOPE.equals(attrName)) {
-										variable.setScope(text);
-									}
-									else if (JSP12TLDNames.DESCRIPTION.equals(attrName)) {
-										variable.setDescription(text);
-									}
-								}
-							}
-							if (variable.getAlias() != null || variable.getNameFromAttribute() != null || variable.getNameGiven() != null) {
-								ed.getVariables().add(variable);
-							}
-						}
-						else if ("include".equals(directiveName) && allowIncludes) {
-							String attrName = null;
-							for (int i = 2; i < documentRegion.getNumberOfRegions(); i++) {
-								ITextRegion region = regions.get(i);
-								String text = documentRegion.getText(region);
-								if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-									attrName = text;
-								}
-								// process value
-								else if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE && attrName != null) {
-									text = StringUtils.strip(text);
-									if (JSP11Namespace.ATTR_NAME_FILE.equals(attrName)) {
-										IPath filePath = FacetModuleCoreSupport.resolve(new Path(((CMDocumentImpl) ed.getOwnerDocument()).getBaseLocation()), text);
-
-										IFile includedFile = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
-										if (includedFile.isAccessible()) {
-											loadTagFile(ed, includedFile, false);
-										}
-									}
-								}
-							}
-						}
-					}
-				}
-
-				documentRegion = documentRegion.getNext();
-			}
-
-		}
-		catch (IOException e) {
-			Logger.logException("problem parsing " + tagFile, e);
-		}
-		catch (CoreException e) {
-			Logger.logException("problem parsing " + tagFile, e);
-		}
-		ed.setLocationString(tagFile.getFullPath().toString());
-	}
-
-	/**
-	 * @param reference
-	 * @return
-	 */
-	public CMDocument createCMDocument(ITaglibRecord reference) {
-		CMDocumentImpl document = null;
-		switch (reference.getRecordType()) {
-			case (ITaglibRecord.TLD) : {
-				ITLDRecord record = (ITLDRecord) reference;
-				IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(record.getPath());
-				if (file.isAccessible()) {
-					document = (CMDocumentImpl) buildCMDocumentFromFile(file);
-					document.setLocationString(record.getPath().toString());
-					if (_debug && document != null && document.getElements().getLength() == 0) {
-						System.out.println("failure parsing " + record.getPath()); //$NON-NLS-1$
-					}
-
-					if (document.getSmallIcon() != null) {
-						String iconPath = URIHelper.normalize(((TLDDocument) document).getSmallIcon(), file.getLocation().toString(), "/"); //$NON-NLS-1$
-						document.setProperty(JSP12TLDNames.SMALL_ICON, "file:" + iconPath); //$NON-NLS-1$
-					}
-					if (document.getLargeIcon() != null) {
-						String iconPath = URIHelper.normalize(((TLDDocument) document).getLargeIcon(), file.getLocation().toString(), "/"); //$NON-NLS-1$
-						document.setProperty(JSP12TLDNames.LARGE_ICON, "file:" + iconPath); //$NON-NLS-1$
-					}
-				}
-			}
-				break;
-			case (ITaglibRecord.JAR) : {
-				IJarRecord record = (IJarRecord) reference;
-				document = (CMDocumentImpl) buildCMDocumentFromJar(record.getLocation().toString());
-				document.setLocationString("jar:file:" + record.getLocation().toString() + "!/META-INF/taglib.tld");
-				if (document.getSmallIcon() != null) {
-					String iconPath = URIHelper.normalize(((TLDDocument) document).getSmallIcon(), record.getLocation().toString() + "!/META-INF/", "/"); //$NON-NLS-1$ //$NON-NLS-2$
-					document.setProperty(JSP12TLDNames.SMALL_ICON, "jar:file:" + iconPath); //$NON-NLS-1$
-				}
-				if (document.getLargeIcon() != null) {
-					String iconPath = URIHelper.normalize(((TLDDocument) document).getLargeIcon(), record.getLocation().toString() + "!/META-INF/", "/"); //$NON-NLS-1$ //$NON-NLS-2$
-					document.setProperty(JSP12TLDNames.LARGE_ICON, "jar:file:" + iconPath); //$NON-NLS-1$
-				}
-				if (document != null && document.getElements().getLength() == 0) {
-					System.out.println("failure parsing " + record.getLocation()); //$NON-NLS-1$
-				}
-			}
-				break;
-			case (ITaglibRecord.TAGDIR) : {
-				ITagDirRecord record = (ITagDirRecord) reference;
-				document = buildCMDocumentFromFolder(record.getPath());
-			}
-				break;
-			case (ITaglibRecord.URL) : {
-				IURLRecord record = (IURLRecord) reference;
-				InputStream urlContents = null;
-				URLConnection connection = null;
-				try {
-					connection = record.getURL().openConnection();
-					if (connection != null) {
-						connection.setUseCaches(false);
-						urlContents = connection.getInputStream();
-						document = (CMDocumentImpl) buildCMDocument(record.getBaseLocation(), urlContents);
-						document.setLocationString(record.getURL().toString());
-						if (document.getSmallIcon() != null) {
-							String iconPath = URIHelper.normalize(((TLDDocument) document).getSmallIcon(), record.getURL().toString(), "/"); //$NON-NLS-1$
-							document.setProperty(JSP12TLDNames.SMALL_ICON, iconPath);
-						}
-						if (document.getLargeIcon() != null) {
-							String iconPath = URIHelper.normalize(((TLDDocument) document).getLargeIcon(), record.getURL().toString(), "/"); //$NON-NLS-1$
-							document.setProperty(JSP12TLDNames.LARGE_ICON, iconPath);
-						}
-					}
-				}
-				catch (IOException e) {
-					// not uncommon given invalid URLs
-				}
-				finally {
-					if (urlContents != null) {
-						try {
-							urlContents.close();
-						}
-						catch (IOException e) {
-						}
-					}
-				}
-			}
-				break;
-		}
-		return document;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentImpl.java
deleted file mode 100644
index 936684b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentImpl.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDValidator;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamespace;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.contentmodel.ContentModelManager;
-import org.eclipse.wst.xml.core.internal.contentmodel.annotation.AnnotationMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.internal.annotation.AnnotationFileInfo;
-import org.eclipse.wst.xml.core.internal.contentmodel.internal.annotation.AnnotationFileParser;
-
-public class CMDocumentImpl implements TLDDocument {
-	
-	/** Contains taginfo and/or any other misc properties*/
-	private AnnotationMap fAnnotationMap = null;
-	
-	private Map fProperties = new HashMap(0);
-
-	/**
-	 * Records from where this document was created
-	 */
-	private String fBaseLocation;
-	/** 
-	 * since JSP 1.2
-	 */
-	private String fDescription;
-	
-	private String fDisplayName;
-
-	/**
-	 * NOT public API
-	 */
-	public CMNamedNodeMapImpl fElements = new CMNamedNodeMapImpl();
-
-	private List fFunctions = new ArrayList(0);
-	
-	// id of the taglib
-	private String fId = null;
-	/**
-	 * Children of "taglib" within a .tld file each allow
-	 * one Text node (#PCDATA) beneath them.  Store the values
-	 * here for simplicity.
-	 */
-	// The JSP specification required for this taglib to function
-	private String fJSPVersion = null;
-	
-	private String fLargeIcon;
-
-	private List fListeners;
-	
-	private String fParentURI = null;
-	// A short name suggested as the default prefix for tags within the lib
-	private String fShortName = null;
-	
-	private String fSmallIcon;
-	
-	/**
-	 * since JSP 2.0
-	 * 
-	 * The entire element is stored here since its layout is undefined 
-	 */
-	private List fTaglibExtensions = new ArrayList(0);
-	
-	// Version information for the taglib itself
-	private String fTLibVersion = null;
-	
-	// A unique public URI describing this taglib.  Recommended to be the URL
-	// to the descriptor
-	private String fURI = null;
-	
-	private String fLocationString;
-
-	protected TLDValidator validator;
-	
-	/**
-	 * CMDocumentImpl constructor comment.
-	 */
-	public CMDocumentImpl() {
-		super();
-	}
-
-	/**
-	 * Get the annotation map associated with this document.  Lazily creates
-	 * and loads annotation map.
-	 * @return AnnotationMap
-	 */
-	private AnnotationMap getAnnotationMap() {
-		// create a new annotation map and load it up
-		if (fAnnotationMap == null) {
-			fAnnotationMap = new AnnotationMap();
-			
-			List annotationFiles = ContentModelManager.getInstance().getAnnotationFilesInfos(getUri());
-		    for (Iterator i = annotationFiles.iterator(); i.hasNext();) {
-		    	try {
-		    		AnnotationFileInfo fileInfo = (AnnotationFileInfo) i.next();
-		    		AnnotationFileParser parser = new AnnotationFileParser();
-		    		parser.parse(fAnnotationMap, fileInfo);
-		        } catch (Exception e) {
-		        	Logger.log(Logger.WARNING_DEBUG, "Exception thrown in CMDocumentImpl#getAnnotationMap", e); //$NON-NLS-1$
-		        }
-		    }
-		}
-		return fAnnotationMap;
-	}
-	/**
-	 * @return Returns the baseLocation.
-	 */
-	public String getBaseLocation() {
-		return fBaseLocation;
-	}
-
-	/**
-	 * Gets the description.
-	 * @return Returns a String
-	 */
-	public String getDescription() {
-		return fDescription;
-	}
-
-	/**
-	 * Gets the displayName.
-	 * @return Returns a String
-	 */
-	public String getDisplayName() {
-		return fDisplayName;
-	}
-
-	/**
-	 * getElements method
-	 * @return CMNamedNodeMap
-	 *
-	 * Returns CMNamedNodeMap of ElementDeclaration
-	 */
-	public CMNamedNodeMap getElements() {
-		return fElements;
-	}
-
-	/**
-	 * getEntities method
-	 * @return CMNamedNodeMap
-	 *
-	 * Returns CMNamedNodeMap of EntityDeclaration
-	 */
-	public CMNamedNodeMap getEntities() {
-		return null;
-	}
-	
-	public List getExtensions() {
-		return fTaglibExtensions;
-	}
-	/**
-	 * @return Returns the functions.
-	 */
-	public List getFunctions() {
-		return fFunctions;
-	}
-
-	/**
-	 * Gets the id.
-	 * @return Returns a String
-	 */
-	public String getId() {
-		return fId;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getInfo() {
-		return getDescription();
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getJspversion() {
-		return fJSPVersion;
-	}
-
-	/**
-	 * Gets the largeIcon.
-	 * @return Returns a String
-	 */
-	public String getLargeIcon() {
-		return fLargeIcon;
-	}
-
-	public List getListeners() {
-		if (fListeners == null)
-			fListeners = new ArrayList();
-		return fListeners;
-	}
-
-	/**
-	 * getNamespace method
-	 * @return CMNamespace
-	 */
-	public CMNamespace getNamespace() {
-		return null;
-	}
-
-	/**
-	 * getNodeName method
-	 * @return java.lang.String
-	 */
-	public String getNodeName() {
-		return "#cmdocument"; //$NON-NLS-1$
-	}
-
-	/**
-	 * getNodeType method
-	 * @return int
-	 *
-	 * Returns one of :
-	 *
-	 */
-	public int getNodeType() {
-		return CMNode.DOCUMENT;
-	}
-	/**
-	 * @return Returns the parentURI.
-	 */
-	public String getParentURI() {
-		return fParentURI;
-	}
-
-	/**
-	 * getProperty method
-	 * @return java.lang.Object
-	 *
-	 * Returns the object property desciped by the propertyName
-	 *
-	 */
-	public Object getProperty(String propertyName) {
-		if (propertyName.equals(TLDDocument.CM_KIND)) {
-			return TLDDocument.JSP_TLD;
-		}
-		else if (propertyName.equals("annotationMap")) { //$NON-NLS-1$
-			return getAnnotationMap();
-		}
-		return fProperties.get(propertyName);
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getShortname() {
-		return fShortName;
-	}
-
-	/**
-	 * Gets the smallIcon.
-	 * @return Returns a String
-	 */
-	public String getSmallIcon() {
-		return fSmallIcon;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getTlibversion() {
-		return fTLibVersion;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getUri() {
-		return fURI;
-	}
-
-	/*
-	 * @see TLDDocument#getValidator()
-	 */
-	public TLDValidator getValidator() {
-		return validator;
-	}
-	/**
-	 * @param baseLocation The baseLocation to set.
-	 */
-	public void setBaseLocation(String baseLocation) {
-		fBaseLocation = baseLocation;
-	}
-
-	/**
-	 * Sets the description.
-	 * @param description The description to set
-	 */
-	public void setDescription(String description) {
-		this.fDescription = description;
-	}
-
-	/**
-	 * Sets the displayName.
-	 * @param displayName The displayName to set
-	 */
-	public void setDisplayName(String displayName) {
-		this.fDisplayName = displayName;
-	}
-
-	/**
-	 * Sets the id.
-	 * @param id The id to set
-	 */
-	public void setId(String id) {
-		this.fId = id;
-	}
-
-	/**
-	 * 
-	 * @param newInfo java.lang.String
-	 */
-	public void setInfo(String newInfo) {
-		setDescription(newInfo);
-	}
-
-	/**
-	 * 
-	 * @param newJspversion java.lang.String
-	 */
-	public void setJspversion(String newJspversion) {
-		fJSPVersion = newJspversion;
-	}
-
-	/**
-	 * Sets the largeIcon.
-	 * @param largeIcon The largeIcon to set
-	 */
-	public void setLargeIcon(String largeIcon) {
-		this.fLargeIcon = largeIcon;
-	}
-
-	public void setListeners(List listeners) {
-		this.fListeners = listeners;
-	}
-	/**
-	 * @param parentURI The parentURI to set.
-	 */
-	public void setParentURI(String parentURI) {
-		fParentURI = parentURI;
-	}
-	
-	public void setProperty(String property, Object value) {
-		fProperties.put(property, value);
-	}
-
-	/**
-	 * 
-	 * @param newShortname java.lang.String
-	 */
-	public void setShortname(String newShortname) {
-		fShortName = newShortname;
-	}
-
-	/**
-	 * Sets the smallIcon.
-	 * @param smallIcon The smallIcon to set
-	 */
-	public void setSmallIcon(String smallIcon) {
-		this.fSmallIcon = smallIcon;
-	}
-
-	/**
-	 * 
-	 * @param newTlibversion java.lang.String
-	 */
-	public void setTlibversion(String newTlibversion) {
-		fTLibVersion = newTlibversion;
-	}
-
-	/**
-	 * 
-	 * @param newUri java.lang.String
-	 */
-	public void setUri(String newUri) {
-		fURI = newUri;
-	}
-
-	public void setValidator(TLDValidator validator) {
-		this.validator = validator;
-	}
-
-	/**
-	 * supports method
-	 * @return boolean
-	 *
-	 * Returns true if the CMNode supports a specified property
-	 *
-	 */
-	public boolean supports(String propertyName) {
-		if (TLDDocument.CM_KIND.equals(propertyName) || "annotationMap".equals(propertyName)) //$NON-NLS-1$
-			return true;
-		return fProperties.containsKey(propertyName);
-	}
-
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(super.toString());
-		buffer.append("\n\t short name:" + StringUtils.escape(getShortname())); //$NON-NLS-1$
-		buffer.append("\n\t display name:" + StringUtils.escape(getDisplayName())); //$NON-NLS-1$
-		buffer.append("\n\t description (info):" + StringUtils.escape(getDescription())); //$NON-NLS-1$
-		buffer.append("\n\t URI:" + StringUtils.escape(getUri())); //$NON-NLS-1$
-		buffer.append("\n\t jsp version:" + StringUtils.escape(getJspversion())); //$NON-NLS-1$
-		buffer.append("\n\t taglib version:" + StringUtils.escape(getTlibversion())); //$NON-NLS-1$
-		buffer.append("\n\t small icon:" + StringUtils.escape(getSmallIcon())); //$NON-NLS-1$
-		buffer.append("\n\t large icon:" + StringUtils.escape(getLargeIcon())); //$NON-NLS-1$
-		if (getValidator() != null)
-			buffer.append("\n\t validator:" + StringUtils.replace(getValidator().toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		buffer.append("\n\t listeners:"); //$NON-NLS-1$
-		for (int i = 0; i < getListeners().size(); i++) {
-			buffer.append("\n" + StringUtils.replace(getListeners().get(i).toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-		buffer.append("\n\t elements:"); //$NON-NLS-1$
-		CMNamedNodeMap elements = getElements();
-		for (int i = 0; i < elements.getLength(); i++) {
-			buffer.append(StringUtils.replace(elements.item(i).toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		return buffer.toString();
-	}
-
-	public String getLocationString() {
-		return fLocationString;
-	}
-
-	public void setLocationString(String url) {
-		fLocationString = url;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMElementDeclarationImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMElementDeclarationImpl.java
deleted file mode 100644
index 52d0136..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMElementDeclarationImpl.java
+++ /dev/null
@@ -1,587 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP11TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.contentmodel.annotation.AnnotationMap;
-
-public class CMElementDeclarationImpl implements TLDElementDeclaration {
-
-	// optional attributes
-	CMNamedNodeMapImpl fAttributes = new CMNamedNodeMapImpl();
-	// (empty|JSP|tagdependant|scriptless) - optional, defaults to JSP
-	private String bodycontent = JSP11TLDNames.CONTENT_JSP;
-
-	/**
-	 * since JSP 1.2
-	 * 
-	 * Usage information
-	 */
-	private String description;
-
-	/**
-	 * since JSP 1.2
-	 */
-	private String displayName;
-
-	private CMDocument fOwnerDocument;
-
-	private String fPath = null;
-
-	private List fTagExtensions = new ArrayList(0);
-	/**
-	 * since JSP 1.2
-	 */
-	private String largeIcon;
-
-
-	private int maxOccur = -1;
-	private int minOccur = 0;
-
-	// required tag name
-	private String nodeName = null;
-
-	/**
-	 * since JSP 1.2
-	 */
-	private String smallIcon;
-
-	// tag handler class - required
-	private String tagclass = null;
-
-	// tag extra info class (subclass of javax.servlet.jsp.TagExtraInfo) -
-	// optional
-	private String teiclass = null;
-
-	/**
-	 * since JSP 1.2
-	 */
-	private List variables;
-
-	/**
-	 * since JSP 2.0
-	 */
-	private String fExample;
-	private String fImport;
-	private String fScriptingLanguage;
-	private String fDynamicAttributes;
-	private String fIsELIgnored;
-	private String fPageEncoding;
-	private String fTagSource;
-
-	private String fLocationString;
-	private String smallIconURL;
-
-	/**
-	 * CMElementDeclarationImpl constructor comment.
-	 */
-	public CMElementDeclarationImpl(CMDocument owner) {
-		super();
-		fOwnerDocument = owner;
-	}
-
-	/**
-	 * getAttributes method
-	 * 
-	 * @return CMNamedNodeMap
-	 * 
-	 * Returns CMNamedNodeMap of AttributeDeclaration
-	 */
-	public CMNamedNodeMap getAttributes() {
-		return fAttributes;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getBodycontent() {
-		return bodycontent;
-	}
-
-	/**
-	 * getCMContent method
-	 * 
-	 * @return CMContent
-	 * 
-	 * Returns the root node of this element's content model. This can be an
-	 * CMElementDeclaration or a CMGroup
-	 */
-	public CMContent getContent() {
-		return null;
-	}
-
-	/**
-	 * getContentType method
-	 * 
-	 * @return int
-	 * 
-	 * Returns one of : ANY, EMPTY, ELEMENT, MIXED, PCDATA, CDATA.
-	 */
-	public int getContentType() {
-		if (getBodycontent().equals(JSP11TLDNames.CONTENT_EMPTY))
-			return EMPTY;
-		if (getBodycontent().equals(JSP11TLDNames.CONTENT_TAGDEPENDENT))
-			return PCDATA;
-		else
-			// JSP
-			return ANY;
-	}
-
-	/**
-	 * getDataType method
-	 * 
-	 * @return java.lang.String
-	 */
-	public CMDataType getDataType() {
-		return new CMDataTypeImpl(CMDataType.CDATA);
-	}
-
-	/**
-	 * Gets the description.
-	 * 
-	 * @return Returns a String
-	 */
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * Gets the displayName.
-	 * 
-	 * @return Returns a String
-	 */
-	public String getDisplayName() {
-		return displayName;
-	}
-
-	/**
-	 * getElementName method
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getElementName() {
-		return getNodeName();
-	}
-
-	/**
-	 * @return Returns the example.
-	 */
-	public String getExample() {
-		return fExample;
-	}
-
-	/**
-	 * @return Returns the extensions.
-	 */
-	public List getExtensions() {
-		return fTagExtensions;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getInfo() {
-		return getDescription();
-	}
-
-	/**
-	 * Gets the largeIcon.
-	 * 
-	 * @return Returns a String
-	 */
-	public String getLargeIcon() {
-		return largeIcon;
-	}
-
-	/**
-	 * getLocalElements method
-	 * 
-	 * @return CMNamedNodeMap
-	 * 
-	 * Returns a list of locally defined elements.
-	 */
-	public CMNamedNodeMap getLocalElements() {
-		return null;
-	}
-
-	/**
-	 * getMaxOccur method
-	 * 
-	 * @return int
-	 * 
-	 * If -1, it's UNBOUNDED.
-	 */
-	public int getMaxOccur() {
-		return maxOccur;
-	}
-
-	/**
-	 * getMinOccur method
-	 * 
-	 * @return int
-	 * 
-	 * If 0, it's OPTIONAL. If 1, it's REQUIRED.
-	 */
-	public int getMinOccur() {
-		return minOccur;
-	}
-
-	/**
-	 * getNodeName method
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getNodeName() {
-		return nodeName;
-	}
-
-	/**
-	 * getNodeType method
-	 * 
-	 * @return int
-	 * 
-	 * Returns one of :
-	 * 
-	 */
-	public int getNodeType() {
-		return CMNode.ELEMENT_DECLARATION;
-	}
-
-	/**
-	 * @return
-	 */
-	public CMDocument getOwnerDocument() {
-		return fOwnerDocument;
-	}
-
-	/**
-	 * @return Returns the path.
-	 */
-	public String getPath() {
-		return fPath;
-	}
-
-	/**
-	 * getProperty method
-	 * 
-	 * @return java.lang.Object
-	 * 
-	 * Returns the object property described by the propertyName
-	 * 
-	 */
-	public Object getProperty(String propertyName) {
-		if ("tagInfo".equals(propertyName)) { //$NON-NLS-1$
-			return getTagInfo(); // return tag info
-			// bug88336 no need to restore markers
-			// return StringUtils.restoreMarkers(getTagInfo()); // return tag
-			// description
-		}
-		// Bug 155800
-		else if ("name".equals(propertyName)) { //$NON-NLS-1$
-			return getNodeName();
-		}
-		else if ("description".equals(propertyName)) { //$NON-NLS-1$
-			return getDescription();
-			// bug88336 no need to restore markers
-			// return StringUtils.restoreMarkers(getDescription()); // return
-			// tag description
-		}
-		else if (TLDDocument.CM_KIND.equals(propertyName)) {
-			return TLDDocument.JSP_TLD;
-		}
-		else if (TLDElementDeclaration.TAG_SOURCE.equals(propertyName)) {
-			return (fTagSource != null ? fTagSource :TLDElementDeclaration.SOURCE_JSP_TLD);
-		}
-		else if (JSP12TLDNames.SMALL_ICON.equals(propertyName) || JSP12TLDNames.LARGE_ICON.equals(propertyName)) {
-			if (smallIconURL != null) {
-				return smallIconURL;
-			}
-			return getOwnerDocument().getProperty(propertyName);
-		}
-		return null;
-	}
-
-	/**
-	 * Gets the smallIcon.
-	 * 
-	 * @return Returns a String
-	 */
-	public String getSmallIcon() {
-		return smallIcon;
-	}
-
-	String getSmallIconURL() {
-		return smallIconURL;
-	}
-
-	/**
-	 * Returns the XPath of this element (currently just returns the node
-	 * name)
-	 * 
-	 * @return
-	 */
-	private String getSpec() {
-		return getNodeName();
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getTagclass() {
-		return tagclass;
-	}
-
-	/**
-	 * Get the taginfo for this current element
-	 * 
-	 * @return String taginfo if it exists, null otherwise
-	 */
-	private String getTagInfo() {
-		if (getOwnerDocument().supports("annotationMap")) { //$NON-NLS-1$
-			AnnotationMap map = (AnnotationMap) getOwnerDocument().getProperty("annotationMap"); //$NON-NLS-1$
-			String spec = getSpec();
-			String result = map.getProperty(spec, "tagInfo"); //$NON-NLS-1$
-			return result;
-			// bug88336 no need to restore markers
-			// return StringUtils.restoreMarkers(result); // return tag info
-		}
-		return null;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getTeiclass() {
-		return teiclass;
-	}
-
-	/**
-	 * Gets the variables.
-	 * 
-	 * @return Returns a List
-	 */
-	public List getVariables() {
-		if (variables == null) {
-			variables = new ArrayList();
-		}
-		return variables;
-	}
-
-	/**
-	 * 
-	 * @param newBodycontent
-	 *            java.lang.String
-	 */
-	public void setBodycontent(String newBodycontent) {
-		bodycontent = newBodycontent;
-	}
-
-	/**
-	 * Sets the description.
-	 * 
-	 * @param description
-	 *            The description to set
-	 */
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	/**
-	 * Sets the displayName.
-	 * 
-	 * @param displayName
-	 *            The displayName to set
-	 */
-	public void setDisplayName(String displayName) {
-		this.displayName = displayName;
-	}
-
-	/**
-	 * @param example
-	 *            The example to set.
-	 */
-	public void setExample(String example) {
-		fExample = example;
-	}
-
-	/**
-	 * Sets the largeIcon.
-	 * 
-	 * @param largeIcon
-	 *            The largeIcon to set
-	 */
-	public void setLargeIcon(String largeIcon) {
-		this.largeIcon = largeIcon;
-	}
-
-	public void setNodeName(String string) {
-		nodeName = string;
-	}
-
-	/**
-	 * @param path
-	 *            The path to set.
-	 */
-	public void setPath(String path) {
-		fPath = path;
-	}
-
-	/**
-	 * Sets the smallIcon.
-	 * 
-	 * @param smallIcon
-	 *            The smallIcon to set
-	 */
-	public void setSmallIcon(String smallIcon) {
-		this.smallIcon = smallIcon;
-	}
-
-	void setSmallIconURL(String url) {
-		smallIconURL = url;
-	}
-
-	/**
-	 * 
-	 * @param newTagclass
-	 *            java.lang.String
-	 */
-	public void setTagclass(String newTagclass) {
-		tagclass = newTagclass;
-	}
-
-	/**
-	 * 
-	 * @param newTagclass
-	 *            java.lang.String
-	 */
-	public void setTagSource(String sourceKind) {
-		fTagSource = sourceKind;
-	}
-
-	/**
-	 * 
-	 * @param newTeiclass
-	 *            java.lang.String
-	 */
-	public void setTeiclass(String newTeiclass) {
-		teiclass = newTeiclass;
-	}
-
-	/**
-	 * Sets the variables.
-	 * 
-	 * @param variables
-	 *            The variables to set
-	 */
-	public void setVariables(List variables) {
-		this.variables = variables;
-	}
-
-	/**
-	 * supports method
-	 * 
-	 * @return boolean
-	 * 
-	 * Returns true if the CMNode supports a specified property
-	 * 
-	 */
-	public boolean supports(String propertyName) {
-		return propertyName == null || propertyName.equals("tagInfo") || propertyName.equals(JSP12TLDNames.DESCRIPTION) || propertyName.equals(TLDDocument.CM_KIND) || propertyName.equals(JSP12TLDNames.SMALL_ICON) || propertyName.equals(JSP12TLDNames.LARGE_ICON) || propertyName.equals(TLDElementDeclaration.TAG_SOURCE);//$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append("\n\t " + super.toString()); //$NON-NLS-1$
-		buffer.append("\n\t name:" + StringUtils.escape(getNodeName())); //$NON-NLS-1$
-		buffer.append("\n\t tag class:" + StringUtils.escape(getTagclass())); //$NON-NLS-1$
-		buffer.append("\n\t tei class:" + StringUtils.escape(getTeiclass())); //$NON-NLS-1$
-		buffer.append("\n\t body content:" + StringUtils.escape(getBodycontent())); //$NON-NLS-1$
-		buffer.append("\n\t description (info):" + StringUtils.escape(getDescription())); //$NON-NLS-1$
-		buffer.append("\n\t attributes:"); //$NON-NLS-1$
-		CMNamedNodeMap attributes = getAttributes();
-		for (int i = 0; i < attributes.getLength(); i++) {
-			buffer.append("\n\t\t" + StringUtils.replace(attributes.item(i).toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-		buffer.append("\n\t variables:"); //$NON-NLS-1$
-		for (int i = 0; i < getVariables().size(); i++) {
-			buffer.append("\n\t\t" + StringUtils.replace(getVariables().get(i).toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-		return buffer.toString();
-	}
-
-	public String getImport() {
-		return fImport;
-	}
-
-	public String getScriptingLanguage() {
-		return fScriptingLanguage;
-	}
-
-	public String getDynamicAttributes() {
-		return fDynamicAttributes;
-	}
-
-	public void setImport(String import1) {
-		fImport = import1;
-	}
-
-	public void setScriptingLanguage(String scriptingLanguage) {
-		fScriptingLanguage = scriptingLanguage;
-	}
-
-	public void setDynamicAttributes(String dynamicAttributes) {
-		fDynamicAttributes = dynamicAttributes;
-	}
-
-	public String getIsELIgnored() {
-		return fIsELIgnored;
-	}
-
-	public String getPageEncoding() {
-		return fPageEncoding;
-	}
-
-	public void setIsELIgnored(String isELIgnored) {
-		fIsELIgnored = isELIgnored;
-	}
-
-	public void setPageEncoding(String pageEncoding) {
-		fPageEncoding = pageEncoding;
-	}
-
-	public String getLocationString() {
-		if (fLocationString == null)
-			return ((CMDocumentImpl) fOwnerDocument).getLocationString();
-		return fLocationString;
-	}
-
-	public void setLocationString(String url) {
-		fLocationString = url;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMNamedNodeMapImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMNamedNodeMapImpl.java
deleted file mode 100644
index b8f378c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMNamedNodeMapImpl.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-
-
-import java.util.Hashtable;
-import java.util.Iterator;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-
-public class CMNamedNodeMapImpl implements CMNamedNodeMap {
-
-	public static CMNamedNodeMapImpl EMPTY_NAMED_NODE_MAP = new CMNamedNodeMapImpl();
-	protected Hashtable table = new Hashtable();
-
-	/**
-	 * CMNamedNodeMapImpl constructor comment.
-	 */
-	public CMNamedNodeMapImpl() {
-		super();
-	}
-
-	Hashtable getHashtable() {
-		return table;
-	}
-
-	/**
-	 * getLength method
-	 * @return int
-	 */
-	public int getLength() {
-		return table.size();
-	}
-
-	/**
-	 * getNamedItem method
-	 * @return CMNode
-	 * @param name java.lang.String
-	 */
-	public CMNode getNamedItem(String name) {
-		return (CMNode) table.get(name);
-	}
-
-	/**
-	 * item method
-	 * @return CMNode
-	 * @param index int
-	 */
-	public CMNode item(int index) {
-		Object result = null;
-		int size = table.size();
-		if (index < size) {
-			Iterator values = iterator();
-			for (int i = 0; i <= index; i++) {
-				result = values.next();
-			}
-		}
-		return (CMNode) result;
-	}
-
-	public Iterator iterator() {
-		return table.values().iterator();
-	}
-
-	/**
-	 * getNamedItem method
-	 * @return
-	 * @param name java.lang.String
-	 * @param aNode CMNode
-	 */
-	public void setNamedItem(String name, CMNode aNode) {
-		if (name != null && aNode != null)
-			table.put(name, aNode);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMNodeListImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMNodeListImpl.java
deleted file mode 100644
index 318c617..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMNodeListImpl.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNodeList;
-
-public class CMNodeListImpl implements CMNodeList {
-	static CMNodeListImpl EMPTY_NODE_LIST = new CMNodeListImpl(Collections.EMPTY_LIST);
-	protected List list;
-
-	public CMNodeListImpl() {
-		this(new ArrayList());
-	}
-
-	public CMNodeListImpl(List list) {
-		this.list = list;
-	}
-
-	public void appendItem(CMNode node) {
-		list.add(node);
-	}
-
-	/**
-	 * getLength method
-	 * @return int
-	 */
-	public int getLength() {
-		return list.size();
-	}
-
-	public List getList() {
-		return list;
-	}
-
-	/**
-	 * item method
-	 * @return CMNode
-	 * @param index int
-	 */
-	public CMNode item(int index) {
-		return (CMNode) list.get(index);
-	}
-
-	public Iterator iterator() {
-		return list.iterator();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java
deleted file mode 100644
index f386d1c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java
+++ /dev/null
@@ -1,1106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-import java.io.File;
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP11TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP20TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache.PropertyGroup;
-import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.internal.util.FacetModuleCoreSupport;
-import org.eclipse.jst.jsp.core.internal.util.FileContentCache;
-import org.eclipse.jst.jsp.core.internal.util.ZeroStructuredDocumentRegion;
-import org.eclipse.jst.jsp.core.taglib.IJarRecord;
-import org.eclipse.jst.jsp.core.taglib.ITLDRecord;
-import org.eclipse.jst.jsp.core.taglib.ITagDirRecord;
-import org.eclipse.jst.jsp.core.taglib.ITaglibIndexDelta;
-import org.eclipse.jst.jsp.core.taglib.ITaglibIndexListener;
-import org.eclipse.jst.jsp.core.taglib.ITaglibRecord;
-import org.eclipse.jst.jsp.core.taglib.IURLRecord;
-import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
-import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin;
-import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
-import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionHandler;
-import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionHandlerExtension;
-import org.eclipse.wst.sse.core.internal.ltk.parser.TagMarker;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.util.Assert;
-import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-public class TLDCMDocumentManager implements ITaglibIndexListener {
-
-	protected class DirectiveStructuredDocumentRegionHandler implements StructuredDocumentRegionHandler, StructuredDocumentRegionHandlerExtension {
-		/**
-		 * Adds a block tagname (fully namespace qualified) into the list of
-		 * block tag names for the parser. The marker
-		 * IStructuredDocumentRegion along with position cues during reparses
-		 * allow the JSPSourceParser to enable/ignore the tags as blocks.
-		 */
-		protected void addBlockTag(String tagnameNS, ITextRegionCollection marker) {
-			if (getParser() == null)
-				return;
-			if (getParser().getBlockMarker(tagnameNS) == null) {
-				getParser().addBlockMarker(new BlockMarker(tagnameNS, marker, DOMRegionContext.BLOCK_TEXT, true, false));
-				if (_debug) {
-					System.out.println("TLDCMDocumentManager added block marker: " + tagnameNS + "@" + marker.getStartOffset()); //$NON-NLS-2$//$NON-NLS-1$
-				}
-			}
-		}
-
-		protected void addTaglibTracker(String prefix, String uri, IStructuredDocumentRegion anchorStructuredDocumentRegion, CMDocument tldCMDocument) {
-			getTaglibTrackers().add(new TaglibTracker(uri, prefix, tldCMDocument, anchorStructuredDocumentRegion));
-		}
-
-		/**
-		 * Enables a TLD owning the given prefix loaded from the given URI at
-		 * the anchorStructuredDocumentRegion. The list of
-		 * additionalCMDocuments will claim to not know any of its tags at
-		 * positions earlier than that IStructuredDocumentRegion's position.
-		 * 
-		 * For taglib directives, the taglib is the anchor while taglibs
-		 * registered through include directives use the parent document's
-		 * include directive as their anchor.
-		 * 
-		 * @param prefix
-		 * @param uri
-		 * @param anchorStructuredDocumentRegion
-		 */
-		protected void enableTaglibFromURI(String prefix, String uri, IStructuredDocumentRegion anchorStructuredDocumentRegion) {
-			enableTags(prefix, uri, anchorStructuredDocumentRegion);
-			if (_debug) {
-				System.out.println("TLDCMDocumentManager registered a tracker for " + uri + " with prefix " + prefix); //$NON-NLS-2$//$NON-NLS-1$
-			}
-		}
-
-		private void enableTags(String prefix, String uri, IStructuredDocumentRegion anchorStructuredDocumentRegion) {
-			if (prefix == null || uri == null || bannedPrefixes.contains(prefix))
-				return;
-			// Try to load the CMDocument for this URI
-			CMDocument tld = getCMDocument(uri);
-			if (tld == null || !(tld instanceof TLDDocument)) {
-				if (_debug) {
-					System.out.println("TLDCMDocumentManager failed to create a CMDocument for " + uri); //$NON-NLS-1$
-				}
-				return;
-			}
-			registerTaglib(prefix, uri, anchorStructuredDocumentRegion, tld);
-		}
-
-		/**
-		 * Enables a TLD owning the given prefix loaded from the given URI at
-		 * the anchorStructuredDocumentRegion. The list of
-		 * additionalCMDocuments will claim to not know any of its tags at
-		 * positions earlier than that IStructuredDocumentRegion's position.
-		 * 
-		 * For taglib directives, the taglib is the anchor while taglibs
-		 * registered through include directives use the parent document's
-		 * include directive as their anchor.
-		 * 
-		 * @param prefix
-		 * @param uri
-		 * @param taglibStructuredDocumentRegion
-		 */
-		protected void enableTagsInDir(String prefix, String tagdir, IStructuredDocumentRegion anchorStructuredDocumentRegion) {
-			enableTags(prefix, tagdir, anchorStructuredDocumentRegion);
-			if (_debug) {
-				System.out.println("TLDCMDocumentManager registered a tracker for directory" + tagdir + " with prefix " + prefix); //$NON-NLS-2$//$NON-NLS-1$
-			}
-		}
-		
-		protected void processRegionCollection(ITextRegionCollection regionCollection, IStructuredDocumentRegion anchorStructuredDocumentRegion, JSPSourceParser textSource) {
-			/*
-			 * Would test > 1, but since we only care if there are 8 (<%@,
-			 * taglib, uri, =, where, prefix, =, what) [or 4 for include
-			 * directives]
-			 */
-			if (regionCollection.getNumberOfRegions() > 4 && regionCollection.getRegions().get(1).getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-				ITextRegion name = regionCollection.getRegions().get(1);
-				boolean taglibDetected = false;
-				boolean taglibDirectiveDetected = false;
-				boolean includeDetected = false;
-				boolean includeDirectiveDetected = false;
-				int startOffset = regionCollection.getStartOffset(name);
-				int textLength = name.getTextLength();
-
-				taglibDetected = textSource.regionMatches(startOffset, textLength, JSP12TLDNames.TAGLIB);
-				if (!taglibDetected)
-					taglibDirectiveDetected = textSource.regionMatches(startOffset, textLength, JSP12Namespace.ElementName.DIRECTIVE_TAGLIB);
-				if (!taglibDirectiveDetected)
-					includeDetected = textSource.regionMatches(startOffset, textLength, JSP12TLDNames.INCLUDE);
-				if (!includeDetected)
-					includeDirectiveDetected = textSource.regionMatches(startOffset, textLength, JSP12Namespace.ElementName.DIRECTIVE_INCLUDE);
-				if (taglibDetected || taglibDirectiveDetected) {
-					processTaglib(regionCollection, anchorStructuredDocumentRegion, textSource);
-				}
-				else if (includeDetected || includeDirectiveDetected) {
-					processInclude(regionCollection, anchorStructuredDocumentRegion, textSource);
-				}
-			}
-			else if (regionCollection.getNumberOfRegions() > 1 && DOMRegionContext.XML_TAG_OPEN.equals(regionCollection.getFirstRegion().getType())) {
-				processXMLStartTag(regionCollection, anchorStructuredDocumentRegion, textSource);
-			}			
-		}
-
-		public void nodeParsed(IStructuredDocumentRegion structuredDocumentRegion) {
-			if (!preludesHandled) {
-				handlePreludes();
-				preludesHandled = true;
-			}
-			processRegionCollection(structuredDocumentRegion, structuredDocumentRegion, getParser());
-		}
-
-		/**
-		 * Process an include directive found by the textSource parser and
-		 * anchor any taglibs found within at the
-		 * anchorStructuredDocumentRegion. Includes use the including file as
-		 * the point of reference, not necessarily the "top" file.
-		 */
-		protected void processInclude(ITextRegionCollection includeDirectiveCollection, IStructuredDocumentRegion anchorStructuredDocumentRegion, JSPSourceParser textSource) {
-			ITextRegionList regions = includeDirectiveCollection.getRegions();
-			String includedFile = null;
-			boolean isFilename = false;
-			try {
-				for (int i = 2; includedFile == null && i < regions.size(); i++) {
-					ITextRegion region = regions.get(i);
-					if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-						if (textSource.regionMatches(includeDirectiveCollection.getStartOffset(region), region.getTextLength(), JSP12TLDNames.FILE)) {
-							isFilename = true;
-						}
-						else {
-							isFilename = false;
-						}
-					}
-					else if (isFilename && region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-						includedFile = textSource.getText(includeDirectiveCollection.getStartOffset(region), region.getTextLength());
-						isFilename = false;
-					}
-				}
-			}
-			catch (StringIndexOutOfBoundsException sioobExc) {
-				// nothing to be done
-				includedFile = null;
-			}
-
-			if (fProcessIncludes && includedFile != null) {
-				// strip any extraneous quotes and white space
-				includedFile = StringUtils.strip(includedFile).trim();
-				IPath filePath = null;
-				/*
-				 * The resolution of the included fragment should use the file
-				 * containing the directive as the base reference, not always
-				 * the main JSP being invoked. Verified behavior with Apache
-				 * Tomcat 5.5.20.
-				 */
-				IPath modelBaseLocation = TaglibController.getLocation(TLDCMDocumentManager.this);
-				if(modelBaseLocation != null) {
-					if (getIncludes().isEmpty())
-						filePath = FacetModuleCoreSupport.resolve(modelBaseLocation, includedFile);
-					else
-						filePath = FacetModuleCoreSupport.resolve((IPath) getIncludes().peek(), includedFile);
-				}
-
-				// check for "loops"
-				if (filePath != null && !getIncludes().contains(filePath) && !filePath.equals(modelBaseLocation)) {
-					/*
-					 * Prevent slow performance when editing scriptlet part of
-					 * the JSP by only processing includes if they've been
-					 * modified. The IncludeHelper remembers any CMDocuments
-					 * created from the files it parses. Caching the URI and
-					 * prefix/tagdir allows us to just enable the CMDocument
-					 * when the previously parsed files.
-					 * 
-					 * REMAINING PROBLEM: fTLDCMReferencesMap does not map
-					 * from a fragment's path and also include all of the CM
-					 * references in fragments that *it* includes. The
-					 * fragments that it includes won't have its CM references
-					 * loaded, but then we'd need to record the URI and
-					 * location of the included fragment to resolve them
-					 * correctly, modifying enableTaglib() to also take a base
-					 * path and resolve the URI appropriately.
-					 */
-					if (hasAnyIncludeBeenModified(filePath)) {
-						getIncludes().push(filePath);
-
-						IncludeHelper includeHelper = new IncludeHelper(anchorStructuredDocumentRegion, getParser());
-						includeHelper.parse(filePath);
-						List references = includeHelper.taglibReferences;
-						fTLDCMReferencesMap.put(filePath, references);
-						for (int i = 0; references != null && i < references.size(); i++) {
-							TLDCMDocumentReference reference = (TLDCMDocumentReference) references.get(i);
-							getParser().addNestablePrefix(new TagMarker(reference.prefix + ":")); //$NON-NLS-1$
-						}
-						/*
-						 * TODO: walk up the include hierarchy and add
-						 * these references to each of the parents?
-						 */
-
-						getIncludes().pop();
-					}
-					else {
-						// Add from that saved list of uris/prefixes/documents
-						List references = (List) fTLDCMReferencesMap.get(filePath);
-						for (int i = 0; references != null && i < references.size(); i++) {
-							TLDCMDocumentReference reference = (TLDCMDocumentReference) references.get(i);
-							/*
-							 * The uri might not be resolved properly if
-							 * relative to the JSP fragment.
-							 */
-							enableTaglibFromURI(reference.prefix, reference.uri, anchorStructuredDocumentRegion);
-							getParser().addNestablePrefix(new TagMarker(reference.prefix + ":")); //$NON-NLS-1$
-						}
-					}
-				}
-				else if (getIncludes().contains(filePath)) {
-					if (Debug.debugTokenizer)
-						System.out.println("LOOP IN @INCLUDES FOUND: " + filePath); //$NON-NLS-1$
-				}
-			}
-		}
-
-		protected void processXMLStartTag(ITextRegionCollection startTagRegionCollection, IStructuredDocumentRegion anchorStructuredDocumentRegion, JSPSourceParser textSource) {
-			ITextRegionList regions = startTagRegionCollection.getRegions();
-			String uri = null;
-			String prefix = null;
-			boolean isTaglibValue = false;
-			// skip the first two, they're the open bracket and name
-			for (int i = 2; i < regions.size(); i++) {
-				ITextRegion region = regions.get(i);
-				if (region instanceof ITextRegionCollection) {
-					// Handle nested directives
-					processRegionCollection((ITextRegionCollection) region, anchorStructuredDocumentRegion, textSource);
-				}
-				else {
-					// Handle xmlns:xxx=yyy
-					int regionStartOffset = startTagRegionCollection.getStartOffset(region);
-					int regionTextLength = region.getTextLength();
-					if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-						if (regionTextLength > XMLNS_LENGTH && textSource.regionMatches(regionStartOffset, XMLNS_LENGTH, XMLNS)) {
-							prefix = textSource.getText(regionStartOffset + XMLNS_LENGTH, regionTextLength - XMLNS_LENGTH);
-							if (!bannedPrefixes.contains(prefix))
-								isTaglibValue = true;
-						}
-						else {
-							prefix = null;
-							isTaglibValue = false;
-						}
-					}
-					else if (isTaglibValue && region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-						if (prefix != null && prefix.length() > 0) {
-							uri = textSource.getText(regionStartOffset, regionTextLength);
-							uri = StringUtils.strip(uri);
-							int uriLength = uri.length();
-							if (uri != null && uriLength > 0) {
-								if (uriLength > URN_TLD_LENGTH && uri.startsWith(URN_TLD)) {
-									uri = uri.substring(URN_TLD_LENGTH);
-								}
-								else if (uriLength > URN_TAGDIR_LENGTH && uri.startsWith(URN_TAGDIR)) {
-									uri = uri.substring(URN_TAGDIR_LENGTH);
-								}
-								enableTags(prefix, uri, anchorStructuredDocumentRegion);
-								uri = null;
-								prefix = null;
-							}
-						}
-					}
-				}
-			}
-		}
-
-		/**
-		 * Pulls the URI and prefix from the given taglib directive
-		 * IStructuredDocumentRegion and makes sure the tags are known.
-		 */
-		protected void processTaglib(ITextRegionCollection taglibDirectiveCollection, IStructuredDocumentRegion anchorStructuredDocumentRegion, JSPSourceParser textSource) {
-			ITextRegionList regions = taglibDirectiveCollection.getRegions();
-			String uri = null;
-			String prefix = null;
-			String tagdir = null;
-			String attrName = null;
-			try {
-				for (int i = 2; i < regions.size(); i++) {
-					ITextRegion region = regions.get(i);
-					// remember attribute name
-					int startOffset = taglibDirectiveCollection.getStartOffset(region);
-					int textLength = region.getTextLength();
-					if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-						// String name = textSource.getText(startOffset,
-						// textLength);
-						if (textSource.regionMatches(startOffset, textLength, JSP11TLDNames.PREFIX)) {
-							attrName = JSP11TLDNames.PREFIX;
-						}
-						else if (textSource.regionMatches(startOffset, textLength, JSP12TLDNames.URI)) {
-							attrName = JSP11TLDNames.URI;
-						}
-						else if (textSource.regionMatches(startOffset, textLength, JSP20TLDNames.TAGDIR)) {
-							attrName = JSP20TLDNames.TAGDIR;
-						}
-						else {
-							attrName = null;
-						}
-					}
-					// process value
-					else if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-						if (JSP11TLDNames.PREFIX.equals(attrName))
-							prefix = StringUtils.strip(textSource.getText(startOffset, textLength));
-						else if (JSP11TLDNames.URI.equals(attrName))
-							uri = StringUtils.strip(textSource.getText(startOffset, textLength));
-						else if (JSP20TLDNames.TAGDIR.equals(attrName))
-							tagdir = StringUtils.strip(textSource.getText(startOffset, textLength));
-					}
-				}
-			}
-			catch (StringIndexOutOfBoundsException sioobExc) {
-				// nothing to be done
-				uri = null;
-				prefix = null;
-			}
-			if (uri != null && prefix != null && uri.length() > 0 && prefix.length() > 0) {
-				enableTaglibFromURI(prefix, StringUtils.strip(uri), anchorStructuredDocumentRegion);
-			}
-			else if (tagdir != null && prefix != null && tagdir.length() > 0 && prefix.length() > 0) {
-				enableTagsInDir(StringUtils.strip(prefix), StringUtils.strip(tagdir), anchorStructuredDocumentRegion);
-			}
-		}
-
-		private void registerTaglib(String prefix, String uri, IStructuredDocumentRegion anchorStructuredDocumentRegion, CMDocument tld) {
-			CMNamedNodeMap elements = tld.getElements();
-			/*
-			 * Go through the CMDocument for any tags that must be marked as
-			 * block tags starting at the anchoring IStructuredDocumentRegion.
-			 * As the document is edited and the IStructuredDocumentRegion
-			 * moved around, the block tag enablement will automatically
-			 * follow it.
-			 */
-			for (int i = 0; i < elements.getLength(); i++) {
-				TLDElementDeclaration ed = (TLDElementDeclaration) elements.item(i);
-				if (ed.getBodycontent() == JSP12TLDNames.CONTENT_TAGDEPENDENT)
-					addBlockTag(prefix + ":" + ed.getNodeName(), anchorStructuredDocumentRegion); //$NON-NLS-1$
-			}
-			/*
-			 * Since modifications to StructuredDocumentRegions adjacent to a
-			 * taglib directive can cause that IStructuredDocumentRegion to be
-			 * reported, filter out any duplicated URIs. When the taglib is
-			 * actually modified, a full rebuild will occur and no duplicates
-			 * will/should be found.
-			 */
-			boolean doTrack = true;
-			List trackers = getTaglibTrackers();
-			for (int i = 0; i < trackers.size(); i++) {
-				TaglibTracker tracker = (TaglibTracker) trackers.get(i);
-				if (tracker.getPrefix().equals(prefix) && tracker.getURI().equals(uri)) {
-					doTrack = false;
-				}
-			}
-			if (doTrack) {
-				addTaglibTracker(prefix, uri, anchorStructuredDocumentRegion, tld);
-			}
-		}
-
-		private void resetBlockTags() {
-			if (getParser() == null)
-				return;
-			Iterator names = getParser().getBlockMarkers().iterator();
-			while (names.hasNext()) {
-				BlockMarker marker = (BlockMarker) names.next();
-				if (!marker.isGlobal() && marker.getContext() == DOMRegionContext.BLOCK_TEXT) {
-					if (_debug) {
-						System.out.println("TLDCMDocumentManager removing block tag named: " + marker.getTagName()); //$NON-NLS-1$
-					}
-					names.remove();
-				}
-			}
-		}
-
-		public void resetNodes() {
-			if (Debug.debugTaglibs)
-				System.out.println(getClass().getName() + ": resetting"); //$NON-NLS-1$
-			getIncludes().clear();
-			resetBlockTags();
-			resetTaglibTrackers();
-		}
-
-		public void setStructuredDocument(IStructuredDocument newDocument) {
-			Assert.isTrue(newDocument != null, "null document"); //$NON-NLS-1$
-			Assert.isTrue(newDocument.getParser() != null, "null document parser"); //$NON-NLS-1$
-			Assert.isTrue(newDocument.getParser() instanceof JSPSourceParser, "can only listen to document with a JSPSourceParser"); //$NON-NLS-1$
-			getSourceParser().removeStructuredDocumentRegionHandler(this);
-			setSourceParser((JSPSourceParser) newDocument.getParser());
-			getSourceParser().addStructuredDocumentRegionHandler(this);
-		}
-	}
-
-	protected class IncludeHelper extends DirectiveStructuredDocumentRegionHandler {
-		protected IStructuredDocumentRegion fAnchor = null;
-		protected JSPSourceParser fLocalParser = null;
-		protected JSPSourceParser fParentParser = null;
-		List taglibReferences = null;
-
-		public IncludeHelper(IStructuredDocumentRegion anchor, JSPSourceParser rootParser) {
-			super();
-			fAnchor = anchor;
-			fParentParser = rootParser;
-			taglibReferences = new ArrayList(0);
-		}
-
-		protected void addTaglibTracker(String prefix, String uri, IStructuredDocumentRegion anchorStructuredDocumentRegion, CMDocument tldCMDocument) {
-			super.addTaglibTracker(prefix, uri, anchorStructuredDocumentRegion, tldCMDocument);
-			TLDCMDocumentReference reference = new TLDCMDocumentReference();
-			reference.prefix = prefix;
-			reference.uri = uri;
-			taglibReferences.add(reference);
-		}
-
-		protected String getContents(IPath filePath) {
-			return FileContentCache.getInstance().getContents(filePath);
-		}
-
-		public void nodeParsed(IStructuredDocumentRegion structuredDocumentRegion) {
-			processRegionCollection(structuredDocumentRegion, fAnchor, fLocalParser);
-		}
-
-		/**
-		 * @param path -
-		 *            the fullpath for the resource to be parsed
-		 */
-		void parse(IPath path) {
-			JSPSourceParser p = new JSPSourceParser();
-			fLocalParser = p;
-			String s = getContents(path);
-			// Should we consider preludes on this segment?
-			fLocalParser.addStructuredDocumentRegionHandler(IncludeHelper.this);
-			fLocalParser.reset(s);
-			List blockTags = fParentParser.getBlockMarkers();
-			for (int i = 0; i < blockTags.size(); i++) {
-				BlockMarker marker = (BlockMarker) blockTags.get(i);
-				fLocalParser.addBlockMarker(new BlockMarker(marker.getTagName(), null, marker.getContext(), marker.isCaseSensitive()));
-			}
-			TagMarker[] knownPrefixes = (TagMarker[]) fParentParser.getNestablePrefixes().toArray(new TagMarker[0]);
-			for (int i = 0; i < knownPrefixes.length; i++) {
-				fLocalParser.addNestablePrefix(new TagMarker(knownPrefixes[i].getTagName(), null));
-			}
-			// force parse
-			fLocalParser.getDocumentRegions();
-			fLocalParser = null;
-		}
-
-		public void resetNodes() {
-		}
-	}
-
-	/**
-	 * An entry in the shared cache map
-	 */
-	static class TLDCacheEntry {
-		CMDocument document;
-		long modificationStamp;
-		int referenceCount;
-	}
-
-	private static class TLDCMDocumentDescriptor {
-		Object cacheKey;
-		CMDocument document;
-
-		TLDCMDocumentDescriptor() {
-			super();
-		}
-	}
-
-	private class TLDCMDocumentReference {
-		String prefix;
-		String uri;
-	}
-
-	static final boolean _debug = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/tldcmdocument/manager")); //$NON-NLS-1$ //$NON-NLS-2$
-	static final boolean _debugCache = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/tldcmdocument/cache")); //$NON-NLS-1$ //$NON-NLS-2$
-	// will hold the prefixes banned by the specification; taglibs may not use
-	// them
-	protected static List bannedPrefixes = null;
-
-	private static Hashtable fCache = null;
-	final String XMLNS = "xmlns:"; //$NON-NLS-1$ 
-	final String URN_TAGDIR = "urn:jsptagdir:";
-	final String URN_TLD = "urn:jsptld:";
-
-	final int XMLNS_LENGTH = XMLNS.length();
-	final int URN_TAGDIR_LENGTH = URN_TAGDIR.length();
-	final int URN_TLD_LENGTH = URN_TLD.length();
-
-	static {
-		bannedPrefixes = new ArrayList(7);
-		bannedPrefixes.add("jsp"); //$NON-NLS-1$
-		bannedPrefixes.add("jspx"); //$NON-NLS-1$
-		bannedPrefixes.add("java"); //$NON-NLS-1$
-		bannedPrefixes.add("javax"); //$NON-NLS-1$
-		bannedPrefixes.add("servlet"); //$NON-NLS-1$
-		bannedPrefixes.add("sun"); //$NON-NLS-1$
-		bannedPrefixes.add("sunw"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Gets all of the known documents.
-	 * 
-	 * @return Returns a Hashtable of either TLDCacheEntrys or WeakReferences
-	 *         to TLD CMDocuments
-	 */
-	public static Hashtable getSharedDocumentCache() {
-		if (fCache == null) {
-			fCache = new Hashtable();
-		}
-		return fCache;
-	}
-
-
-	public static Object getUniqueIdentifier(ITaglibRecord reference) {
-		if (reference == null)
-			return null;
-		Object identifier = null;
-		switch (reference.getRecordType()) {
-			case (ITaglibRecord.TLD) : {
-				ITLDRecord record = (ITLDRecord) reference;
-				identifier = record.getPath();
-			}
-				break;
-			case (ITaglibRecord.JAR) : {
-				IJarRecord record = (IJarRecord) reference;
-				identifier = record.getLocation();
-			}
-				break;
-			case (ITaglibRecord.TAGDIR) : {
-				ITagDirRecord record = (ITagDirRecord) reference;
-				identifier = record.getPath();
-			}
-				break;
-			case (ITaglibRecord.URL) : {
-				IURLRecord record = (IURLRecord) reference;
-				identifier = record.getURL();
-			}
-				break;
-			default :
-				identifier = reference;
-				break;
-		}
-		return identifier;
-	}
-
-	private CMDocumentFactoryTLD fCMDocumentBuilder = null;
-
-	private DirectiveStructuredDocumentRegionHandler fDirectiveHandler = null;
-
-	/**
-	 * The locally-know list of CMDocuments
-	 */
-	private Hashtable fDocuments = null;
-
-	// timestamp cache to prevent excessive reparsing
-	// of included files
-	// IPath (filepath) > Long (modification stamp)
-	HashMap fInclude2TimestampMap = new HashMap();
-
-	private Stack fIncludes = null;
-
-	private JSPSourceParser fParser = null;
-
-	private List fTaglibTrackers = null;
-
-	Map fTLDCMReferencesMap = new HashMap();
-	boolean fProcessIncludes = true;
-	boolean preludesHandled = false;
-
-	public TLDCMDocumentManager() {
-		super();
-	}
-
-	public void clearCache() {
-		if (_debugCache) {
-			System.out.println("TLDCMDocumentManager cleared its private CMDocument cache"); //$NON-NLS-1$
-		}
-		for (Iterator iter = getDocuments().keySet().iterator(); iter.hasNext();) {
-			Object key = iter.next();
-			synchronized (getSharedDocumentCache()) {
-				Object o = getSharedDocumentCache().get(key);
-				if (o instanceof TLDCacheEntry) {
-					TLDCacheEntry entry = (TLDCacheEntry) o;
-					entry.referenceCount--;
-					if (entry.referenceCount <= 0) {
-						getSharedDocumentCache().put(key, new SoftReference(entry));
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Derives an unique cache key for the give URI. The URI is "resolved" and
-	 * a unique value generated from the result. This ensures that two
-	 * different relative references from different files do not have
-	 * overlapping TLD records in the shared cache if they don't resolve to
-	 * the same TLD.
-	 * 
-	 * @param uri
-	 * @return
-	 */
-	protected Object getCacheKey(String uri) {
-		ITaglibRecord record = TaglibIndex.resolve(getCurrentParserPath().toString(), uri, false);
-		if (record != null) {
-			return getUniqueIdentifier(record);
-		}
-		String location = URIResolverPlugin.createResolver().resolve(getCurrentBaseLocation(), null, uri);
-		return location;
-	}
-
-	/**
-	 * Return the CMDocument at the uri (cached)
-	 */
-	protected CMDocument getCMDocument(String uri) {
-		if (uri == null || uri.length() == 0)
-			return null;
-		String reference = uri;
-		Object cacheKey = getCacheKey(reference);
-		long lastModified = getModificationStamp(reference);
-		CMDocument doc = (CMDocument) getDocuments().get(cacheKey);
-		if (doc == null) {
-			/*
-			 * If hasn't been moved into the local table, do so and increment
-			 * the count. A local URI reference can be different depending on
-			 * the file from which it was referenced. Use a computed key to
-			 * keep them straight.
-			 */
-			Object o = getSharedDocumentCache().get(cacheKey);
-			if (o != null) {
-				if (o instanceof TLDCacheEntry) {
-					TLDCacheEntry entry = (TLDCacheEntry) o;
-					if (_debugCache) {
-						System.out.println("TLDCMDocument cache hit on " + cacheKey);
-					}
-					if (entry != null && entry.modificationStamp != IResource.NULL_STAMP && entry.modificationStamp >= lastModified) {
-						doc = entry.document;
-						entry.referenceCount++;
-					}
-					else {
-						getSharedDocumentCache().remove(cacheKey);
-					}
-				}
-				else if (o instanceof Reference) {
-					TLDCacheEntry entry = (TLDCacheEntry) ((Reference) o).get();
-					if (entry != null) {
-						if (entry.modificationStamp != IResource.NULL_STAMP && entry.modificationStamp >= lastModified) {
-							doc = entry.document;
-							entry.referenceCount = 1;
-							getSharedDocumentCache().put(cacheKey, entry);
-						}
-					}
-					else {
-						getSharedDocumentCache().remove(cacheKey);
-					}
-				}
-			}
-			/* No document was found cached, create a new one and share it */
-			if (doc == null) {
-				if (_debugCache) {
-					System.out.println("TLDCMDocument cache miss on " + cacheKey);
-				}
-				TLDCMDocumentDescriptor descriptor = loadTaglib(reference);
-				if (descriptor != null) {
-					TLDCacheEntry entry = new TLDCacheEntry();
-					doc = entry.document = descriptor.document;
-					entry.referenceCount = 1;
-					entry.modificationStamp = getModificationStamp(reference);
-					getSharedDocumentCache().put(cacheKey, entry);
-				}
-			}
-			if (doc != null) {
-				getDocuments().put(cacheKey, doc);
-			}
-		}
-		return doc;
-	}
-
-	private long getModificationStamp(String reference) {
-		ITaglibRecord record = TaglibIndex.resolve(getCurrentParserPath().toString(), reference, false);
-		long modificationStamp = IResource.NULL_STAMP;
-		if (record != null) {
-			switch (record.getRecordType()) {
-				case (ITaglibRecord.TLD) : {
-					IFile tldfile = ResourcesPlugin.getWorkspace().getRoot().getFile(((ITLDRecord) record).getPath());
-					if (tldfile.isAccessible()) {
-						modificationStamp = tldfile.getModificationStamp();
-					}
-				}
-					break;
-				case (ITaglibRecord.JAR) : {
-					File jarfile = new File(((IJarRecord) record).getLocation().toOSString());
-					if (jarfile.exists()) {
-						try {
-							modificationStamp = jarfile.lastModified();
-						}
-						catch (SecurityException e) {
-							modificationStamp = IResource.NULL_STAMP;
-						}
-					}
-				}
-					break;
-				case (ITaglibRecord.TAGDIR) : {
-					IFolder tagFolder = ResourcesPlugin.getWorkspace().getRoot().getFolder(((ITagDirRecord) record).getPath());
-					if (tagFolder.isAccessible()) {
-						IResource[] members;
-						try {
-							members = tagFolder.members();
-							for (int i = 0; i < members.length; i++) {
-								modificationStamp = Math.max(modificationStamp, members[i].getModificationStamp());
-							}
-						}
-						catch (CoreException e) {
-							modificationStamp = IResource.NULL_STAMP;
-						}
-					}
-				}
-					break;
-				case (ITaglibRecord.URL) : {
-					modificationStamp = IResource.NULL_STAMP;
-				}
-					break;
-				default :
-					break;
-			}
-		}
-		return modificationStamp;
-	}
-
-
-	/**
-	 * Gets the cMDocumentBuilder.
-	 * 
-	 * @return Returns a CMDocumentFactoryTLD, since it has more builder
-	 *         methods
-	 */
-	protected CMDocumentFactoryTLD getCMDocumentBuilder() {
-		if (fCMDocumentBuilder == null)
-			fCMDocumentBuilder = new CMDocumentFactoryTLD();
-		return fCMDocumentBuilder;
-	}
-
-	public List getCMDocumentTrackers(int offset) {
-		List validDocs = new ArrayList();
-		Iterator alldocs = getTaglibTrackers().iterator();
-		while (alldocs.hasNext()) {
-			TaglibTracker aTracker = (TaglibTracker) alldocs.next();
-			if (aTracker.getStructuredDocumentRegion().getStartOffset() <= offset || offset < 0) {
-				validDocs.add(aTracker);
-			}
-		}
-		return validDocs;
-	}
-
-	public List getCMDocumentTrackers(String prefix, int offset) {
-		List validDocs = new ArrayList();
-		Iterator alldocs = getTaglibTrackers().iterator();
-		while (alldocs.hasNext()) {
-			TaglibTracker aTracker = (TaglibTracker) alldocs.next();
-			/**
-			 * '<' is used to support the immediate use of a custom tag in jspx files
-			 */
-			if ((aTracker.getStructuredDocumentRegion().getStartOffset() <= offset || offset < 0) && aTracker.getPrefix().equals(prefix)) {
-				validDocs.add(aTracker);
-			}
-		}
-		return validDocs;
-	}
-
-	/**
-	 * Return the filesystem location in the current parser. This method is
-	 * called while recursing through included fragments, so it much check the
-	 * include stack. The filesystem location is needed for common URI
-	 * resolution in case the Taglib Index doesn't know the URI being loaded.
-	 * 
-	 * @return
-	 */
-	String getCurrentBaseLocation() {
-		String baseLocation = null;
-		IPath path = getCurrentParserPath();
-		if (path != null) {
-			if (path.segmentCount() > 1) {
-				IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-				IPath location = file.getLocation();
-				if (location != null) {
-					baseLocation = location.toString();
-				}
-				else {
-					URI uriLocation = file.getLocationURI();
-					if (uriLocation != null) {
-						baseLocation = uriLocation.toString();
-					}
-				}
-				if (baseLocation == null) {
-					baseLocation = path.toString();
-				}
-			}
-		}
-		return baseLocation;
-	}
-
-	/**
-	 * Return the path used in the current parser. This method is called while
-	 * recursing through included fragments, so it much check the include
-	 * stack.
-	 * 
-	 * @return
-	 */
-	IPath getCurrentParserPath() {
-		IPath path = null;
-		if (!getIncludes().isEmpty()) {
-			path = (IPath) getIncludes().peek();
-		}
-		else {
-			path = TaglibController.getLocation(this);
-		}
-
-		return path;
-	}
-
-	protected DirectiveStructuredDocumentRegionHandler getDirectiveStructuredDocumentRegionHandler() {
-		if (fDirectiveHandler == null)
-			fDirectiveHandler = new DirectiveStructuredDocumentRegionHandler();
-		return fDirectiveHandler;
-	}
-
-	/**
-	 * Gets the documents.
-	 * 
-	 * @return Returns a java.util.Hashtable
-	 */
-	public Hashtable getDocuments() {
-		if (fDocuments == null)
-			fDocuments = new Hashtable();
-		return fDocuments;
-	}
-
-	/**
-	 * Gets the includes.
-	 * 
-	 * @return Returns a Stack
-	 */
-	protected Stack getIncludes() {
-		if (fIncludes == null)
-			fIncludes = new Stack();
-		return fIncludes;
-	}
-
-	JSPSourceParser getParser() {
-		return fParser;
-	}
-
-	public JSPSourceParser getSourceParser() {
-		return fParser;
-	}
-
-	public StructuredDocumentRegionHandler getStructuredDocumentRegionHandler() {
-		return getDirectiveStructuredDocumentRegionHandler();
-	}
-
-	/**
-	 * 
-	 * @return java.util.List
-	 */
-	public List getTaglibTrackers() {
-		if (fTaglibTrackers == null)
-			fTaglibTrackers = new ArrayList();
-		return fTaglibTrackers;
-	}
-
-	void handlePreludes() {
-		IStructuredDocumentRegion anchor = new ZeroStructuredDocumentRegion(null, -1);
-		fProcessIncludes = false;
-
-		IPath currentPath = getCurrentParserPath();
-		if (currentPath != null) {
-			PropertyGroup[] propertyGroups = DeploymentDescriptorPropertyCache.getInstance().getPropertyGroups(currentPath);
-			for(int k = 0; k < propertyGroups.length; k++) {
-				IPath[] preludes = propertyGroups[k].getIncludePrelude();
-				for (int i = 0; i < preludes.length; i++) {
-					if (!getIncludes().contains(preludes[i]) && !preludes[i].equals(currentPath)) {
-						getIncludes().push(preludes[i]);
-						if (getParser() != null) {
-							IncludeHelper includeHelper = new IncludeHelper(anchor, getParser());
-							includeHelper.parse(preludes[i]);
-							List references = includeHelper.taglibReferences;
-							fTLDCMReferencesMap.put(preludes[i], references);
-							for (int j = 0; j < references.size(); j++) {
-								TLDCMDocumentReference reference = (TLDCMDocumentReference) references.get(j);
-								getParser().addNestablePrefix(new TagMarker(reference.prefix + ":")); //$NON-NLS-1$
-							}
-						}
-						else
-							Logger.log(Logger.WARNING, "Warning: parser text was requested by " + getClass().getName() + " but none was available; taglib support disabled"); //$NON-NLS-1$ //$NON-NLS-2$
-						getIncludes().pop();
-					}
-				}
-			}
-		}
-
-		fProcessIncludes = true;
-	}
-
-	/**
-	 * @param filePath
-	 *            the path to check for modification
-	 */
-	boolean hasAnyIncludeBeenModified(IPath filePath) {
-		boolean result = false;
-		// check the top level
-		if (hasBeenModified(filePath)) {
-			result = true;
-		}
-		else {
-			// check all includees
-			Iterator iter = fInclude2TimestampMap.keySet().iterator();
-			while (iter.hasNext()) {
-				if (hasBeenModified((IPath) iter.next())) {
-					result = true;
-					break;
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @param filename
-	 * @return
-	 */
-	boolean hasBeenModified(IPath filePath) {
-		boolean result = false;
-		// quick filename/timestamp cache check here...
-		IFile f = null;
-		if (f == null && filePath.segmentCount() > 1) {
-			f = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
-		}
-		if (f != null && f.exists()) {
-			Long currentStamp = new Long(f.getModificationStamp());
-			Object o = fInclude2TimestampMap.get(filePath);
-			if (o != null) {
-				Long previousStamp = (Long) o;
-				// stamps don't match, file changed
-				if (currentStamp.longValue() != previousStamp.longValue()) {
-					result = true;
-					// store for next time
-					fInclude2TimestampMap.put(filePath, currentStamp);
-				}
-			}
-			else {
-				// return true, since we've not encountered this file yet.
-				result = true;
-				// store for next time
-				fInclude2TimestampMap.put(filePath, currentStamp);
-			}
-		}
-		return result;
-	}
-
-	public void indexChanged(ITaglibIndexDelta event) {
-		synchronized (getSharedDocumentCache()) {
-			Iterator values = getSharedDocumentCache().values().iterator();
-			while (values.hasNext()) {
-				Object o = values.next();
-				if (o instanceof Reference) {
-					values.remove();
-				}
-			}
-		}
-	}
-
-	/**
-	 * Loads the taglib from the specified URI. It must point to a valid
-	 * taglib descriptor to work.
-	 */
-	protected TLDCMDocumentDescriptor loadTaglib(String uri) {
-		TLDCMDocumentDescriptor entry = null;
-		IPath currentPath = getCurrentParserPath();
-		if (currentPath != null) {
-			CMDocument document = null;
-			ITaglibRecord record = TaglibIndex.resolve(currentPath.toString(), uri, false);
-			if (record != null) {
-				document = getCMDocumentBuilder().createCMDocument(record);
-				if (document != null) {
-					entry = new TLDCMDocumentDescriptor();
-					entry.document = document;
-					entry.cacheKey = getUniqueIdentifier(record);
-				}
-			}
-			else {
-				/* Not a very-often used code path (we hope) */
-				String currentBaseLocation = getCurrentBaseLocation();
-				if (currentBaseLocation != null) {
-					String location = URIResolverPlugin.createResolver().resolve(currentBaseLocation, null, uri);
-					if (location != null) {
-						if (_debug) {
-							System.out.println("Loading tags from " + uri + " at " + location); //$NON-NLS-2$//$NON-NLS-1$
-						}
-						document = getCMDocumentBuilder().createCMDocument(location);
-						entry = new TLDCMDocumentDescriptor();
-						entry.document = document;
-						entry.cacheKey = location;
-					}
-				}
-			}
-		}
-		return entry;
-	}
-
-	protected void resetTaglibTrackers() {
-		if (_debug) {
-			System.out.println("TLDCMDocumentManager cleared its taglib trackers\n"); //$NON-NLS-1$
-		}
-		preludesHandled = false;
-		getTaglibTrackers().clear();
-	}
-
-	public void setSourceParser(JSPSourceParser parser) {
-		if (fParser != null)
-			fParser.removeStructuredDocumentRegionHandler(getStructuredDocumentRegionHandler());
-		fParser = parser;
-		if (fParser != null)
-			fParser.addStructuredDocumentRegionHandler(getStructuredDocumentRegionHandler());
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDFunctionImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDFunctionImpl.java
deleted file mode 100644
index 364711b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDFunctionImpl.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDFunction;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-
-public class TLDFunctionImpl implements TLDFunction {
-	private String fClassName = null;
-	private String fDescription = null;
-	private String fDisplayName = null;
-	private String fExample = null;
-	private List fExtensions = new ArrayList(0);
-	private String fIcon = null;
-	private String fName = null;
-
-	private CMDocument fOwnerDocument = null;
-	private String fSignature = null;
-
-	public TLDFunctionImpl(CMDocument owner) {
-		super();
-		fOwnerDocument = owner;
-	}
-
-	/**
-	 * @return Returns the className.
-	 */
-	public String getClassName() {
-		return fClassName;
-	}
-	/**
-	 * @return Returns the description.
-	 */
-	public String getDescription() {
-		return fDescription;
-	}
-
-	/**
-	 * @return Returns the displayName.
-	 */
-	public String getDisplayName() {
-		return fDisplayName;
-	}
-
-	/**
-	 * @return Returns the example.
-	 */
-	public String getExample() {
-		return fExample;
-	}
-
-	/**
-	 * @return Returns the extensions.
-	 */
-	public List getExtensions() {
-		return fExtensions;
-	}
-
-	/**
-	 * @return Returns the icon.
-	 */
-	public String getIcon() {
-		return fIcon;
-	}
-
-	/**
-	 * @return Returns the name.
-	 */
-	public String getName() {
-		return fName;
-	}
-
-	/**
-	 * @return Returns the ownerDocument.
-	 */
-	public CMDocument getOwnerDocument() {
-		return fOwnerDocument;
-	}
-
-	/**
-	 * @return Returns the signature.
-	 */
-	public String getSignature() {
-		return fSignature;
-	}
-
-	/**
-	 * @param className
-	 *            The className to set.
-	 */
-	public void setClassName(String className) {
-		fClassName = className;
-	}
-	/**
-	 * @param description The description to set.
-	 */
-	public void setDescription(String description) {
-		fDescription = description;
-	}
-
-	/**
-	 * @param displayName
-	 *            The displayName to set.
-	 */
-	public void setDisplayName(String displayName) {
-		fDisplayName = displayName;
-	}
-
-	/**
-	 * @param example
-	 *            The example to set.
-	 */
-	public void setExample(String example) {
-		fExample = example;
-	}
-
-	/**
-	 * @param icon
-	 *            The icon to set.
-	 */
-	public void setIcon(String icon) {
-		fIcon = icon;
-	}
-
-	/**
-	 * @param name
-	 *            The name to set.
-	 */
-	public void setName(String name) {
-		fName = name;
-	}
-
-	/**
-	 * @param signature
-	 *            The signature to set.
-	 */
-	public void setSignature(String signature) {
-		fSignature = signature;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDInitParamImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDInitParamImpl.java
deleted file mode 100644
index c1cdfe6..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDInitParamImpl.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*
- * Created on Sep 9, 2003
- *
- * To change the template for this generated file go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
- */
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDInitParam;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-
-
-public class TLDInitParamImpl implements TLDInitParam {
-	private String description;
-	private String name;
-	private String value;
-
-	public TLDInitParamImpl() {
-		super();
-	}
-
-	public String getDescription() {
-		return description;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public String getValue() {
-		return value;
-	}
-
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public void setValue(String value) {
-		this.value = value;
-	}
-
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(super.toString());
-		buffer.append("\n\t name:" + StringUtils.escape(getName())); //$NON-NLS-1$
-		buffer.append("\n\t description:" + StringUtils.escape(getDescription())); //$NON-NLS-1$
-		buffer.append("\n\t value:" + StringUtils.escape(getValue())); //$NON-NLS-1$
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDListenerImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDListenerImpl.java
deleted file mode 100644
index 24ef99c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDListenerImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*
- * Created on Sep 9, 2003
- *
- * To change the template for this generated file go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
- */
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDListener;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-
-
-public class TLDListenerImpl implements TLDListener {
-	protected String listenerClass;
-
-	public String getListenerClass() {
-		return listenerClass;
-	}
-
-	public void setListenerClass(String className) {
-		listenerClass = className;
-	}
-
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(super.toString());
-		buffer.append("\n\t listener class:" + StringUtils.escape(getListenerClass())); //$NON-NLS-1$
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDValidatorImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDValidatorImpl.java
deleted file mode 100644
index 446f743..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDValidatorImpl.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*
- * Created on Sep 9, 2003
- *
- * To change the template for this generated file go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
- */
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDValidator;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-
-
-public class TLDValidatorImpl implements TLDValidator {
-	protected List initParams;
-	protected String validatorClass;
-
-	public List getInitParams() {
-		if (initParams == null)
-			initParams = new ArrayList();
-		return initParams;
-	}
-
-	public String getValidatorClass() {
-		return validatorClass;
-	}
-
-	public void setInitParams(List initParams) {
-		this.initParams = initParams;
-	}
-
-	public void setValidatorClass(String validatorClass) {
-		this.validatorClass = validatorClass;
-	}
-
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(super.toString());
-		buffer.append("\n\t validator class:" + StringUtils.escape(getValidatorClass())); //$NON-NLS-1$
-		buffer.append("\n\t init-parms:"); //$NON-NLS-1$
-		for (int i = 0; i < getInitParams().size(); i++) {
-			buffer.append("\n" + StringUtils.replace(getInitParams().get(i).toString(), "\n", "\n\t\t")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-		return buffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDVariableImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDVariableImpl.java
deleted file mode 100644
index ff7b75c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDVariableImpl.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDVariable;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-
-
-public class TLDVariableImpl implements TLDVariable {
-	// optional - defaults to true
-	private boolean declare = true;
-
-	private String fDescription;
-	// required
-	private String nameFromAttribute;
-	// required
-	private String nameGiven;
-	// optional - defaults to NESTED
-	private String scope = JSP12TLDNames.VARIABLE_SCOPE_NESTED;
-	// required - defaults to a String
-	private String variableClass = "java.lang.String"; //$NON-NLS-1$
-
-	private String fAlias;
-
-	public boolean getDeclare() {
-		return declare;
-	}
-
-	/**
-	 * @return Returns the description.
-	 */
-	public String getDescription() {
-		return fDescription;
-	}
-
-	public String getNameFromAttribute() {
-		return nameFromAttribute;
-	}
-
-	public String getNameGiven() {
-		return nameGiven;
-	}
-
-	public String getScope() {
-		return scope;
-	}
-
-	public String getVariableClass() {
-		return variableClass;
-	}
-
-	public void setDeclare(boolean declare) {
-		this.declare = declare;
-	}
-
-	public void setDeclareString(String decl) {
-		if (decl != null) {
-			setDeclare(decl.equals(JSP12TLDNames.TRUE) || decl.equals(JSP12TLDNames.YES));
-		}
-	}
-
-	/**
-	 * @param description
-	 *            The description to set.
-	 */
-	public void setDescription(String description) {
-		fDescription = description;
-	}
-
-	public void setNameFromAttribute(String nameFromAttribute) {
-		this.nameFromAttribute = nameFromAttribute;
-	}
-
-	public void setNameGiven(String nameGiven) {
-		this.nameGiven = nameGiven;
-	}
-
-	public void setScope(String scope) {
-		this.scope = scope;
-	}
-
-	public void setVariableClass(String variableClass) {
-		this.variableClass = variableClass;
-	}
-
-	public String toString() {
-		StringBuffer buffer = new StringBuffer();
-		buffer.append(super.toString());
-		buffer.append("\n\t name given:" + StringUtils.escape(getNameGiven())); //$NON-NLS-1$
-		buffer.append("\n\t name from attribute:" + StringUtils.escape(getNameFromAttribute())); //$NON-NLS-1$
-		// Boolean.toString(boolean) is introduced in JDK 1.4
-		// buffer.append("\n\t declare:" +
-		// StringUtils.escape(Boolean.toString(getDeclare())));
-		buffer.append("\n\t declare:" + StringUtils.toString(getDeclare())); //$NON-NLS-1$
-		buffer.append("\n\t scope:" + StringUtils.escape(getScope())); //$NON-NLS-1$
-		buffer.append("\n\t variable class:" + StringUtils.escape(getVariableClass())); //$NON-NLS-1$
-		return buffer.toString();
-	}
-
-	public String getAlias() {
-		return fAlias;
-	}
-
-	public void setAlias(String alias) {
-		fAlias = alias;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TaglibTracker.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TaglibTracker.java
deleted file mode 100644
index a8351aa..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TaglibTracker.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
-
-
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.CMDocumentWrapperImpl;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocumentTracker;
-
-/**
- * TaglibTracker class
- */
-public class TaglibTracker extends CMDocumentWrapperImpl implements CMDocumentTracker {
-
-	private IStructuredDocumentRegion fStructuredDocumentRegion;
-
-	public TaglibTracker(String newURI, String newPrefix, CMDocument tld, IStructuredDocumentRegion aStructuredDocumentRegion) {
-		super(newURI, newPrefix, tld);
-		fStructuredDocumentRegion = aStructuredDocumentRegion;
-	}
-
-	public IStructuredDocumentRegion getStructuredDocumentRegion() {
-		return fStructuredDocumentRegion;
-	}
-
-	public String toString() {
-		if (getStructuredDocumentRegion() != null)
-			return getPrefix() + "@" + getStructuredDocumentRegion().getStartOffset(); //$NON-NLS-1$
-		return super.toString();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP11TLDNames.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP11TLDNames.java
deleted file mode 100644
index c24959a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP11TLDNames.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*nlsXXX*/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-public interface JSP11TLDNames {
-
-	String TAGLIB = "taglib"; //$NON-NLS-1$
-
-	String CONTENT_JSP = "JSP"; //$NON-NLS-1$
-	String CONTENT_EMPTY = "empty"; //$NON-NLS-1$
-	String CONTENT_TAGDEPENDENT = "tagdependent"; //$NON-NLS-1$
-
-	String TAG = "tag"; //$NON-NLS-1$
-	String JSPVERSION = "jspversion"; //$NON-NLS-1$
-	String TLIBVERSION = "tlibversion"; //$NON-NLS-1$
-	String SHORTNAME = "shortname"; //$NON-NLS-1$
-	String URI = "uri"; //$NON-NLS-1$
-	String URN = "urn"; //$NON-NLS-1$
-	String INFO = "info"; //$NON-NLS-1$
-
-	String NAME = "name"; //$NON-NLS-1$
-	String TEICLASS = "teiclass"; //$NON-NLS-1$
-	String TAGCLASS = "tagclass"; //$NON-NLS-1$
-	String BODYCONTENT = "bodycontent"; //$NON-NLS-1$
-	String ATTRIBUTE = "attribute"; //$NON-NLS-1$
-
-	String ID = "id"; //$NON-NLS-1$
-	String REQUIRED = "required"; //$NON-NLS-1$
-	String RTEXPRVALUE = "rtexprvalue"; //$NON-NLS-1$
-
-	String PREFIX = "prefix"; //$NON-NLS-1$
-
-	String INCLUDE = "include"; //$NON-NLS-1$
-	String FILE = "file"; //$NON-NLS-1$
-
-	String TRUE = "true"; //$NON-NLS-1$
-	String FALSE = "false"; //$NON-NLS-1$
-	String YES = "yes"; //$NON-NLS-1$
-	String NO = "no"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP12TLDNames.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP12TLDNames.java
deleted file mode 100644
index 0ab3124..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP12TLDNames.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*nlsXXX*/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-public interface JSP12TLDNames {
-
-	String TAGLIB = JSP11TLDNames.TAGLIB;
-
-	String CONTENT_JSP = JSP11TLDNames.CONTENT_JSP;
-	String CONTENT_EMPTY = JSP11TLDNames.CONTENT_EMPTY;
-	String CONTENT_TAGDEPENDENT = JSP11TLDNames.CONTENT_TAGDEPENDENT;
-
-	String TAG = JSP11TLDNames.TAG;
-	String JSP_VERSION = "jsp-version"; //$NON-NLS-1$
-	String TLIB_VERSION = "tlib-version"; //$NON-NLS-1$
-	String SHORT_NAME = "short-name"; //$NON-NLS-1$
-	String URI = JSP11TLDNames.URI;
-	String URN = JSP11TLDNames.URN;
-
-	String NAME = JSP11TLDNames.NAME;
-	String TEI_CLASS = "tei-class"; //$NON-NLS-1$
-	String TAG_CLASS = "tag-class"; //$NON-NLS-1$
-	String BODY_CONTENT = "body-content"; //$NON-NLS-1$
-	String ATTRIBUTE = JSP11TLDNames.ATTRIBUTE;
-
-	String ID = JSP11TLDNames.ID;
-	String REQUIRED = JSP11TLDNames.REQUIRED;
-	String RTEXPRVALUE = JSP11TLDNames.RTEXPRVALUE;
-
-	String PREFIX = JSP11TLDNames.PREFIX;
-
-	String INCLUDE = JSP11TLDNames.INCLUDE;
-	String FILE = JSP11TLDNames.FILE;
-
-	String TRUE = JSP11TLDNames.TRUE;
-	String FALSE = JSP11TLDNames.FALSE;
-	String YES = JSP11TLDNames.YES;
-	String NO = JSP11TLDNames.NO;
-
-	/*
-	 * @see Eclipse JSP 1.2
-	 */
-	String DESCRIPTION = "description"; //$NON-NLS-1$
-	String DISPLAY_NAME = "display-name"; //$NON-NLS-1$
-	String SMALL_ICON = "small-icon"; //$NON-NLS-1$
-	String LARGE_ICON = "large-icon"; //$NON-NLS-1$
-
-
-	String VALIDATOR = "validator"; //$NON-NLS-1$
-	String VALIDATOR_CLASS = "validator-class"; //$NON-NLS-1$
-	String VALIDATOR_INIT_PARAM = "init-param"; //$NON-NLS-1$
-	String VALIDATOR_PARAM_NAME = "param-name"; //$NON-NLS-1$
-	String VALIDATOR_PARAM_VALUE = "param-value"; //$NON-NLS-1$
-
-
-	String LISTENER = "listener"; //$NON-NLS-1$
-	String LISTENER_CLASS = "listener-class"; //$NON-NLS-1$
-
-	String VARIABLE = "variable"; //$NON-NLS-1$
-	String VARIABLE_NAME_GIVEN = "name-given"; //$NON-NLS-1$
-	String VARIABLE_NAME_FROM_ATTRIBUTE = "name-from-attribute"; //$NON-NLS-1$
-	String VARIABLE_CLASS = "variable-class"; //$NON-NLS-1$
-	String VARIABLE_DECLARE = "declare"; //$NON-NLS-1$
-	String VARIABLE_SCOPE = "scope"; //$NON-NLS-1$
-	String VARIABLE_SCOPE_NESTED = "NESTED"; //$NON-NLS-1$
-	String VARIABLE_SCOPE_AT_BEGIN = "AT_BEGIN"; //$NON-NLS-1$
-	String VARIABLE_SCOPE_AT_END = "AT_END"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP20TLDNames.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP20TLDNames.java
deleted file mode 100644
index b52ae61..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/JSP20TLDNames.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-/* nlsXXX */
-public interface JSP20TLDNames extends JSP12TLDNames {
-	String CONTENT_SCRIPTLESS = "scriptless"; //$NON-NLS-1$
-	String EXAMPLE = "example"; //$NON-NLS-1$
-	String FRAGMENT = "fragment"; //$NON-NLS-1$
-	String FUNCTION = "function"; //$NON-NLS-1$
-	String FUNCTION_CLASS = "function-class"; //$NON-NLS-1$
-	String FUNCTION_EXTENSION = "function-extension"; //$NON-NLS-1$
-	String FUNCTION_SIGNATURE = "function-signature"; //$NON-NLS-1$
-	String ICON = "icon"; //$NON-NLS-1$
-	String PATH = "path"; //$NON-NLS-1$
-	String TAG_EXTENSION = "tag-extension"; //$NON-NLS-1$
-	String TAG_FILE = "tag-file"; //$NON-NLS-1$
-
-	String TAGDIR = "tagdir"; //$NON-NLS-1$
-
-	String TAGLIB_EXTENSION = "taglib-extension"; //$NON-NLS-1$
-
-	String DYNAMIC_ATTRIBUTES = "dynamic-attributes"; //$NON-NLS-1$
-	String SCRIPTING_LANGUAGE = "language"; //$NON-NLS-1$
-	String IMPORT = "import"; //$NON-NLS-1$
-	String IS_EL_IGNORED = "isELIgnored"; //$NON-NLS-1$
-	String PAGE_ENCODING = "pageEncoding"; //$NON-NLS-1$
-	String TYPE = "type"; //$NON-NLS-1$
-	String VARIABLE_ALIAS = "alias"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDAttributeDeclaration.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDAttributeDeclaration.java
deleted file mode 100644
index 3f57eeb..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDAttributeDeclaration.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-
-/**
- * Represents an attribute definition from a TLD
- */
-public interface TLDAttributeDeclaration extends CMAttributeDeclaration {
-
-	/**
-	 * a description of the attribute
-	 * @return String
-	 * @see  JSP 2.0
-	 */
-	String getDescription();
-	
-	/**
-	 * the attribute's name
-	 * @see  JSP 1.1
-	 */
-	String getId();
-
-	CMDocument getOwnerDocument();
-
-	/**
-	 * whether the attribute's value may be dynamically calculated at runtime by an expression
-	 * @see  JSP 1.1
-	 */
-	String getRtexprvalue();
-
-	/**
-	 * the type of the attribute's value
-	 * @see  JSP 1.2
-	 */
-	String getType();
-
-	/**
-	 * whether this attribute is a fragment
-	 * 
-	 * @return boolean
-	 */
-	boolean isFragment();
-	
-	/**
-	 * if the attribute is required or optional
-	 * @see  JSP 1.1
-	 */
-	boolean isRequired();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDDocument.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDDocument.java
deleted file mode 100644
index 81351e5..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDDocument.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-import java.util.List;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-
-public interface TLDDocument extends CMDocument {
-
-	String CM_KIND = "Content Model Kind"; //$NON-NLS-1$
-	String JSP_TLD = "JSP Tag Library Descriptor"; //$NON-NLS-1$
-
-	/**
-	 * @see  JSP 2.0
-	 * 
-	 * @return
-	 */
-	String getBaseLocation();
-	
-	/**
-	 * @return String - The contents of the "description" element of a JSP 1.2 tag library descriptor; a simple string describing the "use" of this taglib, should be user discernable.
-	 * @see  JSP 1.2
-	 */
-	String getDescription();
-
-	/**
-	 * @return String - The contents of the "display-name" element of a JSP 1.2 tag library descriptor; it is a short name that is intended to be displayed by tools
-	 * @see  JSP 1.2
-	 */
-	String getDisplayName();
-
-	/**
-	 * @return List - A list of extension elements describing the tag library
-	 * @see  JSP 2.0
-	 */
-	List getExtensions();
-	
-	/**
-	 * @return List - A list of TLDFunctions describing the declared functions
-	 * @see  JSP 2.0
-	 */
-	List getFunctions();
-	
-	/**
-	 * @return String - The contents of the "info" element of a JSP 1.1 tag library descriptor; a simple string describing the "use" of this taglib, should be user discernable.
-	 * @see  JSP 1.1
-	 */
-	String getInfo();
-
-	/**
-	 * @return String - The version of JSP the tag library depends upon
-	 * @see  JSP 1.1
-	 */
-	String getJspversion();
-
-	/**
-	 * @return String - The contents of the "large-icon" element of a JSP 1.2 tag library descriptor; optional large-icon that can be used by tools
-	 * @see  JSP 1.2
-	 */
-	String getLargeIcon();
-
-	/**
-	 * @see  JSP 1.2
-	 * @return List - a List of TLDListeners
-	 */
-	List getListeners();
-
-	/**
-	 * @return String - A simple default short name that could be used by a JSP authoring tool to create names with a mnemonic value; for example, it may be used as the preferred prefix value in taglib directives
-	 * @see  JSP 1.1
-	 */
-	String getShortname();
-
-	/**
-	 * @return String - The contents of the "small-icon" element of a JSP 1.2 tag library descriptor; optional small-icon that can be used by tools
-	 * @see  JSP 1.2
-	 */
-	String getSmallIcon();
-
-	/**
-	 * @return String - The version of the tag library (it's implementation)
-	 * @see  JSP 1.1
-	 */
-	String getTlibversion();
-
-	/**
-	 * @return String - the URI declared within the descriptor
-	 * @see  JSP 1.1
-	 */
-	String getUri();
-
-	/**
-	 * @see  JSP 1.2
-	 */
-	TLDValidator getValidator();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDElementDeclaration.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDElementDeclaration.java
deleted file mode 100644
index 1057164..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDElementDeclaration.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-import java.util.List;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-
-public interface TLDElementDeclaration extends CMElementDeclaration {
-	String TAG_SOURCE = "Tag Definition Source"; //$NON-NLS-1$
-	String SOURCE_JSP_TLD = "JSP Tag Library Descriptor"; //$NON-NLS-1$
-	String SOURCE_TAG_FILE = "JSP Tag 2.0 File"; //$NON-NLS-1$
-
-	/**
-	 * The body content type
-	 * 
-	 * @see JSP 1.1
-	 */
-	String getBodycontent();
-
-	/**
-	 * Optional tag-specific information
-	 * 
-	 * @see JSP 1.2
-	 */
-	String getDescription();
-
-	/**
-	 * A short name that is intended to be displayed by tools
-	 * 
-	 * @see JSP 1.2
-	 */
-	String getDisplayName();
-
-	/**
-	 * Optional informal description of an example of a use of this tag
-	 * 
-	 * @see JSP 2.0
-	 */
-	String getExample();
-
-	/**
-	 * Zero or more extensions that provide extra information about this tag,
-	 * for tool consumption
-	 * 
-	 * @see JSP 2.0
-	 */
-	List getExtensions();
-
-	/**
-	 * Optional tag-specific information
-	 * 
-	 * @see JSP 1.1
-	 */
-	String getInfo();
-
-	/**
-	 * Name of an optional large icon that can be used by tools
-	 * 
-	 * @see JSP 1.2
-	 */
-	String getLargeIcon();
-
-	CMDocument getOwnerDocument();
-
-	/**
-	 * Where to find the .tag file implementing this action, relative to the
-	 * root of the web application or the root of the JAR file for a tag
-	 * library packaged in a JAR. This must begin with /WEB-INF/tags if the
-	 * .tag file resides in the WAR, or /META-INF/tags if the .tag file
-	 * resides in a JAR.
-	 * 
-	 * 
-	 * @return the path to the .tag(x) file as defined in the .tld file, null
-	 *         if internal to the .tld
-	 * @see JSP 2.0
-	 */
-	String getPath();
-
-	/**
-	 * Name of an optional small icon that can be used by tools
-	 * 
-	 * @see JSP 1.2
-	 */
-	String getSmallIcon();
-
-	/**
-	 * The name of the tag handler class implementing
-	 * javax.servlet.jsp.tagext.Tag
-	 * 
-	 * @see JSP 1.1
-	 */
-	String getTagclass();
-
-	/**
-	 * The name of an optional subclass of
-	 * javax.servlet.jsp.tagext.TagExtraInfo
-	 * 
-	 * @see JSP 1.1
-	 */
-	String getTeiclass();
-
-	/**
-	 * @see JSP 1.2
-	 * @return List of TLDVariables
-	 */
-	List getVariables();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDFunction.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDFunction.java
deleted file mode 100644
index a43e963..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDFunction.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-import java.util.List;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-
-public interface TLDFunction {
-
-	String getClassName();
-	
-	String getDescription();
-
-	String getDisplayName();
-
-	String getExample();
-
-	List getExtensions();
-
-	String getIcon();
-
-	String getName();
-
-	CMDocument getOwnerDocument();
-
-	String getSignature();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDInitParam.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDInitParam.java
deleted file mode 100644
index fed09aa..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDInitParam.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-
-/**
- * A name/value pair as an initialization param along with a description
- * @see JSP 1.2
- */
-public interface TLDInitParam {
-	String getDescription();
-
-	/**
-	 * The param-name element contains the name of a parameter.
-	 */
-	String getName();
-
-	/**
-	 * The param-value element contains the name of a parameter.
-	 */
-	String getValue();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDListener.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDListener.java
deleted file mode 100644
index 8d6f0e5..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDListener.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-
-/**
- * Defines an optional event listener object to be instantiated and registered automatically
- * @see JSP 1.2
- */
-public interface TLDListener {
-	String getListenerClass();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDValidator.java
deleted file mode 100644
index 09ee730..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDValidator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-import java.util.List;
-
-
-/**
- * Defines an optional validator that can be used to validate the conformance of a JSP page to using this tag library
- * @see JSP 1.2
- */
-public interface TLDValidator {
-	/**
-	 * @return List - a List of TLDInitParams
-	 */
-	List getInitParams();
-
-	String getValidatorClass();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDVariable.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDVariable.java
deleted file mode 100644
index 611382c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDVariable.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;
-
-/**
- * Information on the scripting variables defined by this tag.
- * 
- * @see JSP 1.2
- */
-public interface TLDVariable {
-
-	/**
-	 * Whether the variable is declared or not, true is the default.
-	 */
-	boolean getDeclare();
-
-	/**
-	 * @returnthe the description for this variable
-	 */
-	String getDescription();
-
-	/**
-	 * The name of an attribute whose (translation time) value will give the
-	 * name of the variable, or null of the name is not to be obtained this
-	 * way.
-	 */
-	String getNameFromAttribute();
-
-	/**
-	 * The variable name given as a constant, or null of the name is not
-	 * specified.
-	 */
-	String getNameGiven();
-
-	/**
-	 * The scope of the scripting variable defined.
-	 */
-	String getScope();
-
-	/**
-	 * Name of the class of the variable, java.lang.String if null
-	 */
-	String getVariableClass();
-
-	/**
-	 * A locally scoped attribute to hold the value of this variable
-	 */
-	String getAlias();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentProperties.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentProperties.java
deleted file mode 100644
index 2ece904..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentProperties.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentproperties;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-/**
- * Properties constants used by JSP Fragments. Clients should only read and
- * modify the JSP Fragment properties programmatically using this class.
- * 
- * @since 1.1
- */
-public class JSPFContentProperties {
-	static final String JSPCORE_ID = JSPCorePlugin.getDefault().getBundle().getSymbolicName();
-	private static final String PROJECT_KEY = "<project>"; //$NON-NLS-1$
-
-	/**
-	 * A named key that controls the default language for JSP Fragments
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 * 
-	 * @since 1.1
-	 */
-	public static final String JSPLANGUAGE = "jsp-language"; //$NON-NLS-1$
-	/**
-	 * A named key that controls the default content type for JSP Fragments
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 * 
-	 * @since 1.1
-	 */
-	public static final String JSPCONTENTTYPE = "jsp-content-type"; //$NON-NLS-1$
-	/**
-	 * Indicates if JSP fragments should be compiled/validated. JSP fragments
-	 * will be validated when true.
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 * 
-	 * @since 1.1
-	 */
-	public static final String VALIDATE_FRAGMENTS = "validateFragments";//$NON-NLS-1$
-
-	/**
-	 * Generates a preference key based on resourcePath
-	 * 
-	 * @param resourcePath
-	 *            the path the key will be based off of
-	 * @return preference key based on resourcePath (basically the
-	 *         resourcePath without the filename); PROJECT_KEY if resourcePath
-	 *         is null
-	 */
-	static String getKeyFor(IPath resourcePath) {
-		String key = PROJECT_KEY;
-		if (resourcePath != null && resourcePath.segmentCount() > 1) {
-			key = resourcePath.removeFirstSegments(1).toString();
-		}
-		return key;
-	}
-
-	/**
-	 * Get the preferences node associated with the given project scope and
-	 * preference key (subNode) If create is true, the preference node will be
-	 * created if one does not already exist
-	 * 
-	 * @param project
-	 *            the project the preference node is under
-	 * @param preferenceKey
-	 *            the subnode/category the preference node is located in
-	 * @param create
-	 *            if true, a preference node will be created if one does not
-	 *            already exist
-	 * @return Preferences associated with the given project scope and
-	 *         preference key. null if one could not be found and create is
-	 *         false
-	 */
-	static Preferences getPreferences(IProject project, String preferenceKey, boolean create) {
-		if (create)
-			// create all nodes down to the one we are interested in
-			return new ProjectScope(project).getNode(JSPCORE_ID).node(preferenceKey);
-		// be careful looking up for our node so not to create any nodes as
-		// side effect
-		Preferences node = Platform.getPreferencesService().getRootNode().node(ProjectScope.SCOPE);
-		try {
-			// TODO once bug 90500 is fixed, should be as simple as this:
-			// String path = project.getName() + IPath.SEPARATOR +
-			// ResourcesPlugin.PI_RESOURCES + IPath.SEPARATOR +
-			// ENCODING_PREF_NODE;
-			// return node.nodeExists(path) ? node.node(path) : null;
-			// for now, take the long way
-			if (!node.nodeExists(project.getName()))
-				return null;
-			node = node.node(project.getName());
-			if (!node.nodeExists(JSPCORE_ID))
-				return null;
-			node = node.node(JSPCORE_ID);
-			if (!node.nodeExists(preferenceKey))
-				return null;
-			return node.node(preferenceKey);
-		}
-		catch (BackingStoreException e) {
-			// nodeExists failed
-			Logger.log(Logger.WARNING_DEBUG, "Could not retrieve preference node", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the value for the given key in the given context.
-	 * 
-	 * @param key
-	 *            The property key
-	 * @param resource
-	 *            The current context or <code>null</code> if no context is
-	 *            available and the workspace setting should be taken. Note
-	 *            that passing <code>null</code> should be avoided.
-	 * @param recurse
-	 *            whether the parent should be queried till property is found
-	 * @return Returns the current value for the key.
-	 * @since 1.1
-	 */
-	public static String getProperty(String key, IResource resource, boolean recurse) {
-		String val = null;
-		if (resource != null) {
-			IProject project = resource.getProject();
-			if (project != null) {
-				Preferences preferences = getPreferences(project, key, false);
-				if (preferences != null) {
-					val = internalGetProperty(resource, recurse, preferences);
-				}
-			}
-		}
-		// no preferences found - for performance reasons,
-		// short-circuit
-		// lookup by falling back to workspace's default
-		// setting
-		if (val == null && recurse)
-			val = getWorkbenchPreference(key);
-		return val;
-	}
-
-	private static String getWorkbenchPreference(String key) {
-		return Platform.getPreferencesService().getString(JSPCORE_ID, key, null, null);
-	}
-
-	private static String internalGetProperty(IResource resource, boolean recurse, Preferences preferences) {
-		String value = preferences.get(getKeyFor(resource.getFullPath()), null);
-		if (value == null && resource != resource.getProject() && recurse) {
-			value = preferences.get(getKeyFor(null), null);
-		}
-
-		return value;
-	}
-
-	/**
-	 * Sets the value for the given key in the given context.
-	 * 
-	 * @param key
-	 *            The property key
-	 * @param resource
-	 *            The current context. Note context cannot be
-	 *            <code>null</code>.
-	 * @param value
-	 *            The value to set for the key. If value is <code>null</code>
-	 *            the key is removed from properties.
-	 * @since 1.1
-	 */
-	public static void setProperty(String key, IResource resource, String value) throws CoreException {
-		if (resource != null) {
-			IProject project = resource.getProject();
-			if (project != null) {
-				Preferences preferences = getPreferences(project, key, true);
-				if (value == null || value.trim().length() == 0)
-					preferences.remove(getKeyFor(resource.getFullPath()));
-				else
-					preferences.put(getKeyFor(resource.getFullPath()), value);
-				try {
-					// save changes
-					preferences.flush();
-				}
-				catch (BackingStoreException e) {
-					throw new CoreException(new Status(IStatus.ERROR, JSPCORE_ID, IStatus.ERROR, "Unable to set property", e)); //$NON-NLS-1$
-				}
-			}
-		}
-		// Workbench preference may not be needed so leave out for now
-		// just set a preference in the instance scope
-		// if (!preferenceFound) {
-		// setWorkbenchPreference(key);
-		// }
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentPropertiesManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentPropertiesManager.java
deleted file mode 100644
index d3cd4cf..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentPropertiesManager.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contentproperties;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceStatus;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-public class JSPFContentPropertiesManager {
-	public JSPFContentPropertiesManager() {
-		super();
-		fResourceChangeListener = new ResourceChangeListener();
-		fJob = new ContentPropertiesManagerJob();
-	}
-
-	private static JSPFContentPropertiesManager _instance = null;
-	private IResourceChangeListener fResourceChangeListener;
-	ContentPropertiesManagerJob fJob;
-
-	/**
-	 * This job implementation is used to allow the resource change listener
-	 * to schedule operations that need to modify the workspace.
-	 */
-	private class ContentPropertiesManagerJob extends Job {
-		private static final int PROPERTIES_UPDATE_DELAY = 500;
-		private List asyncChanges = new ArrayList();
-
-		public ContentPropertiesManagerJob() {
-			super(JSPCoreMessages.JSPFContentPropertiesManager_Updating);
-			setSystem(true);
-			setPriority(Job.INTERACTIVE);
-		}
-
-		public void addChanges(Set newChanges) {
-			if (newChanges.isEmpty())
-				return;
-			synchronized (asyncChanges) {
-				asyncChanges.addAll(newChanges);
-				asyncChanges.notify();
-			}
-			schedule(PROPERTIES_UPDATE_DELAY);
-		}
-
-		public IProject getNextChange() {
-			synchronized (asyncChanges) {
-				return asyncChanges.isEmpty() ? null : (IProject) asyncChanges.remove(asyncChanges.size() - 1);
-			}
-		}
-
-		protected IStatus run(IProgressMonitor monitor) {
-			MultiStatus result = new MultiStatus(JSPFContentProperties.JSPCORE_ID, IResourceStatus.FAILED_SETTING_CHARSET, JSPCoreMessages.JSPFContentPropertiesManager_Updating, null);
-			monitor = monitor == null ? new NullProgressMonitor() : monitor;
-			try {
-				monitor.beginTask(JSPCoreMessages.JSPFContentPropertiesManager_Updating, asyncChanges.size());
-				try {
-					IProject next;
-					while ((next = getNextChange()) != null) {
-						// just exit if the system is shutting down or has
-						// been shut down
-						// it is too late to change the workspace at this
-						// point anyway
-						if (Platform.getBundle("org.eclipse.osgi").getState() != Bundle.ACTIVE) //$NON-NLS-1$
-							return Status.OK_STATUS;
-						try {
-							// save the preferences nodes
-							if (next.isAccessible()) {
-								// save content type preferences
-								Preferences projectPrefs = JSPFContentProperties.getPreferences(next, JSPFContentProperties.JSPCONTENTTYPE, false);
-								if (projectPrefs != null)
-									projectPrefs.flush();
-								// save language preferences
-								projectPrefs = JSPFContentProperties.getPreferences(next, JSPFContentProperties.JSPLANGUAGE, false);
-								if (projectPrefs != null)
-									projectPrefs.flush();
-
-							}
-						}
-						catch (BackingStoreException e) {
-							// we got an error saving
-							String detailMessage = NLS.bind(JSPCoreMessages.JSPFContentPropertiesManager_Problems_Updating, next.getFullPath());
-							result.add(new Status(1 << (IResourceStatus.FAILED_SETTING_CHARSET % 100 / 33), ResourcesPlugin.PI_RESOURCES, IResourceStatus.FAILED_SETTING_CHARSET, detailMessage, e));
-						}
-					}
-					monitor.worked(1);
-				}
-				catch (OperationCanceledException e) {
-					throw e;
-				}
-			}
-			finally {
-				monitor.done();
-			}
-			return result;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.jobs.Job#shouldRun()
-		 */
-		public boolean shouldRun() {
-			synchronized (asyncChanges) {
-				return !asyncChanges.isEmpty();
-			}
-		}
-	}
-
-	class ResourceChangeListener implements IResourceChangeListener {
-		private void processEntryChanges(IResourceDelta projectDelta, Set projectsToSave) {
-			// check each resource with jsp fragment setting to see if it has
-			// been moved/deleted
-			boolean resourceChanges = false;
-			boolean resourceChanges2 = false;
-
-			// project affected
-			IProject currentProject = (IProject) projectDelta.getResource();
-
-			resourceChanges = processPreferences(currentProject, JSPFContentProperties.JSPCONTENTTYPE, projectDelta, projectsToSave);
-			resourceChanges2 = processPreferences(currentProject, JSPFContentProperties.JSPLANGUAGE, projectDelta, projectsToSave);
-
-			// if there was a preference key change, need to save preferences
-			if (resourceChanges || resourceChanges2)
-				projectsToSave.add(currentProject);
-		}
-
-		/**
-		 * Goes through all the resource-dependent preferences associated with
-		 * currentProject & key and updates the preference keys if needed
-		 * based on projectDelta
-		 * 
-		 * @param currentProject
-		 *            current project of the preferences to be looked at
-		 * @param key
-		 *            current key/subcategory of the preferences to be looked
-		 *            at
-		 * @param projectDelta
-		 *            the changes to process the preference keys against
-		 * @param projectsToSave
-		 *            the projects that need to be updated/saved
-		 * @return true if currentProject's preferences were modified
-		 */
-		private boolean processPreferences(IProject currentProject, String key, IResourceDelta projectDelta, Set projectsToSave) {
-			boolean resourceChanges = false;
-
-			// get the project-key preference node
-			Preferences projectPrefs = JSPFContentProperties.getPreferences(currentProject, key, false);
-			if (projectPrefs == null)
-				// no preferences for this project-key, just bail
-				return false;
-			String[] affectedResources;
-			try {
-				affectedResources = projectPrefs.keys();
-			}
-			catch (BackingStoreException e) {
-				// problems with the project scope... we gonna miss the
-				// changes (but will log)
-				Logger.log(Logger.WARNING_DEBUG, "Problem retreiving JSP Fragment preferences", e); //$NON-NLS-1$
-				return false;
-			}
-
-			// go through each preference key (which is really a file name)
-			for (int i = 0; i < affectedResources.length; i++) {
-				// see if preference key/file name was file that was changed
-				IResourceDelta memberDelta = projectDelta.findMember(new Path(affectedResources[i]));
-				// no changes for the given resource
-				if (memberDelta == null)
-					continue;
-				if (memberDelta.getKind() == IResourceDelta.REMOVED) {
-					resourceChanges = true;
-					// remove the setting for the original location
-					String currentValue = projectPrefs.get(affectedResources[i], null);
-					projectPrefs.remove(affectedResources[i]);
-					if ((memberDelta.getFlags() & IResourceDelta.MOVED_TO) != 0) {
-						// if moving, copy the setting for the new location
-						IProject targetProject = ResourcesPlugin.getWorkspace().getRoot().getProject(memberDelta.getMovedToPath().segment(0));
-						Preferences targetPrefs = JSPFContentProperties.getPreferences(targetProject, key, true);
-						targetPrefs.put(JSPFContentProperties.getKeyFor(memberDelta.getMovedToPath()), currentValue);
-						if (targetProject != currentProject)
-							projectsToSave.add(targetProject);
-					}
-				}
-			}
-			return resourceChanges;
-		}
-
-		/**
-		 * For any change to the encoding file or any resource with encoding
-		 * set, just discard the cache for the corresponding project.
-		 */
-		public void resourceChanged(IResourceChangeEvent event) {
-			IResourceDelta delta = event.getDelta();
-			if (delta == null)
-				return;
-			IResourceDelta[] projectDeltas = delta.getAffectedChildren();
-			// process each project in the delta
-			Set projectsToSave = new HashSet();
-			for (int i = 0; i < projectDeltas.length; i++)
-				// nothing to do if a project has been added/removed/moved
-				if (projectDeltas[i].getKind() == IResourceDelta.CHANGED && (projectDeltas[i].getFlags() & IResourceDelta.OPEN) == 0)
-					processEntryChanges(projectDeltas[i], projectsToSave);
-			fJob.addChanges(projectsToSave);
-		}
-	}
-
-	public synchronized static void startup() {
-		_instance = new JSPFContentPropertiesManager();
-		ResourcesPlugin.getWorkspace().addResourceChangeListener(_instance.fResourceChangeListener, IResourceChangeEvent.POST_CHANGE);
-	}
-
-	public synchronized static void shutdown() {
-		ResourcesPlugin.getWorkspace().removeResourceChangeListener(_instance.fResourceChangeListener);
-		_instance = null;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/BooleanStack.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/BooleanStack.java
deleted file mode 100644
index 3889819..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/BooleanStack.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-
-/*
- * 
- * A non-resizable class implementing the behavior of java.util.Stack, but
- * directly for the <code> boolean </code> primitive.
- */
-import java.util.EmptyStackException;
-
-public class BooleanStack {
-	private boolean[] list = null;
-
-	private int size = 0;
-	
-	/**
-	 * This field is not meant to be modified by anyone! In a typical document, tags should not
-	 * be embedded to such a depth that it would cause a stack overflow. Three tests in JSPTokenizerTest (test144807_*)
-	 * create embedded tags up to a depth of 400. Because of this test, we allow for modification of the maxDepth as a
-	 * static field before the JSPTokenizer is created.
-	 * 
-	 * Changing this value can impact the tokenizing of a JSP file!
-	 */
-	public static int maxDepth = 100;
-
-	public BooleanStack() {
-		this(maxDepth);
-	}
-
-	public BooleanStack(int maxdepth) {
-		super();
-		list = new boolean[maxdepth];
-		initialize();
-	}
-
-	public void clear() {
-		initialize();
-	}
-
-	public boolean empty() {
-		return size == 0;
-	}
-
-	public boolean get(int slot) {
-		return list[slot];
-	}
-
-	private void initialize() {
-		size = 0;
-	}
-
-	/**
-	 * Returns the boolean at the top of the stack without removing it
-	 * 
-	 * @return boolean at the top of this stack.
-	 * @exception EmptyStackException
-	 *                when empty.
-	 */
-	public boolean peek() {
-		if (size == 0)
-			throw new EmptyStackException();
-		return list[size - 1];
-	}
-
-	/**
-	 * Removes and returns the boolean at the top of the stack
-	 * 
-	 * @return boolean at the top of this stack.
-	 * @exception EmptyStackException
-	 *                when empty.
-	 */
-	public boolean pop() {
-		boolean value = peek();
-		list[size - 1] = false;
-		size--;
-		return value;
-	}
-
-	/**
-	 * Pushes an item onto the top of this stack.
-	 * 
-	 * @param newValue -
-	 *            the boolean to be pushed onto this stack.
-	 * @return the <code>newValue</code> argument.
-	 */
-	public boolean push(boolean newValue) {
-		if (size == list.length) {
-			throw new StackOverflowError();
-		}
-		list[size++] = newValue;
-		return newValue;
-	}
-
-	public int size() {
-		return list.length;
-	}
-	
-	public static void setMaxDepth(int depth) {
-		
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ByteReader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ByteReader.java
deleted file mode 100644
index c91119e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ByteReader.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-
-import org.eclipse.wst.sse.core.internal.encoding.CodedIO;
-
-/**
- * This is an "adapter" class, simply to get in input stream to act like a
- * reader. We could not use InputStreamReader directly because its internal
- * buffers are not controllable, and it sometimes pulls too much out of input
- * stream (even when it wasn't needed for our purposes).
- * 
- * The use of this class is highly specialized and by not means meant to be
- * general purpose. Its use is restricted to those cases where the input
- * stream can be regarded as ascii just long enough to determine what the real
- * encoding should be.
- */
-
-public class ByteReader extends Reader {
-
-	
-	public static final int DEFAULT_BUFFER_SIZE = CodedIO.MAX_BUF_SIZE;
-
-	protected byte[] fBuffer;
-
-	protected InputStream fInputStream;
-
-	protected ByteReader() {
-		super();
-	}
-
-	public ByteReader(InputStream inputStream) {
-		this(inputStream, DEFAULT_BUFFER_SIZE);
-		if (!inputStream.markSupported()) {
-			throw new IllegalArgumentException("ByteReader is required to have a resettable stream"); //$NON-NLS-1$
-		}
-	}
-
-	public ByteReader(InputStream inputStream, int size) {
-		this.fInputStream = inputStream;
-		if (!inputStream.markSupported()) {
-			throw new IllegalArgumentException("ByteReader is required to have a resettable stream"); //$NON-NLS-1$
-		}
-		this.fBuffer = new byte[size];
-
-	}
-
-	public void close() throws IOException {
-		this.fInputStream.close();
-	}
-
-	public void mark(int readAheadLimit) {
-		this.fInputStream.mark(readAheadLimit);
-	}
-
-	public boolean markSupported() {
-		return true;
-	}
-
-	public int read() throws IOException {
-		int b0 = this.fInputStream.read();
-		return (b0 & 0x00FF);
-	}
-
-	public int read(char ch[], int offset, int length) throws IOException {
-		if (length > this.fBuffer.length) {
-			length = this.fBuffer.length;
-		}
-
-		int count = this.fInputStream.read(this.fBuffer, 0, length);
-
-		for (int i = 0; i < count; i++) {
-			int b0 = this.fBuffer[i];
-			// the 0x00FF is to "lose" the negative bits filled in the byte to
-			// int conversion
-			// (and which would be there if cast directly from byte to char).
-			char c0 = (char) (b0 & 0x00FF);
-			ch[offset + i] = c0;
-		}
-		return count;
-	}
-
-	public boolean ready() throws IOException {
-		return this.fInputStream.available() > 0;
-	}
-
-	public void reset() throws IOException {
-		this.fInputStream.reset();
-	}
-
-	public long skip(long n) throws IOException {
-		return this.fInputStream.skip(n);
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ContentDescriberForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ContentDescriberForJSP.java
deleted file mode 100644
index 47ec7b9..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/ContentDescriberForJSP.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004-2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.IContentDescriber;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.ITextContentDescriber;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.IContentDescriptionForJSP;
-import org.eclipse.wst.html.core.internal.provisional.contenttype.ContentTypeFamilyForHTML;
-import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
-import org.eclipse.wst.sse.core.internal.encoding.IContentDescriptionExtended;
-import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
-
-public final class ContentDescriberForJSP implements ITextContentDescriber {
-	private final static QualifiedName[] SUPPORTED_OPTIONS = {IContentDescription.CHARSET, IContentDescription.BYTE_ORDER_MARK, IContentDescriptionExtended.DETECTED_CHARSET, IContentDescriptionExtended.UNSUPPORTED_CHARSET, IContentDescriptionExtended.APPROPRIATE_DEFAULT, IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE, IContentDescriptionForJSP.LANGUAGE_ATTRIBUTE, IContentDescriptionForJSP.CONTENT_FAMILY_ATTRIBUTE};
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.content.IContentDescriber#describe(java.io.InputStream,
-	 *      org.eclipse.core.runtime.content.IContentDescription)
-	 */
-	public int describe(InputStream contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INVALID;
-
-		// if discription is null, we are just being asked to
-		// assess contents validity
-		if (description != null) {
-			result = calculateSupportedOptions(contents, description);
-		}
-		else {
-			result = determineValidity(contents);
-		}
-
-		return result;
-	}
-
-	private int determineValidity(InputStream contents) {
-		// There's little to prove, via contents, that
-		// a file is JSP, so always return interminant, and
-		// let filetypes decide.
-		return IContentDescriber.INDETERMINATE;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.content.ITextContentDescriber#describe(java.io.Reader,
-	 *      org.eclipse.core.runtime.content.IContentDescription)
-	 */
-	public int describe(Reader contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INVALID;
-
-		// if discription is null, we are just being asked to
-		// assess contents validity
-		if (description != null) {
-			result = calculateSupportedOptions(contents, description);
-		}
-		else {
-			result = determineValidity(contents);
-		}
-
-		return result;
-	}
-
-	private int determineValidity(Reader contents) {
-		// There's little to prove, via contents, that
-		// a file is JSP, so always return interminant, and
-		// let filetypes decide.
-		return IContentDescriber.INDETERMINATE;
-	}
-
-	public QualifiedName[] getSupportedOptions() {
-		return SUPPORTED_OPTIONS;
-	}
-
-	private int calculateSupportedOptions(InputStream contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INDETERMINATE;
-		if (isRelevent(description)) {
-			IResourceCharsetDetector detector = getDetector();
-			detector.set(contents);
-			handleCalculations(description, detector);
-			result = IContentDescriber.VALID;
-		}
-		return result;
-	}
-
-	/**
-	 * @param contents
-	 * @param description
-	 * @throws IOException
-	 */
-	private int calculateSupportedOptions(Reader contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INDETERMINATE;
-		if (isRelevent(description)) {
-			IResourceCharsetDetector detector = getDetector();
-			detector.set(contents);
-			handleCalculations(description, detector);
-			result = IContentDescriber.VALID;
-		}
-		return result;
-	}
-
-	private IResourceCharsetDetector getDetector() {
-		return new JSPResourceEncodingDetector();
-	}
-
-	private void handleCalculations(IContentDescription description, IResourceCharsetDetector detector) throws IOException {
-		// handle standard ones first, to be sure detector processes
-		handleStandardCalculations(description, detector);
-		// now do those specific for JSPs
-		// note: detector should always be of correct instance, but we'll
-		// check, for now.
-		if (detector instanceof JSPResourceEncodingDetector) {
-			JSPResourceEncodingDetector jspDetector = (JSPResourceEncodingDetector) detector;
-			String language = jspDetector.getLanguage();
-			if (language != null && language.length() > 0) {
-				description.setProperty(IContentDescriptionForJSP.LANGUAGE_ATTRIBUTE, language);
-			}
-			/*
-			 * content type is literally the content type that's in the page
-			 * directive
-			 */
-			String contentTypeAttribute = jspDetector.getContentType();
-			if (contentTypeAttribute != null && contentTypeAttribute.length() > 0) {
-				description.setProperty(IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE, contentTypeAttribute);
-			}
-			/*
-			 * content family is the general class of content, when its
-			 * different from what's defined by content type
-			 */
-			if (jspDetector.isXHTML() || jspDetector.isWML()) {
-				// ISSUE: long term this logic and value should be contributed by extension point
-				description.setProperty(IContentDescriptionForJSP.CONTENT_FAMILY_ATTRIBUTE, ContentTypeFamilyForHTML.HTML_FAMILY);
-			}
-
-
-		}
-	}
-
-	private void handleDetectedSpecialCase(IContentDescription description, Object detectedCharset, Object javaCharset) {
-		if (detectedCharset != null) {
-			// Once we detected a charset, we should set the property even
-			// though it's the same as javaCharset
-			// because there are clients that rely on this property to
-			// determine if the charset is actually detected in file or not.
-			description.setProperty(IContentDescriptionExtended.DETECTED_CHARSET, detectedCharset);
-		}
-	}
-
-	/**
-	 * @param description
-	 * @param detector
-	 * @throws IOException
-	 */
-	private void handleStandardCalculations(IContentDescription description, IResourceCharsetDetector detector) throws IOException {
-		// note: if we're asked for one, we set them all. I need to be sure if
-		// called
-		// mulitiple times (one for each, say) that we don't waste time
-		// processing same
-		// content again.
-		EncodingMemento encodingMemento = ((JSPResourceEncodingDetector) detector).getEncodingMemento();
-		// TODO: I need to verify to see if this BOM work is always done
-		// by text type.
-		Object detectedByteOrderMark = encodingMemento.getUnicodeBOM();
-		if (detectedByteOrderMark != null) {
-			Object existingByteOrderMark = description.getProperty(IContentDescription.BYTE_ORDER_MARK);
-			// not sure why would ever be different, so if is different, may
-			// need to "push" up into base.
-			if (!detectedByteOrderMark.equals(existingByteOrderMark))
-				description.setProperty(IContentDescription.BYTE_ORDER_MARK, detectedByteOrderMark);
-		}
-
-
-		if (!encodingMemento.isValid()) {
-			// note: after setting here, its the mere presence of
-			// IContentDescriptionExtended.UNSUPPORTED_CHARSET
-			// in the resource's description that can be used to determine if
-			// invalid
-			// in those cases, the "detected" property contains an
-			// "appropriate default" to use.
-			description.setProperty(IContentDescriptionExtended.UNSUPPORTED_CHARSET, encodingMemento.getInvalidEncoding());
-			description.setProperty(IContentDescriptionExtended.APPROPRIATE_DEFAULT, encodingMemento.getAppropriateDefault());
-		}
-
-		Object detectedCharset = encodingMemento.getDetectedCharsetName();
-		Object javaCharset = encodingMemento.getJavaCharsetName();
-
-		// we always include detected, if its different than java
-		handleDetectedSpecialCase(description, detectedCharset, javaCharset);
-
-		if (javaCharset != null) {
-			Object existingCharset = description.getProperty(IContentDescription.CHARSET);
-			if (javaCharset.equals(existingCharset)) {
-				handleDetectedSpecialCase(description, detectedCharset, javaCharset);
-			}
-			else {
-				// we may need to add what we found, but only need to add
-				// if different from the default.
-				Object defaultCharset = detector.getSpecDefaultEncoding();
-				if (defaultCharset != null) {
-					if (!defaultCharset.equals(javaCharset)) {
-						description.setProperty(IContentDescription.CHARSET, javaCharset);
-					}
-				}
-				else {
-					// assuming if there is no spec default, we always need to
-					// add, I'm assuming
-					description.setProperty(IContentDescription.CHARSET, javaCharset);
-				}
-			}
-		}
-
-	}
-
-	/**
-	 * @param description
-	 * @return
-	 */
-	private boolean isRelevent(IContentDescription description) {
-		boolean result = false;
-		if (description == null)
-			result = false;
-		else if (description.isRequested(IContentDescription.BYTE_ORDER_MARK))
-			result = true;
-		else if (description.isRequested(IContentDescription.CHARSET))
-			result = true;
-		else if (description.isRequested(IContentDescriptionExtended.APPROPRIATE_DEFAULT))
-			result = true;
-		else if (description.isRequested(IContentDescriptionExtended.DETECTED_CHARSET))
-			result = true;
-		else if (description.isRequested(IContentDescriptionExtended.UNSUPPORTED_CHARSET))
-			result = true;
-		else if (description.isRequested(IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE))
-			result = true;
-		else if (description.isRequested(IContentDescriptionForJSP.LANGUAGE_ATTRIBUTE))
-			result = true;
-		return result;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
deleted file mode 100644
index 098cbc3..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/DeploymentDescriptorPropertyCache.java
+++ /dev/null
@@ -1,892 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.StringReader;
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.util.CommonXML;
-import org.eclipse.jst.jsp.core.internal.util.FacetModuleCoreSupport;
-import org.eclipse.jst.jsp.core.internal.util.FileContentCache;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.EntityReference;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-/**
- * A cache fo property group information stored in web.xml files. Information
- * is not persisted.
- */
-public final class DeploymentDescriptorPropertyCache {
-	private static final PropertyGroup[] NO_PROPERTY_GROUPS = new PropertyGroup[0];
-
-	private static class DeploymentDescriptor {
-		PropertyGroup[] groups;
-		long modificationStamp;
-		Float version = new Float(defaultWebAppVersion);
-	}
-
-	/**
-	 * Representation of the JSP 2.0 property-group definitions from a servlet
-	 * deployment descriptor.
-	 */
-	public static final class PropertyGroup {
-		static PropertyGroup createFrom(IPath path, Node propertyGroupNode, int groupNumber) {
-			PropertyGroup group = new PropertyGroup(path, groupNumber);
-			Node propertyGroupID = propertyGroupNode.getAttributes().getNamedItem(ID);
-			if (propertyGroupID != null) {
-				group.setId(propertyGroupID.getNodeValue());
-			}
-			Node node = propertyGroupNode.getFirstChild();
-			while (node != null) {
-				if (node.getNodeType() == Node.ELEMENT_NODE) {
-					String name = node.getLocalName();
-					if (name == null) {
-						name = node.getNodeName();
-					}
-					if (IS_XML.equals(name)) {
-						group.setIsXML(getContainedText(node));
-					}
-					else if (EL_IGNORED.equals(name)) {
-						group.setElignored(getContainedText(node));
-					}
-					else if (INCLUDE_CODA.equals(name)) {
-						group.addCoda(getContainedText(node));
-					}
-					else if (INCLUDE_PRELUDE.equals(name)) {
-						group.addPrelude(getContainedText(node));
-					}
-					else if (SCRIPTING_INVALID.equals(name)) {
-						group.setScriptingInvalid(getContainedText(node));
-					}
-					else if (PAGE_ENCODING.equals(name)) {
-						group.setPageEncoding(getContainedText(node));
-					}
-					else if (URL_PATTERN.equals(name)) {
-						group.setUrlPattern(getContainedText(node));
-					}
-				}
-
-				node = node.getNextSibling();
-			}
-
-			return group;
-		}
-
-		private boolean el_ignored;
-
-		private String id;
-
-		private IPath[] include_coda = new IPath[0];
-
-		private IPath[] include_prelude = new IPath[0];
-		private boolean is_xml;
-		private StringMatcher matcher;
-		private String page_encoding;
-		private boolean scripting_invalid;
-		String url_pattern;
-		private IPath webxmlPath;
-
-		int number;
-
-		private PropertyGroup(IPath path, int number) {
-			super();
-			this.webxmlPath = path;
-			this.number = number;
-		}
-
-		private void addCoda(String containedText) {
-			if (containedText.length() > 0) {
-				IPath[] codas = new IPath[include_coda.length + 1];
-				System.arraycopy(include_coda, 0, codas, 0, include_coda.length);
-				codas[include_coda.length] = webxmlPath.removeLastSegments(2).append(containedText);
-				include_coda = codas;
-			}
-		}
-
-		private void addPrelude(String containedText) {
-			if (containedText.length() > 0) {
-				IPath[] preludes = new IPath[include_prelude.length + 1];
-				System.arraycopy(include_prelude, 0, preludes, 0, include_prelude.length);
-				preludes[include_prelude.length] = webxmlPath.removeLastSegments(2).append(containedText);
-				include_prelude = preludes;
-			}
-		}
-
-		public String getId() {
-			return id;
-		}
-
-		public IPath[] getIncludeCoda() {
-			return include_coda;
-		}
-
-		public IPath[] getIncludePrelude() {
-			return include_prelude;
-		}
-
-		public String getPageEncoding() {
-			return page_encoding;
-		}
-
-		public String getUrlPattern() {
-			return url_pattern;
-		}
-
-		public boolean isELignored() {
-			return el_ignored;
-		}
-
-		public boolean isIsXML() {
-			return is_xml;
-		}
-
-		public boolean isScriptingInvalid() {
-			return scripting_invalid;
-		}
-
-		boolean matches(String pattern, boolean optimistic) {
-			if (matcher == null)
-				return optimistic;
-			return matcher.match(pattern);
-		}
-
-		private void setElignored(String el_ignored) {
-			this.el_ignored = Boolean.valueOf(el_ignored).booleanValue();
-		}
-
-		private void setId(String id) {
-			this.id = id;
-		}
-
-		private void setIsXML(String is_xml) {
-			this.is_xml = Boolean.valueOf(is_xml).booleanValue();
-		}
-
-		private void setPageEncoding(String page_encoding) {
-			this.page_encoding = page_encoding;
-		}
-
-		private void setScriptingInvalid(String scripting_invalid) {
-			this.scripting_invalid = Boolean.valueOf(scripting_invalid).booleanValue();
-		}
-
-		private void setUrlPattern(String url_pattern) {
-			this.url_pattern = url_pattern;
-			if (url_pattern != null && url_pattern.length() > 0) {
-				this.matcher = new StringMatcher(url_pattern);
-			}
-		}
-
-		public String toString() {
-			return number + ":" + url_pattern;
-		}
-	}
-
-	private static class ResourceChangeListener implements IResourceChangeListener {
-		public void resourceChanged(IResourceChangeEvent event) {
-			IResourceDelta delta = event.getDelta();
-			if (event.getType() != IResourceChangeEvent.POST_CHANGE)
-				return;
-			if (delta.getKind() == IResourceDelta.CHANGED && (delta.getFlags() == IResourceDelta.ENCODING || delta.getFlags() == IResourceDelta.MARKERS))
-				return;
-
-			IResourceDeltaVisitor visitor = new IResourceDeltaVisitor() {
-				public boolean visit(IResourceDelta delta) {
-					IResource resource = delta.getResource();
-					if (resource.getType() == IResource.FILE) {
-						if (delta.getKind() == IResourceDelta.CHANGED && (delta.getFlags() == IResourceDelta.ENCODING || delta.getFlags() == IResourceDelta.MARKERS))
-							return false;
-						
-						IPath path = resource.getFullPath();
-						int segmentCount = path.segmentCount();
-						if (segmentCount > 1 && path.lastSegment().equals(WEB_XML) && path.segment(segmentCount - 2).equals(WEB_INF)) {
-							getInstance().deploymentDescriptorChanged(path);
-						}
-					}
-					else if (resource.getType() == IResource.PROJECT) {
-						String name = resource.getName();
-						if(_debugResolutionCache) {
-							System.out.println("Removing DeploymentDescriptorPropertyCache resolution cache for project " + name); //$NON-NLS-1$ 
-						}
-						getInstance().resolvedMap.remove(name);
-					}
-					return true;
-				}
-			};
-			try {
-				delta.accept(visitor);
-			}
-			catch (CoreException e) {
-				Logger.logException(e);
-			}
-		}
-	}
-
-	private static class ResourceErrorHandler implements ErrorHandler {
-		private boolean fDoLogExceptions = false;
-		private IPath fPath;
-
-		ResourceErrorHandler(boolean logExceptions) {
-			super();
-			fDoLogExceptions = logExceptions;
-		}
-
-		public void error(SAXParseException exception) throws SAXException {
-			if (fDoLogExceptions)
-				Logger.log(Logger.WARNING, "SAXParseException with " + fPath + " (error) while reading descriptor: " + exception.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		public void fatalError(SAXParseException exception) throws SAXException {
-			if (fDoLogExceptions)
-				Logger.log(Logger.WARNING, "SAXParseException with " + fPath + " (fatalError) while reading descriptor: " + exception.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		public void setPath(IPath path) {
-			fPath = path;
-		}
-
-		public void warning(SAXParseException exception) throws SAXException {
-			if (fDoLogExceptions)
-				Logger.log(Logger.WARNING, "SAXParseException with " + fPath + " (warning) while reading descriptor: " + exception.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-	}
-
-	/**
-	 * Copied from org.eclipse.core.internal.propertytester.StringMatcher, but
-	 * should be replaced with a more accurate implementation of the rules in
-	 * Servlet spec SRV.11.2
-	 */
-	private static class StringMatcher {
-		private static final char SINGLE_WILD_CARD = '\u0000';
-
-		/**
-		 * Boundary value beyond which we don't need to search in the text
-		 */
-		private int bound = 0;
-
-		private boolean hasLeadingStar;
-
-		private boolean hasTrailingStar;
-
-		private final String pattern;
-
-		private final int patternLength;
-
-		/**
-		 * The pattern split into segments separated by *
-		 */
-		private String segments[];
-
-		/**
-		 * StringMatcher constructor takes in a String object that is a simple
-		 * pattern which may contain '*' for 0 and many characters and '?' for
-		 * exactly one character.
-		 * 
-		 * Literal '*' and '?' characters must be escaped in the pattern e.g.,
-		 * "\*" means literal "*", etc.
-		 * 
-		 * Escaping any other character (including the escape character
-		 * itself), just results in that character in the pattern. e.g., "\a"
-		 * means "a" and "\\" means "\"
-		 * 
-		 * If invoking the StringMatcher with string literals in Java, don't
-		 * forget escape characters are represented by "\\".
-		 * 
-		 * @param pattern
-		 *            the pattern to match text against
-		 */
-		StringMatcher(String pattern) {
-			if (pattern == null)
-				throw new IllegalArgumentException();
-			this.pattern = pattern;
-			patternLength = pattern.length();
-			parseWildCards();
-		}
-
-		/**
-		 * @param text
-		 *            a simple regular expression that may only contain '?'(s)
-		 * @param start
-		 *            the starting index in the text for search, inclusive
-		 * @param end
-		 *            the stopping point of search, exclusive
-		 * @param p
-		 *            a simple regular expression that may contain '?'
-		 * @return the starting index in the text of the pattern , or -1 if
-		 *         not found
-		 */
-		private int findPosition(String text, int start, int end, String p) {
-			boolean hasWildCard = p.indexOf(SINGLE_WILD_CARD) >= 0;
-			int plen = p.length();
-			for (int i = start, max = end - plen; i <= max; ++i) {
-				if (hasWildCard) {
-					if (regExpRegionMatches(text, i, p, 0, plen))
-						return i;
-				}
-				else {
-					if (text.regionMatches(true, i, p, 0, plen))
-						return i;
-				}
-			}
-			return -1;
-		}
-
-		/**
-		 * Given the starting (inclusive) and the ending (exclusive) positions
-		 * in the <code>text</code>, determine if the given substring
-		 * matches with aPattern
-		 * 
-		 * @return true if the specified portion of the text matches the
-		 *         pattern
-		 * @param text
-		 *            a String object that contains the substring to match
-		 */
-		public boolean match(String text) {
-			if (text == null)
-				return false;
-			final int end = text.length();
-			final int segmentCount = segments.length;
-			if (segmentCount == 0 && (hasLeadingStar || hasTrailingStar)) // pattern
-				// contains
-				// only
-				// '*'(s)
-				return true;
-			if (end == 0)
-				return patternLength == 0;
-			if (patternLength == 0)
-				return false;
-			int currentTextPosition = 0;
-			if ((end - bound) < 0)
-				return false;
-			int segmentIndex = 0;
-			String current = segments[segmentIndex];
-
-			/* process first segment */
-			if (!hasLeadingStar) {
-				int currentLength = current.length();
-				if (!regExpRegionMatches(text, 0, current, 0, currentLength))
-					return false;
-				segmentIndex++;
-				currentTextPosition = currentTextPosition + currentLength;
-			}
-			if ((segmentCount == 1) && (!hasLeadingStar) && (!hasTrailingStar)) {
-				// only one segment to match, no wild cards specified
-				return currentTextPosition == end;
-			}
-			/* process middle segments */
-			while (segmentIndex < segmentCount) {
-				current = segments[segmentIndex];
-				int currentMatch = findPosition(text, currentTextPosition, end, current);
-				if (currentMatch < 0)
-					return false;
-				currentTextPosition = currentMatch + current.length();
-				segmentIndex++;
-			}
-
-			/* process final segment */
-			if (!hasTrailingStar && currentTextPosition != end) {
-				int currentLength = current.length();
-				return regExpRegionMatches(text, end - currentLength, current, 0, currentLength);
-			}
-			return segmentIndex == segmentCount;
-		}
-
-		/**
-		 * Parses the pattern into segments separated by wildcard '*'
-		 * characters.
-		 */
-		private void parseWildCards() {
-			if (pattern.startsWith("*"))//$NON-NLS-1$
-				hasLeadingStar = true;
-			if (pattern.endsWith("*")) {//$NON-NLS-1$
-				/* make sure it's not an escaped wildcard */
-				if (patternLength > 1 && pattern.charAt(patternLength - 2) != '\\') {
-					hasTrailingStar = true;
-				}
-			}
-
-			ArrayList temp = new ArrayList();
-
-			int pos = 0;
-			StringBuffer buf = new StringBuffer();
-			while (pos < patternLength) {
-				char c = pattern.charAt(pos++);
-				switch (c) {
-					case '\\' :
-						if (pos >= patternLength) {
-							buf.append(c);
-						}
-						else {
-							char next = pattern.charAt(pos++);
-							/* if it's an escape sequence */
-							if (next == '*' || next == '?' || next == '\\') {
-								buf.append(next);
-							}
-							else {
-								/*
-								 * not an escape sequence, just insert
-								 * literally
-								 */
-								buf.append(c);
-								buf.append(next);
-							}
-						}
-						break;
-					case '*' :
-						if (buf.length() > 0) {
-							/* new segment */
-							temp.add(buf.toString());
-							bound += buf.length();
-							buf.setLength(0);
-						}
-						break;
-					case '?' :
-						/*
-						 * append special character representing single match
-						 * wildcard
-						 */
-						buf.append(SINGLE_WILD_CARD);
-						break;
-					default :
-						buf.append(c);
-				}
-			}
-
-			/* add last buffer to segment list */
-			if (buf.length() > 0) {
-				temp.add(buf.toString());
-				bound += buf.length();
-			}
-			segments = (String[]) temp.toArray(new String[temp.size()]);
-		}
-
-		/**
-		 * 
-		 * @return boolean
-		 * @param text
-		 *            a String to match
-		 * @param tStart
-		 *            the starting index of match, inclusive
-		 * @param p
-		 *            a simple regular expression that may contain '?'
-		 * @param pStart
-		 *            The start position in the pattern
-		 * @param plen
-		 *            The length of the pattern
-		 */
-		private boolean regExpRegionMatches(String text, int tStart, String p, int pStart, int plen) {
-			while (plen-- > 0) {
-				char tchar = text.charAt(tStart++);
-				char pchar = p.charAt(pStart++);
-
-				// process wild cards, skipping single wild cards
-				if (pchar == SINGLE_WILD_CARD)
-					continue;
-				if (pchar == tchar)
-					continue;
-				if (Character.toUpperCase(tchar) == Character.toUpperCase(pchar))
-					continue;
-				// comparing after converting to upper case doesn't handle all
-				// cases;
-				// also compare after converting to lower case
-				if (Character.toLowerCase(tchar) == Character.toLowerCase(pchar))
-					continue;
-				return false;
-			}
-			return true;
-		}
-	}
-
-	private static DeploymentDescriptorPropertyCache _instance = new DeploymentDescriptorPropertyCache();
-	private static final boolean _debugResolutionCache = false;
-
-	private static final float defaultWebAppVersion = 2.4f;
-	private static String EL_IGNORED = "el-ignored";
-	private static String ID = "id";
-	private static String INCLUDE_CODA = "include-coda";
-	private static String INCLUDE_PRELUDE = "include-prelude";
-
-	private static String IS_XML = "is-xml";
-	private static String JSP_PROPERTY_GROUP = "jsp-property-group";
-	private static String PAGE_ENCODING = "page-encoding";
-
-	private static String SCRIPTING_INVALID = "scripting-invalid";
-	private static String URL_PATTERN = "url-pattern";
-	private static final String WEB_APP_ELEMENT_LOCAL_NAME = ":web-app";
-	private static final String WEB_APP_ELEMENT_NAME = "web-app";
-
-	private static final String WEB_APP_VERSION_NAME = "version";
-	private static final String WEB_INF = "WEB-INF";
-	private static final String WEB_XML = "web.xml";
-	// private static final String WEB_INF_WEB_XML = WEB_INF + IPath.SEPARATOR
-	// + WEB_XML;
-	private static final String SLASH_WEB_INF_WEB_XML = Path.ROOT.toString() + WEB_INF + IPath.SEPARATOR + WEB_XML;
-
-	static String getContainedText(Node parent) {
-		NodeList children = parent.getChildNodes();
-		if (children.getLength() == 1) {
-			return children.item(0).getNodeValue().trim();
-		}
-		StringBuffer s = new StringBuffer();
-		Node child = parent.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ENTITY_REFERENCE_NODE) {
-				String reference = ((EntityReference) child).getNodeValue();
-				if (reference == null && child.getNodeName() != null) {
-					reference = "&" + child.getNodeName() + ";"; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				if (reference != null) {
-					s.append(reference.trim());
-				}
-			}
-			else {
-				s.append(child.getNodeValue().trim());
-			}
-			child = child.getNextSibling();
-		}
-		return s.toString().trim();
-	}
-
-	public static DeploymentDescriptorPropertyCache getInstance() {
-		return _instance;
-	}
-
-	/**
-	 * This method is not meant to be called by clients.
-	 */
-	public static void start() {
-		ResourcesPlugin.getWorkspace().addResourceChangeListener(getInstance().fResourceChangeListener, IResourceChangeEvent.POST_CHANGE);
-	}
-
-	/**
-	 * This method is not meant to be called by clients.
-	 */
-	public static void stop() {
-		ResourcesPlugin.getWorkspace().removeResourceChangeListener(getInstance().fResourceChangeListener);
-	}
-
-	private ResourceErrorHandler errorHandler;
-
-	private Map fDeploymentDescriptors = new Hashtable();
-
-	private IResourceChangeListener fResourceChangeListener = new ResourceChangeListener();
-
-	// for use when reading TLDs
-	private EntityResolver resolver;
-	
-	Map resolvedMap = new HashMap();
-
-	private DeploymentDescriptorPropertyCache() {
-		super();
-	}
-
-	private void _parseDocument(IPath path, Float[] version, List groupList, SubProgressMonitor subMonitor, Document document) {
-		Element webapp = document.getDocumentElement();
-		if (webapp != null) {
-			if (webapp.getTagName().equals(WEB_APP_ELEMENT_NAME) || webapp.getNodeName().endsWith(WEB_APP_ELEMENT_LOCAL_NAME)) {
-				String versionValue = webapp.getAttribute(WEB_APP_VERSION_NAME);
-				if (versionValue != null) {
-					try {
-						version[0] = Float.valueOf(versionValue);
-					}
-					catch (NumberFormatException e) {
-						// doesn't matter
-					}
-				}
-			}
-		}
-		NodeList propertyGroupElements = document.getElementsByTagName(JSP_PROPERTY_GROUP);
-		int length = propertyGroupElements.getLength();
-		subMonitor.beginTask("Reading Property Groups", length);
-		for (int i = 0; i < length; i++) {
-			PropertyGroup group = PropertyGroup.createFrom(path, propertyGroupElements.item(i), i);
-			subMonitor.worked(1);
-			if (group != null) {
-				groupList.add(group);
-			}
-		}
-	}
-
-	/**
-	 * Convert the SRV spec version to the JSP spec version
-	 */
-	private float convertSpecVersions(float version) {
-		if (version > 0) {
-			if (version == 2.5f)
-				return 2.1f;
-			else if (version == 2.4f)
-				return 2.0f;
-			else if (version == 2.3f)
-				return 1.2f;
-			else if (version == 2.2f)
-				return 1.1f;
-			else if (version == 2.1f)
-				return 1.0f;
-		}
-		return convertSpecVersions(defaultWebAppVersion);
-	}
-
-	void deploymentDescriptorChanged(final IPath fullPath) {
-		if (fDeploymentDescriptors.containsKey(fullPath.makeAbsolute())) {
-			updateCacheEntry(fullPath);
-		}
-	}
-
-	/**
-	 * parse the specified resource using Xerces, and if that fails, use the
-	 * SSE XML parser to find the property groups.
-	 */
-	private DeploymentDescriptor fetchDescriptor(IPath path, IProgressMonitor monitor) {
-		monitor.beginTask("Reading Deployment Descriptor", 3);
-		IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-
-		PropertyGroup groups[] = null;
-
-		IStructuredModel model = null;
-		List groupList = new ArrayList();
-		Float[] version = new Float[1];
-		SubProgressMonitor subMonitor = new SubProgressMonitor(monitor, 2);
-		DocumentBuilder builder = CommonXML.getDocumentBuilder(false);
-		builder.setEntityResolver(getEntityResolver());
-		builder.setErrorHandler(getErrorHandler(path));
-		try {			
-			InputSource inputSource = new InputSource();
-			String s = FileContentCache.getInstance().getContents(path);
-			inputSource.setCharacterStream(new StringReader(s));
-			inputSource.setSystemId(path.toString());
-			Document document = builder.parse(inputSource);
-			_parseDocument(path, version, groupList, subMonitor, document);
-		}
-		catch (SAXException e1) {
-			/* encountered a fatal parsing error, try our own parser */
-			try {
-				/**
-				 * Chiefly because the web.xml file itself is editable, use
-				 * SSE to get the DOM Document because it is more fault
-				 * tolerant.
-				 */
-				model = StructuredModelManager.getModelManager().getModelForRead(file);
-				monitor.worked(1);
-				if (model instanceof IDOMModel) {
-					IDOMDocument document = ((IDOMModel) model).getDocument();
-					_parseDocument(path, version, groupList, subMonitor, document);
-				}
-			}
-			catch (Exception e) {
-				Logger.logException(e);
-			}
-			finally {
-				if (model != null) {
-					model.releaseFromRead();
-				}
-			}
-		}
-		catch (IOException e1) {
-			/* file is unreadable, create no property groups */
-		}
-		finally {
-			groups = (PropertyGroup[]) groupList.toArray(new PropertyGroup[groupList.size()]);
-			subMonitor.done();
-		}
-
-		if (groups == null) {
-			groups = NO_PROPERTY_GROUPS;
-		}
-
-		DeploymentDescriptor deploymentDescriptor = new DeploymentDescriptor();
-		deploymentDescriptor.modificationStamp = file.getModificationStamp();
-		deploymentDescriptor.groups = groups;
-		deploymentDescriptor.version = version[0];
-		monitor.done();
-		fDeploymentDescriptors.put(path, new SoftReference(deploymentDescriptor));
-		return deploymentDescriptor;
-	}
-
-	private EntityResolver getEntityResolver() {
-		if (resolver == null) {
-			resolver = new EntityResolver() {
-				public InputSource resolveEntity(String publicID, String systemID) throws SAXException, IOException {
-					InputSource result = new InputSource(new ByteArrayInputStream(new byte[0]));
-					result.setPublicId(publicID);
-					result.setSystemId(systemID != null ? systemID : "/_" + getClass().getName()); //$NON-NLS-1$
-					return result;
-				}
-			};
-		}
-		return resolver;
-	}
-
-	/**
-	 * Returns an ErrorHandler that will not stop the parser on reported
-	 * errors
-	 */
-	private ErrorHandler getErrorHandler(IPath path) {
-		if (errorHandler == null) {
-			errorHandler = new ResourceErrorHandler(false);
-		}
-		errorHandler.setPath(path);
-		return errorHandler;
-	}
-
-	/**
-	 * @param fullPath
-	 * @return the JSP version supported by the web application containing the
-	 *         path. A value stated within a web.xml file takes priority.
-	 */
-	public float getJSPVersion(IPath fullPath) {
-		float version = defaultWebAppVersion;
-		/* try applicable web.xml file first */
-		IPath webxmlPath = getWebXMLPath(fullPath);
-		if (webxmlPath != null) {
-			IFile webxmlFile = ResourcesPlugin.getWorkspace().getRoot().getFile(webxmlPath);
-			if (webxmlFile.isAccessible()) {
-				Reference descriptorHolder = (Reference) fDeploymentDescriptors.get(webxmlPath);
-				DeploymentDescriptor descriptor = null;
-
-				if (descriptorHolder == null || ((descriptor = (DeploymentDescriptor) descriptorHolder.get()) == null) || (descriptor.modificationStamp == IResource.NULL_STAMP) || (descriptor.modificationStamp != webxmlFile.getModificationStamp())) {
-					descriptor = fetchDescriptor(webxmlPath, new NullProgressMonitor());
-				}
-
-				if (descriptor.version != null) {
-					version = descriptor.version.floatValue();
-					return convertSpecVersions(version);
-				}
-			}
-		}
-
-		/* check facet settings */
-		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(fullPath.segment(0));
-		version = FacetModuleCoreSupport.getDynamicWebProjectVersion(project);
-
-		return convertSpecVersions(version);
-	}
-
-	/**
-	 * @param jspFilePath
-	 * @return PropertyGroups matching the file at the given path or an empty
-	 *         array if no web.xml file exists or no matching property group
-	 *         was defined. A returned PropertyGroup object should be
-	 *         considered short-lived and not saved for later use.
-	 */
-	public PropertyGroup[] getPropertyGroups(IPath jspFilePath) {
-		List matchingGroups = new ArrayList(1);
-		IPath webxmlPath = getWebXMLPath(jspFilePath);
-		if (webxmlPath == null)
-			return NO_PROPERTY_GROUPS;
-
-		IFile webxmlFile = ResourcesPlugin.getWorkspace().getRoot().getFile(webxmlPath);
-		if (!webxmlFile.isAccessible())
-			return NO_PROPERTY_GROUPS;
-
-		Reference descriptorHolder = (Reference) fDeploymentDescriptors.get(webxmlPath);
-		DeploymentDescriptor descriptor = null;
-
-		if (descriptorHolder == null || ((descriptor = (DeploymentDescriptor) descriptorHolder.get()) == null) || (descriptor.modificationStamp == IResource.NULL_STAMP) || (descriptor.modificationStamp != webxmlFile.getModificationStamp())) {
-			descriptor = fetchDescriptor(webxmlPath, new NullProgressMonitor());
-		}
-
-		for (int i = 0; i < descriptor.groups.length; i++) {
-			if (descriptor.groups[i].matches(FacetModuleCoreSupport.getRuntimePath(jspFilePath).toString(), false)) {
-				matchingGroups.add(descriptor.groups[i]);
-			}
-		}
-		if (matchingGroups.isEmpty()) {
-			for (int i = 0; i < descriptor.groups.length; i++) {
-				if (descriptor.groups[i].matches(FacetModuleCoreSupport.getRuntimePath(jspFilePath).toString(), true)) {
-					matchingGroups.add(descriptor.groups[i]);
-				}
-			}
-		}
-		return (PropertyGroup[]) matchingGroups.toArray(new PropertyGroup[matchingGroups.size()]);
-	}
-
-	private IPath getWebXMLPath(IPath fullPath) {
-		/*
-		 * It can take the better part of a full second to do this, so cache
-		 * the result.
-		 */
-		IPath resolved = null;
-		Map mapForProject = null;
-		mapForProject = (Map) resolvedMap.get(fullPath.segment(0));
-		if (mapForProject != null) {
-			resolved = (IPath) mapForProject.get(fullPath);
-		}
-		else {
-			mapForProject = new HashMap();
-			resolvedMap.put(fullPath.segment(0), mapForProject);
-		}
-
-		if (resolved != null) {
-			if (_debugResolutionCache) {
-				System.out.println("DeploymentDescriptorPropertyCache resolution cache hit for " + fullPath); //$NON-NLS-1$ 
-			}
-		}
-		else {
-			if (_debugResolutionCache) {
-				System.out.println("DeploymentDescriptorPropertyCache resolution cache miss for " + fullPath); //$NON-NLS-1$ 
-			}
-			resolved = FacetModuleCoreSupport.resolve(fullPath, SLASH_WEB_INF_WEB_XML);
-			mapForProject.put(fullPath, resolved);
-		}
-		return resolved;
-	}
-
-	public IFile getWebXML(IPath fullPath) {
-		IPath webxmlPath = getWebXMLPath(fullPath);
-		IFile webxmlFile = null;
-		if (webxmlPath != null) {
-			webxmlFile = ResourcesPlugin.getWorkspace().getRoot().getFile(webxmlPath);
-		}
-		return webxmlFile;
-	}
-
-	private void updateCacheEntry(IPath fullPath) {
-		/* don't update right now; remove and wait for another query to update */
-		fDeploymentDescriptors.remove(fullPath);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/HeadParserToken.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/HeadParserToken.java
deleted file mode 100644
index 9a58ad2..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/HeadParserToken.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-
-public class HeadParserToken {
-	private int fStart;
-
-	private String fText;
-	private String fType;
-
-	protected HeadParserToken() {
-		super();
-	}
-
-	public HeadParserToken(String type, int start, String text) {
-		this();
-		fType = type;
-		fStart = start;
-		fText = text;
-
-	}
-
-	public String getText() {
-		return fText;
-	}
-
-	public String getType() {
-		return fType;
-	}
-
-	public String toString() {
-		return ("text: " + fText + " offset: " + fStart + " type: " + fType); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/IntStack.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/IntStack.java
deleted file mode 100644
index 99c7477..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/IntStack.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-
-/*
- * 
- * A non-resizable class implementing the behavior of java.util.Stack, but
- * directly for the <code> integer </code> primitive.
- */
-import java.util.EmptyStackException;
-
-public class IntStack {
-	private int[] list = null;
-
-	private int size = 0;
-
-	public IntStack() {
-		this(100);
-	}
-
-	public IntStack(int maxdepth) {
-		super();
-		list = new int[maxdepth];
-		initialize();
-	}
-
-	public void clear() {
-		initialize();
-	}
-
-	public boolean empty() {
-		return size == 0;
-	}
-
-	public int get(int slot) {
-		return list[slot];
-	}
-
-	private void initialize() {
-		for (int i = 0; i < list.length; i++)
-			list[i] = -1;
-	}
-
-	/**
-	 * Returns the int at the top of the stack without removing it
-	 * 
-	 * @return int at the top of this stack.
-	 * @exception EmptyStackException
-	 *                when empty.
-	 */
-	public int peek() {
-		if (size == 0)
-			throw new EmptyStackException();
-		return list[size - 1];
-	}
-
-	/**
-	 * Removes and returns the int at the top of the stack
-	 * 
-	 * @return int at the top of this stack.
-	 * @exception EmptyStackException
-	 *                when empty.
-	 */
-	public int pop() {
-		int value = peek();
-		list[size - 1] = -1;
-		size--;
-		return value;
-	}
-
-	/**
-	 * Pushes an item onto the top of this stack.
-	 * 
-	 * @param newValue -
-	 *            the int to be pushed onto this stack.
-	 * @return the <code>newValue</code> argument.
-	 */
-	public int push(int newValue) {
-		if (size == list.length) {
-			throw new StackOverflowError();
-		}
-		list[size++] = newValue;
-		return newValue;
-	}
-
-	public int size() {
-		return list.length;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizer.java
deleted file mode 100644
index 176c532..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizer.java
+++ /dev/null
@@ -1,3924 +0,0 @@
-/* The following code was generated by JFlex 1.4.2 on 7/28/08 9:29 AM */
-
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*nlsXXX*/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Arrays;
-
-import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;
-import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;
-
-
-/**
- * This class is a scanner generated by 
- * <a href="http://www.jflex.de/">JFlex</a> 1.4.2
- * on 7/28/08 9:29 AM from the specification file
- * <tt>D:/workspaces/wtp301/workspace/org.eclipse.jst.jsp.core/DevTimeSupport/HeadParsers/JSPHeadTokenizer.jFlex</tt>
- */
-public class JSPHeadTokenizer {
-
-  /** This character denotes the end of file */
-  public static final int YYEOF = -1;
-
-  /** initial size of the lookahead buffer */
-  private static final int ZZ_BUFFERSIZE = 8192;
-
-  /** lexical states */
-  public static final int YYINITIAL = 0;
-  public static final int UnDelimitedString = 12;
-  public static final int DQ_STRING = 8;
-  public static final int SQ_STRING = 10;
-  public static final int ST_XMLDecl = 2;
-  public static final int ST_PAGE_DIRECTIVE = 4;
-  public static final int QuotedAttributeValue = 6;
-
-  /**
-   * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
-   * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
-   *                  at the beginning of a line
-   * l is of the form l = 2*k, k a non negative integer
-   */
-  private static final int ZZ_LEXSTATE[] = { 
-     0,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7, 7
-  };
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final String ZZ_CMAP_PACKED = 
-    "\1\11\10\0\1\6\1\10\2\0\1\7\22\0\1\6\1\20\1\37"+
-    "\2\0\1\51\1\0\1\40\6\0\1\43\1\34\1\0\1\47\1\0"+
-    "\1\44\5\0\1\50\1\41\1\0\1\13\1\12\1\56\1\14\1\52"+
-    "\1\53\1\32\1\23\1\21\1\27\1\0\1\46\1\30\1\33\1\54"+
-    "\1\0\1\17\1\16\1\35\1\22\1\26\1\0\1\45\1\36\1\24"+
-    "\1\31\1\55\1\42\1\15\1\25\7\0\1\53\1\32\1\23\1\21"+
-    "\1\27\1\0\1\46\1\30\1\33\1\54\1\0\1\17\1\16\1\35"+
-    "\1\22\1\26\1\0\1\45\1\36\1\24\1\31\1\55\1\42\1\15"+
-    "\1\25\101\0\1\4\3\0\1\5\17\0\1\3\16\0\1\1\20\0"+
-    "\1\3\16\0\1\1\1\2\170\0\1\2\ufe87\0";
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
-
-  /** 
-   * Translates DFA states to action switch labels.
-   */
-  private static final int [] ZZ_ACTION = zzUnpackAction();
-
-  private static final String ZZ_ACTION_PACKED_0 =
-    "\10\0\24\1\2\2\1\1\1\2\1\3\1\4\1\5"+
-    "\1\6\1\1\1\5\1\7\1\5\1\1\1\10\1\1"+
-    "\1\11\6\0\1\12\1\13\15\0\1\14\20\0\1\15"+
-    "\1\0\1\16\1\0\1\2\1\3\1\4\1\6\3\0"+
-    "\1\17\1\7\1\0\1\10\1\11\10\0\1\20\5\0"+
-    "\1\14\12\0\1\15\1\16\1\2\1\17\67\0\1\21"+
-    "\20\0\1\22\4\0\1\21\17\0\1\22\6\0\1\23"+
-    "\15\0\1\24\1\0\1\23\2\0\1\25\14\0\1\24"+
-    "\2\0\1\25\34\0\1\26\14\0\1\26\2\0\1\27"+
-    "\13\0\1\27\132\0\1\30\1\0\1\30\6\0\2\30"+
-    "\11\0\1\31\1\0\1\31\2\0\2\31\11\0";
-
-  private static int [] zzUnpackAction() {
-    int [] result = new int[446];
-    int offset = 0;
-    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAction(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /* error codes */
-  private static final int ZZ_UNKNOWN_ERROR = 0;
-  private static final int ZZ_NO_MATCH = 1;
-  private static final int ZZ_PUSHBACK_2BIG = 2;
-
-  /* error messages for the codes above */
-  private static final String ZZ_ERROR_MSG[] = {
-    "Unkown internal scanner error",
-    "Error: could not match input",
-    "Error: pushback value was too large"
-  };
-
-  /** the input device */
-  private java.io.Reader zzReader;
-
-  /** the current state of the DFA */
-  private int zzState;
-
-  /** the current lexical state */
-  private int zzLexicalState = YYINITIAL;
-
-  /** this buffer contains the current text to be matched and is
-      the source of the yytext() string */
-  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
-  /** the textposition at the last accepting state */
-  private int zzMarkedPos;
-
-  /** the current text position in the buffer */
-  private int zzCurrentPos;
-
-  /** startRead marks the beginning of the yytext() string in the buffer */
-  private int zzStartRead;
-
-  /** endRead marks the last character in the buffer, that has been read
-      from input */
-  private int zzEndRead;
-
-  /** the number of characters up to the start of the matched text */
-  private int yychar;
-
-  /** 
-   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
-   */
-  private boolean zzAtBOL = true;
-
-  /** zzAtEOF == true <=> the scanner is at the EOF */
-  private boolean zzAtEOF;
-
-  /** denotes if the user-EOF-code has already been executed */
-  private boolean zzEOFDone;
-
-  /* user code: */
-
-
-
-
-        private boolean hasMore = true;
-        private final static int MAX_TO_SCAN = 8000;
-        StringBuffer string = new StringBuffer();
-        // state stack for easier state handling
-        private IntStack fStateStack = new IntStack();
-        private String valueText = null;
-        private boolean isXHTML;
-        private boolean isWML;
-
-
-        public JSPHeadTokenizer() {
-                super();
-        }
-
-          public void reset (Reader in) {
-                /* the input device */
-                zzReader = in;
-
-                /* the current state of the DFA */
-                zzState = 0;
-
-                /* the current lexical state */
-                zzLexicalState = YYINITIAL;
-
-                /* this buffer contains the current text to be matched and is
-                 the source of the yytext() string */
-                Arrays.fill(zzBuffer, (char)0);
-
-                /* the textposition at the last accepting state */
-                zzMarkedPos = 0;
-
-                /* the textposition at the last state to be included in yytext */
-                //zzPushbackPos = 0;
-
-                /* the current text position in the buffer */
-                zzCurrentPos = 0;
-
-                /* startRead marks the beginning of the yytext() string in the buffer */
-                zzStartRead = 0;
-
-                /**
-                 * endRead marks the last character in the buffer, that has been read
-                 * from input
-                 */
-                zzEndRead = 0;
-
-                /* number of newlines encountered up to the start of the matched text */
-                //yyline = 0;
-
-                /* the number of characters up to the start of the matched text */
-                yychar = 0;
-
-                /**
-                 * the number of characters from the last newline up to the start
-                 * of the matched text
-                 */
-                //yycolumn = 0;
-
-                /**
-                 * yy_atBOL == true <=> the scanner is currently at the beginning
-                 * of a line
-                 */
-                zzAtBOL = true;
-
-                /* yy_atEOF == true <=> the scanner has returned a value for EOF */
-                zzAtEOF = false;
-
-                /* denotes if the user-EOF-code has already been executed */
-                zzEOFDone = false;
-
-
-                fStateStack.clear();
-
-                hasMore = true;
-                isXHTML=false;
-                isWML=false;
-
-
-        }
-
-
-        public final HeadParserToken getNextToken() throws IOException, Exception {
-                String context = null;
-                context = primGetNextToken();
-                HeadParserToken result = null;
-                if (valueText != null) {
-                        result = createToken(context, yychar, valueText);
-                        valueText = null;
-                } else {
-                        result = createToken(context, yychar, yytext());
-                }
-                return result;
-        }
-
-        public final boolean hasMoreTokens() {
-                return hasMore && yychar < MAX_TO_SCAN;
-        }
-        private void pushCurrentState() {
-                fStateStack.push(yystate());
-
-        }
- 
-        private void popState() {
-                yybegin(fStateStack.pop());
-        }
-        private HeadParserToken createToken(String context, int start, String text) {
-                return new HeadParserToken(context, start, text);
-        }
-        
-        public boolean isXHTML() {
-            return isXHTML;
-        }
-        public boolean isWML() {
-            return isWML;
-        }        
-
-
-
-  /**
-   * Creates a new scanner
-   * There is also a java.io.InputStream version of this constructor.
-   *
-   * @param   in  the java.io.Reader to read input from.
-   */
-  public JSPHeadTokenizer(java.io.Reader in) {
-    this.zzReader = in;
-  }
-
-  /**
-   * Creates a new scanner.
-   * There is also java.io.Reader version of this constructor.
-   *
-   * @param   in  the java.io.Inputstream to read input from.
-   */
-  public JSPHeadTokenizer(java.io.InputStream in) {
-    this(new java.io.InputStreamReader(in));
-  }
-
-  /** 
-   * Unpacks the compressed character translation table.
-   *
-   * @param packed   the packed character translation table
-   * @return         the unpacked character translation table
-   */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x10000];
-    int i = 0;  /* index in packed string  */
-    int j = 0;  /* index in unpacked array */
-    while (i < 194) {
-      int  count = packed.charAt(i++);
-      char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
-    }
-    return map;
-  }
-
-
-  /**
-   * Refills the input buffer.
-   *
-   * @return      <code>false</code>, iff there was new input.
-   * 
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  private boolean zzRefill() throws java.io.IOException {
-
-    /* first: make room (if you can) */
-    if (zzStartRead > 0) {
-      System.arraycopy(zzBuffer, zzStartRead,
-                       zzBuffer, 0,
-                       zzEndRead-zzStartRead);
-
-      /* translate stored positions */
-      zzEndRead-= zzStartRead;
-      zzCurrentPos-= zzStartRead;
-      zzMarkedPos-= zzStartRead;
-      zzStartRead = 0;
-    }
-
-    /* is the buffer big enough? */
-    if (zzCurrentPos >= zzBuffer.length) {
-      /* if not: blow it up */
-      char newBuffer[] = new char[zzCurrentPos*2];
-      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
-      zzBuffer = newBuffer;
-    }
-
-    /* finally: fill the buffer with new input */
-    int numRead = zzReader.read(zzBuffer, zzEndRead,
-                                            zzBuffer.length-zzEndRead);
-
-    if (numRead > 0) {
-      zzEndRead+= numRead;
-      return false;
-    }
-    // unlikely but not impossible: read 0 characters, but not at end of stream    
-    if (numRead == 0) {
-      int c = zzReader.read();
-      if (c == -1) {
-        return true;
-      } else {
-        zzBuffer[zzEndRead++] = (char) c;
-        return false;
-      }     
-    }
-
-	// numRead < 0
-    return true;
-  }
-
-    
-  /**
-   * Closes the input stream.
-   */
-  public final void yyclose() throws java.io.IOException {
-    zzAtEOF = true;            /* indicate end of file */
-    zzEndRead = zzStartRead;  /* invalidate buffer    */
-
-    if (zzReader != null)
-      zzReader.close();
-  }
-
-
-  /**
-   * Resets the scanner to read from a new input stream.
-   * Does not close the old reader.
-   *
-   * All internal variables are reset, the old input stream 
-   * <b>cannot</b> be reused (internal buffer is discarded and lost).
-   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
-   *
-   * @param reader   the new input stream 
-   */
-  public final void yyreset(java.io.Reader reader) {
-    zzReader = reader;
-    zzAtBOL  = true;
-    zzAtEOF  = false;
-    zzEndRead = zzStartRead = 0;
-    zzCurrentPos = zzMarkedPos = 0;
-    yychar = 0;
-    zzLexicalState = YYINITIAL;
-  }
-
-
-  /**
-   * Returns the current lexical state.
-   */
-  public final int yystate() {
-    return zzLexicalState;
-  }
-
-
-  /**
-   * Enters a new lexical state
-   *
-   * @param newState the new lexical state
-   */
-  public final void yybegin(int newState) {
-    zzLexicalState = newState;
-  }
-
-
-  /**
-   * Returns the text matched by the current regular expression.
-   */
-  public final String yytext() {
-    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
-  }
-
-
-  /**
-   * Returns the character at position <tt>pos</tt> from the 
-   * matched text. 
-   * 
-   * It is equivalent to yytext().charAt(pos), but faster
-   *
-   * @param pos the position of the character to fetch. 
-   *            A value from 0 to yylength()-1.
-   *
-   * @return the character at position pos
-   */
-  public final char yycharat(int pos) {
-    return zzBuffer[zzStartRead+pos];
-  }
-
-
-  /**
-   * Returns the length of the matched text region.
-   */
-  public final int yylength() {
-    return zzMarkedPos-zzStartRead;
-  }
-
-
-  /**
-   * Reports an error that occured while scanning.
-   *
-   * In a wellformed scanner (no or only correct usage of 
-   * yypushback(int) and a match-all fallback rule) this method 
-   * will only be called with things that "Can't Possibly Happen".
-   * If this method is called, something is seriously wrong
-   * (e.g. a JFlex bug producing a faulty scanner etc.).
-   *
-   * Usual syntax/scanner level error handling should be done
-   * in error fallback rules.
-   *
-   * @param   errorCode  the code of the errormessage to display
-   */
-  private void zzScanError(int errorCode) throws java.lang.Exception {
-    String message;
-    try {
-      message = ZZ_ERROR_MSG[errorCode];
-    }
-    catch (ArrayIndexOutOfBoundsException e) {
-      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
-    }
-
-    throw new java.lang.Exception(message);
-  } 
-
-
-  /**
-   * Pushes the specified amount of characters back into the input stream.
-   *
-   * They will be read again by then next call of the scanning method
-   *
-   * @param number  the number of characters to be read again.
-   *                This number must not be greater than yylength()!
-   */
-  public void yypushback(int number)  throws java.lang.Exception {
-    if ( number > yylength() )
-      zzScanError(ZZ_PUSHBACK_2BIG);
-
-    zzMarkedPos -= number;
-  }
-
-
-  /**
-   * Contains user EOF-code, which will be executed exactly once,
-   * when the end of file is reached
-   */
-  private void zzDoEOF() {
-    if (!zzEOFDone) {
-      zzEOFDone = true;
-            hasMore=false;
-
-    }
-  }
-
-
-  /**
-   * Resumes scanning until the next regular expression is matched,
-   * the end of input is encountered or an I/O-Error occurs.
-   *
-   * @return      the next token
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  public String primGetNextToken() throws java.io.IOException, java.lang.Exception {
-    int zzInput;
-    int zzAction;
-
-    // cached fields:
-    int zzCurrentPosL;
-    int zzMarkedPosL;
-    int zzEndReadL = zzEndRead;
-    char [] zzBufferL = zzBuffer;
-    char [] zzCMapL = ZZ_CMAP;
-
-
-    while (true) {
-      zzMarkedPosL = zzMarkedPos;
-
-      yychar+= zzMarkedPosL-zzStartRead;
-
-      if (zzMarkedPosL > zzStartRead) {
-        switch (zzBufferL[zzMarkedPosL-1]) {
-        case '\n':
-        case '\u000B':
-        case '\u000C':
-        case '\u0085':
-        case '\u2028':
-        case '\u2029':
-          zzAtBOL = true;
-          break;
-        case '\r': 
-          if (zzMarkedPosL < zzEndReadL)
-            zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
-          else if (zzAtEOF)
-            zzAtBOL = false;
-          else {
-            boolean eof = zzRefill();
-            zzMarkedPosL = zzMarkedPos;
-            zzEndReadL = zzEndRead;
-            zzBufferL = zzBuffer;
-            if (eof) 
-              zzAtBOL = false;
-            else 
-              zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
-          }
-          break;
-        default:
-          zzAtBOL = false;
-        }
-      }
-      zzAction = -1;
-
-      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-  
-      if (zzAtBOL)
-        zzState = ZZ_LEXSTATE[zzLexicalState+1];
-      else
-        zzState = ZZ_LEXSTATE[zzLexicalState];
-
-
-      zzForAction: {
-        while (true) {
-    
-          if (zzCurrentPosL < zzEndReadL)
-            zzInput = zzBufferL[zzCurrentPosL++];
-          else if (zzAtEOF) {
-            zzInput = YYEOF;
-            break zzForAction;
-          }
-          else {
-            // store back cached positions
-            zzCurrentPos  = zzCurrentPosL;
-            zzMarkedPos   = zzMarkedPosL;
-            boolean eof = zzRefill();
-            // get translated positions and possibly new buffer
-            zzCurrentPosL  = zzCurrentPos;
-            zzMarkedPosL   = zzMarkedPos;
-            zzBufferL      = zzBuffer;
-            zzEndReadL     = zzEndRead;
-            if (eof) {
-              zzInput = YYEOF;
-              break zzForAction;
-            }
-            else {
-              zzInput = zzBufferL[zzCurrentPosL++];
-            }
-          }
-          zzInput = zzCMapL[zzInput];
-
-          boolean zzIsFinal = false;
-          boolean zzNoLookAhead = false;
-
-          zzForNext: { switch (zzState) {
-            case 0:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzState = 9; break zzForNext;
-                case 11: zzIsFinal = true; zzState = 10; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 8; break zzForNext;
-              }
-
-            case 1:
-              switch (zzInput) {
-                case 1: zzIsFinal = true; zzState = 11; break zzForNext;
-                case 2: zzIsFinal = true; zzState = 12; break zzForNext;
-                case 3: zzIsFinal = true; zzState = 13; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 14; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 15; break zzForNext;
-                case 11: zzIsFinal = true; zzState = 16; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 8; break zzForNext;
-              }
-
-            case 2:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 17; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 18; break zzForNext;
-                case 12: zzIsFinal = true; zzState = 19; break zzForNext;
-                case 23: zzIsFinal = true; zzState = 20; break zzForNext;
-                case 45: zzIsFinal = true; zzState = 21; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 8; break zzForNext;
-              }
-
-            case 3:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzState = 22; break zzForNext;
-                case 15: zzIsFinal = true; zzState = 23; break zzForNext;
-                case 19: zzIsFinal = true; zzState = 24; break zzForNext;
-                case 22: zzIsFinal = true; zzState = 25; break zzForNext;
-                case 28: zzIsFinal = true; zzState = 26; break zzForNext;
-                case 41: zzIsFinal = true; zzState = 27; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 8; break zzForNext;
-              }
-
-            case 4:
-              switch (zzInput) {
-                case 6: 
-                case 7: zzIsFinal = true; zzState = 29; break zzForNext;
-                case 8: zzIsFinal = true; zzState = 30; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 31; break zzForNext;
-                case 31: zzIsFinal = true; zzState = 32; break zzForNext;
-                case 32: zzIsFinal = true; zzState = 33; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 28; break zzForNext;
-              }
-
-            case 5:
-              switch (zzInput) {
-                case 7: 
-                case 8: 
-                case 11: zzIsFinal = true; zzState = 35; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 36; break zzForNext;
-                case 12: zzIsFinal = true; zzState = 37; break zzForNext;
-                case 31: zzIsFinal = true; zzState = 38; break zzForNext;
-                case 41: zzIsFinal = true; zzState = 39; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 34; break zzForNext;
-              }
-
-            case 6:
-              switch (zzInput) {
-                case 7: 
-                case 8: 
-                case 11: zzIsFinal = true; zzState = 35; break zzForNext;
-                case 32: zzIsFinal = true; zzState = 38; break zzForNext;
-                case 41: zzIsFinal = true; zzState = 39; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 40; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 34; break zzForNext;
-              }
-
-            case 7:
-              switch (zzInput) {
-                case 11: zzIsFinal = true; zzState = 35; break zzForNext;
-                case 12: 
-                case 41: zzIsFinal = true; zzState = 39; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 41; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 42; break zzForNext;
-                case 31: 
-                case 32: zzIsFinal = true; zzState = 43; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 34; break zzForNext;
-              }
-
-            case 9:
-              switch (zzInput) {
-                case 11: zzState = 44; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 10:
-              switch (zzInput) {
-                case 9: zzState = 45; break zzForNext;
-                case 16: zzState = 46; break zzForNext;
-                case 24: zzState = 47; break zzForNext;
-                case 41: zzState = 48; break zzForNext;
-                case 44: zzState = 49; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 11:
-              switch (zzInput) {
-                case 2: zzIsFinal = true; zzNoLookAhead = true; zzState = 50; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 12:
-              switch (zzInput) {
-                case 1: zzIsFinal = true; zzNoLookAhead = true; zzState = 51; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 13:
-              switch (zzInput) {
-                case 4: zzState = 52; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 14:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 53; break zzForNext;
-                case 9: zzState = 54; break zzForNext;
-                case 11: zzState = 55; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 15:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 53; break zzForNext;
-                case 11: zzState = 56; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 16:
-              switch (zzInput) {
-                case 16: zzState = 46; break zzForNext;
-                case 24: zzState = 47; break zzForNext;
-                case 41: zzState = 48; break zzForNext;
-                case 44: zzState = 49; break zzForNext;
-                case 9: zzState = 57; break zzForNext;
-                case 12: zzState = 58; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 17:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 59; break zzForNext;
-                case 9: zzState = 60; break zzForNext;
-                case 12: zzState = 61; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 18:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 59; break zzForNext;
-                case 12: zzState = 61; break zzForNext;
-                case 23: zzState = 62; break zzForNext;
-                case 45: zzState = 63; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 19:
-              switch (zzInput) {
-                case 9: zzState = 64; break zzForNext;
-                case 46: zzIsFinal = true; zzState = 65; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 20:
-              switch (zzInput) {
-                case 9: zzState = 66; break zzForNext;
-                case 29: zzState = 67; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 21:
-              switch (zzInput) {
-                case 9: zzState = 68; break zzForNext;
-                case 23: zzState = 69; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 22:
-              switch (zzInput) {
-                case 15: zzState = 70; break zzForNext;
-                case 19: zzState = 71; break zzForNext;
-                case 22: zzState = 72; break zzForNext;
-                case 28: zzState = 73; break zzForNext;
-                case 41: zzState = 74; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 23:
-              switch (zzInput) {
-                case 9: zzState = 75; break zzForNext;
-                case 43: zzState = 76; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 24:
-              switch (zzInput) {
-                case 9: zzState = 77; break zzForNext;
-                case 18: zzState = 78; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 25:
-              switch (zzInput) {
-                case 9: zzState = 79; break zzForNext;
-                case 43: zzState = 80; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 26:
-              switch (zzInput) {
-                case 9: zzState = 81; break zzForNext;
-                case 46: zzIsFinal = true; zzState = 82; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 27:
-              switch (zzInput) {
-                case 9: zzState = 83; break zzForNext;
-                case 46: zzIsFinal = true; zzState = 84; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 29:
-              switch (zzInput) {
-                case 6: 
-                case 7: zzIsFinal = true; break zzForNext;
-                case 8: zzState = 85; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 86; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 28; break zzForNext;
-              }
-
-            case 30:
-              switch (zzInput) {
-                case 6: 
-                case 7: zzIsFinal = true; zzState = 29; break zzForNext;
-                case 8: zzState = 85; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 86; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 28; break zzForNext;
-              }
-
-            case 31:
-              switch (zzInput) {
-                case 31: zzIsFinal = true; zzState = 32; break zzForNext;
-                case 32: zzIsFinal = true; zzState = 33; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzState = 85; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 32:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 87; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 33:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 88; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 35:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 89; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 36:
-              switch (zzInput) {
-                case 7: 
-                case 8: 
-                case 11: zzIsFinal = true; zzState = 35; break zzForNext;
-                case 31: zzIsFinal = true; zzState = 38; break zzForNext;
-                case 12: zzState = 90; break zzForNext;
-                case 41: zzState = 91; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 37:
-              switch (zzInput) {
-                case 9: zzState = 92; break zzForNext;
-                case 46: zzIsFinal = true; zzState = 93; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 38:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 94; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 39:
-              switch (zzInput) {
-                case 46: zzIsFinal = true; zzState = 35; break zzForNext;
-                case 9: zzState = 95; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 40:
-              switch (zzInput) {
-                case 7: 
-                case 8: 
-                case 11: zzIsFinal = true; zzState = 35; break zzForNext;
-                case 32: zzIsFinal = true; zzState = 38; break zzForNext;
-                case 41: zzState = 91; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 41:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 96; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 42:
-              switch (zzInput) {
-                case 11: zzIsFinal = true; zzState = 35; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 41; break zzForNext;
-                case 31: 
-                case 32: zzIsFinal = true; zzState = 43; break zzForNext;
-                case 12: 
-                case 41: zzState = 91; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 43:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 97; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 44:
-              switch (zzInput) {
-                case 9: zzState = 45; break zzForNext;
-                case 16: zzState = 46; break zzForNext;
-                case 24: zzState = 47; break zzForNext;
-                case 41: zzState = 48; break zzForNext;
-                case 44: zzState = 49; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 45:
-              switch (zzInput) {
-                case 16: zzState = 46; break zzForNext;
-                case 24: zzState = 47; break zzForNext;
-                case 41: zzState = 48; break zzForNext;
-                case 44: zzState = 49; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 46:
-              switch (zzInput) {
-                case 9: zzState = 98; break zzForNext;
-                case 17: zzState = 99; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 47:
-              switch (zzInput) {
-                case 9: zzState = 100; break zzForNext;
-                case 20: zzState = 101; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 48:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 102; break zzForNext;
-                case 42: zzState = 103; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 49:
-              switch (zzInput) {
-                case 9: zzState = 104; break zzForNext;
-                case 30: zzState = 105; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 52:
-              switch (zzInput) {
-                case 5: zzIsFinal = true; zzNoLookAhead = true; zzState = 106; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 53:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 54; break zzForNext;
-                case 11: zzState = 55; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 54:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 53; break zzForNext;
-                case 11: zzState = 55; break zzForNext;
-                case 9: zzState = 107; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 55:
-              switch (zzInput) {
-                case 12: zzState = 58; break zzForNext;
-                case 9: zzState = 108; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 56:
-              switch (zzInput) {
-                case 16: zzState = 46; break zzForNext;
-                case 24: zzState = 47; break zzForNext;
-                case 41: zzState = 48; break zzForNext;
-                case 44: zzState = 49; break zzForNext;
-                case 9: zzState = 57; break zzForNext;
-                case 12: zzState = 58; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 57:
-              switch (zzInput) {
-                case 16: zzState = 46; break zzForNext;
-                case 24: zzState = 47; break zzForNext;
-                case 41: zzState = 48; break zzForNext;
-                case 44: zzState = 49; break zzForNext;
-                case 12: zzState = 58; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 58:
-              switch (zzInput) {
-                case 9: zzState = 109; break zzForNext;
-                case 13: zzState = 110; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 59:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 60; break zzForNext;
-                case 12: zzState = 61; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 60:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 59; break zzForNext;
-                case 12: zzState = 61; break zzForNext;
-                case 9: zzState = 111; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 61:
-              switch (zzInput) {
-                case 9: zzState = 64; break zzForNext;
-                case 46: zzIsFinal = true; zzState = 65; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 62:
-              switch (zzInput) {
-                case 9: zzState = 66; break zzForNext;
-                case 29: zzState = 67; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 63:
-              switch (zzInput) {
-                case 9: zzState = 68; break zzForNext;
-                case 23: zzState = 69; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 64:
-              switch (zzInput) {
-                case 46: zzIsFinal = true; zzState = 65; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 65:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 112; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 66:
-              switch (zzInput) {
-                case 29: zzState = 67; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 67:
-              switch (zzInput) {
-                case 9: zzState = 113; break zzForNext;
-                case 19: zzState = 114; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 68:
-              switch (zzInput) {
-                case 23: zzState = 69; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 69:
-              switch (zzInput) {
-                case 9: zzState = 115; break zzForNext;
-                case 37: zzState = 116; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 70:
-              switch (zzInput) {
-                case 9: zzState = 75; break zzForNext;
-                case 43: zzState = 76; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 71:
-              switch (zzInput) {
-                case 9: zzState = 77; break zzForNext;
-                case 18: zzState = 78; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 72:
-              switch (zzInput) {
-                case 9: zzState = 79; break zzForNext;
-                case 43: zzState = 80; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 73:
-              switch (zzInput) {
-                case 9: zzState = 81; break zzForNext;
-                case 46: zzIsFinal = true; zzState = 82; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 74:
-              switch (zzInput) {
-                case 9: zzState = 83; break zzForNext;
-                case 46: zzIsFinal = true; zzState = 84; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 75:
-              switch (zzInput) {
-                case 43: zzState = 76; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 76:
-              switch (zzInput) {
-                case 9: zzState = 117; break zzForNext;
-                case 29: zzState = 118; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 77:
-              switch (zzInput) {
-                case 18: zzState = 78; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 78:
-              switch (zzInput) {
-                case 9: zzState = 119; break zzForNext;
-                case 29: zzState = 120; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 79:
-              switch (zzInput) {
-                case 43: zzState = 80; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 80:
-              switch (zzInput) {
-                case 9: zzState = 121; break zzForNext;
-                case 38: zzState = 122; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 81:
-              switch (zzInput) {
-                case 46: zzIsFinal = true; zzState = 82; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 82:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 123; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 83:
-              switch (zzInput) {
-                case 46: zzIsFinal = true; zzState = 84; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 84:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 124; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 85:
-              switch (zzInput) {
-                case 6: 
-                case 7: zzIsFinal = true; zzState = 29; break zzForNext;
-                case 8: break zzForNext;
-                case 9: zzIsFinal = true; zzState = 86; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 28; break zzForNext;
-              }
-
-            case 86:
-              switch (zzInput) {
-                case 6: 
-                case 7: zzIsFinal = true; zzState = 29; break zzForNext;
-                case 8: zzState = 85; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 125; break zzForNext;
-                default: zzIsFinal = true; zzNoLookAhead = true; zzState = 28; break zzForNext;
-              }
-
-            case 90:
-              switch (zzInput) {
-                case 9: zzState = 92; break zzForNext;
-                case 46: zzIsFinal = true; zzState = 93; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 91:
-              switch (zzInput) {
-                case 46: zzIsFinal = true; zzState = 35; break zzForNext;
-                case 9: zzState = 95; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 92:
-              switch (zzInput) {
-                case 46: zzIsFinal = true; zzState = 93; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 93:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 126; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 95:
-              switch (zzInput) {
-                case 46: zzIsFinal = true; zzState = 35; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 98:
-              switch (zzInput) {
-                case 17: zzState = 99; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 99:
-              switch (zzInput) {
-                case 9: zzState = 127; break zzForNext;
-                case 18: zzState = 128; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 100:
-              switch (zzInput) {
-                case 20: zzState = 101; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 101:
-              switch (zzInput) {
-                case 9: zzState = 129; break zzForNext;
-                case 14: zzState = 130; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 102:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 48; break zzForNext;
-                case 42: zzState = 103; break zzForNext;
-                case 9: zzState = 131; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 103:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 132; break zzForNext;
-                case 20: zzState = 133; break zzForNext;
-                case 22: zzState = 134; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 104:
-              switch (zzInput) {
-                case 30: zzState = 105; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 105:
-              switch (zzInput) {
-                case 9: zzState = 135; break zzForNext;
-                case 22: zzState = 136; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 107:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 53; break zzForNext;
-                case 11: zzState = 55; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 108:
-              switch (zzInput) {
-                case 12: zzState = 58; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 109:
-              switch (zzInput) {
-                case 13: zzState = 110; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 110:
-              switch (zzInput) {
-                case 9: zzState = 137; break zzForNext;
-                case 14: zzState = 138; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 111:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 59; break zzForNext;
-                case 12: zzState = 61; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 113:
-              switch (zzInput) {
-                case 19: zzState = 114; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 114:
-              switch (zzInput) {
-                case 9: zzState = 139; break zzForNext;
-                case 18: zzState = 140; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 115:
-              switch (zzInput) {
-                case 37: zzState = 116; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 116:
-              switch (zzInput) {
-                case 9: zzState = 141; break zzForNext;
-                case 30: zzState = 142; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 117:
-              switch (zzInput) {
-                case 29: zzState = 118; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 118:
-              switch (zzInput) {
-                case 9: zzState = 143; break zzForNext;
-                case 38: zzState = 144; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 119:
-              switch (zzInput) {
-                case 29: zzState = 120; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 120:
-              switch (zzInput) {
-                case 9: zzState = 145; break zzForNext;
-                case 20: zzState = 146; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 121:
-              switch (zzInput) {
-                case 38: zzState = 122; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 122:
-              switch (zzInput) {
-                case 9: zzState = 147; break zzForNext;
-                case 23: zzState = 148; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 125:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 85; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 127:
-              switch (zzInput) {
-                case 18: zzState = 128; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 128:
-              switch (zzInput) {
-                case 9: zzState = 149; break zzForNext;
-                case 19: zzState = 150; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 129:
-              switch (zzInput) {
-                case 14: zzState = 130; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 130:
-              switch (zzInput) {
-                case 9: zzState = 151; break zzForNext;
-                case 15: zzState = 152; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 131:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 48; break zzForNext;
-                case 42: zzState = 103; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 132:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 103; break zzForNext;
-                case 20: zzState = 133; break zzForNext;
-                case 22: zzState = 134; break zzForNext;
-                case 9: zzState = 153; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 133:
-              switch (zzInput) {
-                case 9: zzState = 154; break zzForNext;
-                case 43: zzState = 155; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 134:
-              switch (zzInput) {
-                case 9: zzState = 156; break zzForNext;
-                case 43: zzState = 157; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 135:
-              switch (zzInput) {
-                case 22: zzState = 136; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 136:
-              switch (zzInput) {
-                case 9: zzState = 158; break zzForNext;
-                case 33: zzState = 159; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 137:
-              switch (zzInput) {
-                case 14: zzState = 138; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 138:
-              switch (zzInput) {
-                case 9: zzState = 160; break zzForNext;
-                case 15: zzState = 161; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 139:
-              switch (zzInput) {
-                case 18: zzState = 140; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 140:
-              switch (zzInput) {
-                case 9: zzState = 162; break zzForNext;
-                case 17: zzState = 163; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 141:
-              switch (zzInput) {
-                case 30: zzState = 142; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 142:
-              switch (zzInput) {
-                case 9: zzState = 164; break zzForNext;
-                case 27: zzState = 165; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 143:
-              switch (zzInput) {
-                case 38: zzState = 144; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 144:
-              switch (zzInput) {
-                case 9: zzState = 166; break zzForNext;
-                case 25: zzState = 167; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 145:
-              switch (zzInput) {
-                case 20: zzState = 146; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 146:
-              switch (zzInput) {
-                case 9: zzState = 168; break zzForNext;
-                case 23: zzState = 169; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 147:
-              switch (zzInput) {
-                case 23: zzState = 148; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 148:
-              switch (zzInput) {
-                case 9: zzState = 170; break zzForNext;
-                case 23: zzState = 171; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 149:
-              switch (zzInput) {
-                case 19: zzState = 150; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 150:
-              switch (zzInput) {
-                case 9: zzState = 172; break zzForNext;
-                case 20: zzState = 173; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 151:
-              switch (zzInput) {
-                case 15: zzState = 152; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 152:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 174; break zzForNext;
-                case 13: zzState = 175; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 153:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 103; break zzForNext;
-                case 20: zzState = 133; break zzForNext;
-                case 22: zzState = 134; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 154:
-              switch (zzInput) {
-                case 43: zzState = 155; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 155:
-              switch (zzInput) {
-                case 9: zzState = 176; break zzForNext;
-                case 38: zzState = 177; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 156:
-              switch (zzInput) {
-                case 43: zzState = 157; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 157:
-              switch (zzInput) {
-                case 9: zzState = 178; break zzForNext;
-                case 38: zzState = 179; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 158:
-              switch (zzInput) {
-                case 33: zzState = 159; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 159:
-              switch (zzInput) {
-                case 9: zzState = 180; break zzForNext;
-                case 17: zzState = 181; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 160:
-              switch (zzInput) {
-                case 15: zzState = 161; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 161:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 182; break zzForNext;
-                case 9: zzState = 183; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 162:
-              switch (zzInput) {
-                case 17: zzState = 163; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 163:
-              switch (zzInput) {
-                case 9: zzState = 184; break zzForNext;
-                case 27: zzState = 185; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 164:
-              switch (zzInput) {
-                case 27: zzState = 165; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 165:
-              switch (zzInput) {
-                case 9: zzState = 186; break zzForNext;
-                case 18: zzState = 187; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 166:
-              switch (zzInput) {
-                case 25: zzState = 167; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 167:
-              switch (zzInput) {
-                case 9: zzState = 188; break zzForNext;
-                case 43: zzState = 189; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 168:
-              switch (zzInput) {
-                case 23: zzState = 169; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 169:
-              switch (zzInput) {
-                case 9: zzState = 190; break zzForNext;
-                case 29: zzState = 191; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 170:
-              switch (zzInput) {
-                case 23: zzState = 171; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 171:
-              switch (zzInput) {
-                case 9: zzState = 192; break zzForNext;
-                case 29: zzState = 193; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 172:
-              switch (zzInput) {
-                case 20: zzState = 173; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 173:
-              switch (zzInput) {
-                case 9: zzState = 194; break zzForNext;
-                case 21: zzState = 195; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 174:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 152; break zzForNext;
-                case 13: zzState = 175; break zzForNext;
-                case 9: zzState = 196; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 175:
-              switch (zzInput) {
-                case 9: zzState = 197; break zzForNext;
-                case 14: zzState = 198; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 176:
-              switch (zzInput) {
-                case 38: zzState = 177; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 177:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 199; break zzForNext;
-                case 9: zzState = 200; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 178:
-              switch (zzInput) {
-                case 38: zzState = 179; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 179:
-              switch (zzInput) {
-                case 23: zzState = 177; break zzForNext;
-                case 9: zzState = 201; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 180:
-              switch (zzInput) {
-                case 17: zzState = 181; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 181:
-              switch (zzInput) {
-                case 9: zzState = 202; break zzForNext;
-                case 27: zzState = 203; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 182:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 204; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 183:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 182; break zzForNext;
-                case 9: zzState = 205; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 184:
-              switch (zzInput) {
-                case 27: zzState = 185; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 185:
-              switch (zzInput) {
-                case 9: zzState = 206; break zzForNext;
-                case 29: zzState = 207; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 186:
-              switch (zzInput) {
-                case 18: zzState = 187; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 187:
-              switch (zzInput) {
-                case 9: zzState = 208; break zzForNext;
-                case 29: zzState = 209; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 188:
-              switch (zzInput) {
-                case 43: zzState = 189; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 189:
-              switch (zzInput) {
-                case 9: zzState = 210; break zzForNext;
-                case 38: zzState = 211; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 190:
-              switch (zzInput) {
-                case 29: zzState = 191; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 191:
-              switch (zzInput) {
-                case 9: zzState = 212; break zzForNext;
-                case 20: zzState = 213; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 192:
-              switch (zzInput) {
-                case 29: zzState = 193; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 193:
-              switch (zzInput) {
-                case 9: zzState = 214; break zzForNext;
-                case 19: zzState = 215; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 194:
-              switch (zzInput) {
-                case 21: zzState = 195; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 195:
-              switch (zzInput) {
-                case 9: zzState = 216; break zzForNext;
-                case 22: zzState = 217; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 196:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 152; break zzForNext;
-                case 13: zzState = 175; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 197:
-              switch (zzInput) {
-                case 14: zzState = 198; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 198:
-              switch (zzInput) {
-                case 9: zzState = 218; break zzForNext;
-                case 15: zzState = 219; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 199:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 220; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 200:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 199; break zzForNext;
-                case 9: zzState = 221; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 201:
-              switch (zzInput) {
-                case 23: zzState = 177; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 202:
-              switch (zzInput) {
-                case 27: zzState = 203; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 203:
-              switch (zzInput) {
-                case 9: zzState = 222; break zzForNext;
-                case 37: zzState = 223; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 204:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 182; break zzForNext;
-                case 9: zzState = 205; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 205:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 182; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 206:
-              switch (zzInput) {
-                case 29: zzState = 207; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 207:
-              switch (zzInput) {
-                case 9: zzState = 224; break zzForNext;
-                case 38: zzState = 225; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 208:
-              switch (zzInput) {
-                case 29: zzState = 209; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 209:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 226; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 227; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 210:
-              switch (zzInput) {
-                case 38: zzState = 211; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 211:
-              switch (zzInput) {
-                case 9: zzState = 228; break zzForNext;
-                case 23: zzState = 229; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 212:
-              switch (zzInput) {
-                case 20: zzState = 213; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 213:
-              switch (zzInput) {
-                case 9: zzState = 230; break zzForNext;
-                case 20: zzState = 231; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 214:
-              switch (zzInput) {
-                case 19: zzState = 215; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 215:
-              switch (zzInput) {
-                case 9: zzState = 232; break zzForNext;
-                case 18: zzState = 233; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 216:
-              switch (zzInput) {
-                case 22: zzState = 217; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 217:
-              switch (zzInput) {
-                case 9: zzState = 234; break zzForNext;
-                case 23: zzState = 235; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 218:
-              switch (zzInput) {
-                case 15: zzState = 219; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 219:
-              switch (zzInput) {
-                case 9: zzState = 236; break zzForNext;
-                case 29: zzState = 237; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 220:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 199; break zzForNext;
-                case 9: zzState = 221; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 221:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 199; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 222:
-              switch (zzInput) {
-                case 37: zzState = 223; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 223:
-              switch (zzInput) {
-                case 9: zzState = 238; break zzForNext;
-                case 23: zzState = 239; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 224:
-              switch (zzInput) {
-                case 38: zzState = 225; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 225:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 240; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 241; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 226:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 209; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 227; break zzForNext;
-                case 9: zzState = 242; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 227:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 243; break zzForNext;
-                case 9: zzState = 244; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 228:
-              switch (zzInput) {
-                case 23: zzState = 229; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 229:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 245; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 246; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 230:
-              switch (zzInput) {
-                case 20: zzState = 231; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 231:
-              switch (zzInput) {
-                case 9: zzState = 247; break zzForNext;
-                case 21: zzState = 248; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 232:
-              switch (zzInput) {
-                case 18: zzState = 233; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 233:
-              switch (zzInput) {
-                case 9: zzState = 249; break zzForNext;
-                case 17: zzState = 250; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 234:
-              switch (zzInput) {
-                case 23: zzState = 235; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 235:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 251; break zzForNext;
-                case 24: zzState = 252; break zzForNext;
-                case 34: zzState = 253; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 236:
-              switch (zzInput) {
-                case 29: zzState = 237; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 237:
-              switch (zzInput) {
-                case 9: zzState = 254; break zzForNext;
-                case 30: zzState = 255; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 238:
-              switch (zzInput) {
-                case 23: zzState = 239; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 239:
-              switch (zzInput) {
-                case 9: zzState = 256; break zzForNext;
-                case 19: zzState = 257; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 240:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 225; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 241; break zzForNext;
-                case 9: zzState = 258; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 241:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 259; break zzForNext;
-                case 9: zzState = 260; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 242:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 209; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 243:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzState = 227; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 244:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 243; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 245:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 229; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 246; break zzForNext;
-                case 9: zzState = 261; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 246:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 262; break zzForNext;
-                case 9: zzState = 263; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 247:
-              switch (zzInput) {
-                case 21: zzState = 248; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 248:
-              switch (zzInput) {
-                case 9: zzState = 264; break zzForNext;
-                case 22: zzState = 265; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 249:
-              switch (zzInput) {
-                case 17: zzState = 250; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 250:
-              switch (zzInput) {
-                case 9: zzState = 266; break zzForNext;
-                case 27: zzState = 267; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 251:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 235; break zzForNext;
-                case 24: zzState = 252; break zzForNext;
-                case 34: zzState = 253; break zzForNext;
-                case 9: zzState = 268; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 252:
-              switch (zzInput) {
-                case 9: zzState = 269; break zzForNext;
-                case 20: zzState = 270; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 253:
-              switch (zzInput) {
-                case 9: zzState = 271; break zzForNext;
-                case 14: zzState = 272; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 254:
-              switch (zzInput) {
-                case 30: zzState = 255; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 255:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 273; break zzForNext;
-                case 10: zzState = 274; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 256:
-              switch (zzInput) {
-                case 19: zzState = 257; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 257:
-              switch (zzInput) {
-                case 9: zzState = 275; break zzForNext;
-                case 20: zzState = 276; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 258:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 225; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 259:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzState = 241; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 260:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 259; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 261:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 229; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 262:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzState = 246; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 263:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 262; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 264:
-              switch (zzInput) {
-                case 22: zzState = 265; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 265:
-              switch (zzInput) {
-                case 9: zzState = 277; break zzForNext;
-                case 23: zzState = 278; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 266:
-              switch (zzInput) {
-                case 27: zzState = 267; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 267:
-              switch (zzInput) {
-                case 9: zzState = 279; break zzForNext;
-                case 29: zzState = 280; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 268:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 235; break zzForNext;
-                case 24: zzState = 252; break zzForNext;
-                case 34: zzState = 253; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 269:
-              switch (zzInput) {
-                case 20: zzState = 270; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 270:
-              switch (zzInput) {
-                case 9: zzState = 281; break zzForNext;
-                case 14: zzState = 282; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 271:
-              switch (zzInput) {
-                case 14: zzState = 272; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 272:
-              switch (zzInput) {
-                case 9: zzState = 283; break zzForNext;
-                case 15: zzState = 284; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 273:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 255; break zzForNext;
-                case 10: zzState = 274; break zzForNext;
-                case 9: zzState = 285; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 274:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 286; break zzForNext;
-                case 31: 
-                case 32: zzState = 287; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 275:
-              switch (zzInput) {
-                case 20: zzState = 276; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 276:
-              switch (zzInput) {
-                case 9: zzState = 288; break zzForNext;
-                case 27: zzState = 289; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 277:
-              switch (zzInput) {
-                case 23: zzState = 278; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 278:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 290; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 291; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 279:
-              switch (zzInput) {
-                case 29: zzState = 280; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 280:
-              switch (zzInput) {
-                case 9: zzState = 292; break zzForNext;
-                case 38: zzState = 293; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 281:
-              switch (zzInput) {
-                case 14: zzState = 282; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 282:
-              switch (zzInput) {
-                case 9: zzState = 294; break zzForNext;
-                case 15: zzState = 295; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 283:
-              switch (zzInput) {
-                case 15: zzState = 284; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 284:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 296; break zzForNext;
-                case 22: zzState = 297; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 285:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 255; break zzForNext;
-                case 10: zzState = 274; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 286:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 274; break zzForNext;
-                case 31: 
-                case 32: zzState = 287; break zzForNext;
-                case 9: zzState = 298; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 287:
-              switch (zzInput) {
-                case 9: zzState = 299; break zzForNext;
-                case 24: zzState = 300; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 288:
-              switch (zzInput) {
-                case 27: zzState = 289; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 289:
-              switch (zzInput) {
-                case 9: zzState = 301; break zzForNext;
-                case 45: zzState = 302; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 290:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 278; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 291; break zzForNext;
-                case 9: zzState = 303; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 291:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 304; break zzForNext;
-                case 9: zzState = 305; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 292:
-              switch (zzInput) {
-                case 38: zzState = 293; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 293:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 306; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 307; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 294:
-              switch (zzInput) {
-                case 15: zzState = 295; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 295:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: break zzForNext;
-                case 9: zzState = 308; break zzForNext;
-                case 22: zzState = 309; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 296:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 284; break zzForNext;
-                case 22: zzState = 297; break zzForNext;
-                case 9: zzState = 310; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 297:
-              switch (zzInput) {
-                case 9: zzState = 311; break zzForNext;
-                case 25: zzState = 312; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 298:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 274; break zzForNext;
-                case 31: 
-                case 32: zzState = 287; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 299:
-              switch (zzInput) {
-                case 24: zzState = 300; break zzForNext;
-                case 9: zzState = 313; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 300:
-              switch (zzInput) {
-                case 9: zzState = 314; break zzForNext;
-                case 20: zzState = 315; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 301:
-              switch (zzInput) {
-                case 45: zzState = 302; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 302:
-              switch (zzInput) {
-                case 9: zzState = 316; break zzForNext;
-                case 23: zzState = 317; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 303:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 278; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 304:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzState = 291; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 305:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 304; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 306:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 293; break zzForNext;
-                case 10: zzIsFinal = true; zzState = 307; break zzForNext;
-                case 9: zzState = 318; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 307:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 319; break zzForNext;
-                case 9: zzState = 320; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 308:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 295; break zzForNext;
-                case 22: zzState = 309; break zzForNext;
-                case 9: zzState = 321; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 309:
-              switch (zzInput) {
-                case 9: zzState = 322; break zzForNext;
-                case 25: zzState = 323; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 310:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 284; break zzForNext;
-                case 22: zzState = 297; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 311:
-              switch (zzInput) {
-                case 25: zzState = 312; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 312:
-              switch (zzInput) {
-                case 9: zzState = 324; break zzForNext;
-                case 26: zzState = 325; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 313:
-              switch (zzInput) {
-                case 24: zzState = 300; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 314:
-              switch (zzInput) {
-                case 20: zzState = 315; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 315:
-              switch (zzInput) {
-                case 9: zzState = 326; break zzForNext;
-                case 20: zzState = 327; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 316:
-              switch (zzInput) {
-                case 23: zzState = 317; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 317:
-              switch (zzInput) {
-                case 9: zzState = 328; break zzForNext;
-                case 35: zzState = 329; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 318:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 293; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 319:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzState = 307; break zzForNext;
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 320:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzIsFinal = true; zzState = 319; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 321:
-              switch (zzInput) {
-                case 6: 
-                case 7: 
-                case 8: zzState = 295; break zzForNext;
-                case 22: zzState = 309; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 322:
-              switch (zzInput) {
-                case 25: zzState = 323; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 323:
-              switch (zzInput) {
-                case 9: zzState = 330; break zzForNext;
-                case 26: zzState = 331; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 324:
-              switch (zzInput) {
-                case 26: zzState = 325; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 325:
-              switch (zzInput) {
-                case 9: zzState = 332; break zzForNext;
-                case 15: zzState = 333; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 326:
-              switch (zzInput) {
-                case 20: zzState = 327; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 327:
-              switch (zzInput) {
-                case 9: zzState = 334; break zzForNext;
-                case 22: zzState = 335; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 328:
-              switch (zzInput) {
-                case 35: zzState = 329; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 329:
-              switch (zzInput) {
-                case 20: zzState = 133; break zzForNext;
-                case 22: zzState = 134; break zzForNext;
-                case 9: zzState = 336; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 330:
-              switch (zzInput) {
-                case 26: zzState = 331; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 331:
-              switch (zzInput) {
-                case 9: zzState = 337; break zzForNext;
-                case 15: zzState = 338; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 332:
-              switch (zzInput) {
-                case 15: zzState = 333; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 333:
-              switch (zzInput) {
-                case 9: zzState = 339; break zzForNext;
-                case 27: zzState = 340; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 334:
-              switch (zzInput) {
-                case 22: zzState = 335; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 335:
-              switch (zzInput) {
-                case 9: zzState = 341; break zzForNext;
-                case 33: zzState = 342; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 336:
-              switch (zzInput) {
-                case 20: zzState = 133; break zzForNext;
-                case 22: zzState = 134; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 337:
-              switch (zzInput) {
-                case 15: zzState = 338; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 338:
-              switch (zzInput) {
-                case 9: zzState = 343; break zzForNext;
-                case 27: zzState = 344; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 339:
-              switch (zzInput) {
-                case 27: zzState = 340; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 340:
-              switch (zzInput) {
-                case 9: zzState = 345; break zzForNext;
-                case 19: zzState = 346; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 341:
-              switch (zzInput) {
-                case 33: zzState = 342; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 342:
-              switch (zzInput) {
-                case 9: zzState = 347; break zzForNext;
-                case 28: zzState = 348; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 343:
-              switch (zzInput) {
-                case 27: zzState = 344; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 344:
-              switch (zzInput) {
-                case 9: zzState = 349; break zzForNext;
-                case 19: zzState = 350; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 345:
-              switch (zzInput) {
-                case 19: zzState = 346; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 346:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 8: break zzForAction;
-                default: break zzForNext;
-              }
-
-            case 347:
-              switch (zzInput) {
-                case 28: zzState = 348; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 348:
-              switch (zzInput) {
-                case 9: zzState = 352; break zzForNext;
-                case 28: zzState = 353; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 349:
-              switch (zzInput) {
-                case 19: zzState = 350; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 350:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 8: break zzForAction;
-                default: break zzForNext;
-              }
-
-            case 351:
-              switch (zzInput) {
-                case 9: zzState = 355; break zzForNext;
-                case 28: zzState = 356; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 352:
-              switch (zzInput) {
-                case 28: zzState = 353; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 353:
-              switch (zzInput) {
-                case 9: zzState = 357; break zzForNext;
-                case 34: zzState = 358; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 354:
-              switch (zzInput) {
-                case 9: zzState = 359; break zzForNext;
-                case 28: zzState = 360; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 355:
-              switch (zzInput) {
-                case 28: zzState = 356; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 356:
-              switch (zzInput) {
-                case 28: break zzForNext;
-                case 9: zzState = 361; break zzForNext;
-                case 17: zzState = 362; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 357:
-              switch (zzInput) {
-                case 34: zzState = 358; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 358:
-              switch (zzInput) {
-                case 9: zzState = 363; break zzForNext;
-                case 34: zzState = 364; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 359:
-              switch (zzInput) {
-                case 28: zzState = 360; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 360:
-              switch (zzInput) {
-                case 28: break zzForNext;
-                case 9: zzState = 365; break zzForNext;
-                case 17: zzState = 366; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 361:
-              switch (zzInput) {
-                case 28: zzState = 356; break zzForNext;
-                case 17: zzState = 362; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 362:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 9: zzState = 367; break zzForNext;
-                case 20: zzState = 368; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 363:
-              switch (zzInput) {
-                case 34: zzState = 364; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 364:
-              switch (zzInput) {
-                case 9: zzState = 369; break zzForNext;
-                case 34: zzState = 370; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 365:
-              switch (zzInput) {
-                case 28: zzState = 360; break zzForNext;
-                case 17: zzState = 366; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 366:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 9: zzState = 371; break zzForNext;
-                case 20: zzState = 372; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 367:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 20: zzState = 368; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 368:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 9: zzState = 373; break zzForNext;
-                case 17: zzState = 374; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 369:
-              switch (zzInput) {
-                case 34: zzState = 370; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 370:
-              switch (zzInput) {
-                case 9: zzState = 375; break zzForNext;
-                case 35: zzState = 376; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 371:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 20: zzState = 372; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 372:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 9: zzState = 377; break zzForNext;
-                case 17: zzState = 378; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 373:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 17: zzState = 374; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 374:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 6: 
-                case 7: zzState = 379; break zzForNext;
-                case 8: zzState = 380; break zzForNext;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 375:
-              switch (zzInput) {
-                case 35: zzState = 376; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 376:
-              switch (zzInput) {
-                case 9: zzState = 381; break zzForNext;
-                case 34: zzState = 382; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 377:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 17: zzState = 378; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 378:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 6: 
-                case 7: zzState = 383; break zzForNext;
-                case 8: zzState = 384; break zzForNext;
-                case 9: zzState = 385; break zzForNext;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 379:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 9: zzState = 386; break zzForNext;
-                case 34: zzState = 387; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 380:
-              switch (zzInput) {
-                case 9: zzState = 388; break zzForNext;
-                case 34: zzState = 389; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 381:
-              switch (zzInput) {
-                case 34: zzState = 382; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 382:
-              switch (zzInput) {
-                case 9: zzState = 390; break zzForNext;
-                case 36: zzState = 391; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 383:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 9: zzState = 392; break zzForNext;
-                case 13: zzState = 393; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 384:
-              switch (zzInput) {
-                case 9: zzState = 394; break zzForNext;
-                case 13: zzState = 395; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 385:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 6: 
-                case 7: zzState = 383; break zzForNext;
-                case 8: zzState = 384; break zzForNext;
-                case 9: zzState = 396; break zzForNext;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 386:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 34: zzState = 387; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 387:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 9: zzState = 397; break zzForNext;
-                case 14: zzState = 398; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 388:
-              switch (zzInput) {
-                case 34: zzState = 389; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 389:
-              switch (zzInput) {
-                case 9: zzState = 399; break zzForNext;
-                case 14: zzState = 400; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 390:
-              switch (zzInput) {
-                case 36: zzState = 391; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 391:
-              switch (zzInput) {
-                case 9: zzState = 401; break zzForNext;
-                case 35: zzState = 402; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 392:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 13: zzState = 393; break zzForNext;
-                case 9: zzState = 403; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 393:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 9: zzState = 404; break zzForNext;
-                case 24: zzState = 405; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 394:
-              switch (zzInput) {
-                case 13: zzState = 395; break zzForNext;
-                case 9: zzState = 406; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 395:
-              switch (zzInput) {
-                case 9: zzState = 407; break zzForNext;
-                case 24: zzState = 408; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 396:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 6: 
-                case 7: zzState = 383; break zzForNext;
-                case 8: zzState = 384; break zzForNext;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 397:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 14: zzState = 398; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 398:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 9: zzState = 409; break zzForNext;
-                case 15: zzIsFinal = true; zzState = 410; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 399:
-              switch (zzInput) {
-                case 14: zzState = 400; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 400:
-              switch (zzInput) {
-                case 9: zzState = 411; break zzForNext;
-                case 15: zzIsFinal = true; zzState = 412; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 401:
-              switch (zzInput) {
-                case 35: zzState = 402; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 402:
-              switch (zzInput) {
-                case 9: zzState = 413; break zzForNext;
-                case 18: zzState = 414; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 403:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 13: zzState = 393; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 404:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 24: zzState = 405; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 405:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 9: zzState = 415; break zzForNext;
-                case 20: zzState = 416; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 406:
-              switch (zzInput) {
-                case 13: zzState = 395; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 407:
-              switch (zzInput) {
-                case 24: zzState = 408; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 408:
-              switch (zzInput) {
-                case 9: zzState = 417; break zzForNext;
-                case 20: zzState = 418; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 409:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 15: zzIsFinal = true; zzState = 410; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 410:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 419; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 411:
-              switch (zzInput) {
-                case 15: zzIsFinal = true; zzState = 412; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 412:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 420; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 413:
-              switch (zzInput) {
-                case 18: zzState = 414; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 414:
-              switch (zzInput) {
-                case 9: zzState = 421; break zzForNext;
-                case 37: zzState = 422; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 415:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 20: zzState = 416; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 416:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 9: zzState = 423; break zzForNext;
-                case 14: zzState = 424; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 417:
-              switch (zzInput) {
-                case 20: zzState = 418; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 418:
-              switch (zzInput) {
-                case 9: zzState = 425; break zzForNext;
-                case 14: zzState = 426; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 419:
-              switch (zzInput) {
-                case 28: zzState = 351; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 346; break zzForNext;
-              }
-
-            case 421:
-              switch (zzInput) {
-                case 37: zzState = 422; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 422:
-              switch (zzInput) {
-                case 9: zzState = 427; break zzForNext;
-                case 38: zzState = 428; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 423:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 14: zzState = 424; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 424:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 9: zzState = 429; break zzForNext;
-                case 15: zzIsFinal = true; zzState = 430; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 425:
-              switch (zzInput) {
-                case 14: zzState = 426; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 426:
-              switch (zzInput) {
-                case 9: zzState = 431; break zzForNext;
-                case 15: zzIsFinal = true; zzState = 432; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 427:
-              switch (zzInput) {
-                case 38: zzState = 428; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 428:
-              switch (zzInput) {
-                case 9: zzState = 433; break zzForNext;
-                case 28: zzState = 434; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 429:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 15: zzIsFinal = true; zzState = 430; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 430:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 9: zzIsFinal = true; zzState = 435; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 431:
-              switch (zzInput) {
-                case 15: zzIsFinal = true; zzState = 432; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 432:
-              switch (zzInput) {
-                case 9: zzIsFinal = true; zzNoLookAhead = true; zzState = 436; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 433:
-              switch (zzInput) {
-                case 28: zzState = 434; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 434:
-              switch (zzInput) {
-                case 9: zzState = 437; break zzForNext;
-                case 39: zzState = 438; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 435:
-              switch (zzInput) {
-                case 28: zzState = 354; break zzForNext;
-                case 8: break zzForAction;
-                default: zzState = 350; break zzForNext;
-              }
-
-            case 437:
-              switch (zzInput) {
-                case 39: zzState = 438; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 438:
-              switch (zzInput) {
-                case 9: zzState = 439; break zzForNext;
-                case 40: zzState = 440; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 439:
-              switch (zzInput) {
-                case 40: zzState = 440; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 440:
-              switch (zzInput) {
-                case 9: zzState = 441; break zzForNext;
-                case 40: zzState = 442; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 441:
-              switch (zzInput) {
-                case 40: zzState = 442; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 442:
-              switch (zzInput) {
-                case 9: zzState = 443; break zzForNext;
-                case 40: zzState = 444; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 443:
-              switch (zzInput) {
-                case 40: zzState = 444; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 444:
-              switch (zzInput) {
-                case 28: zzState = 394; break zzForNext;
-                case 9: zzState = 445; break zzForNext;
-                default: break zzForAction;
-              }
-
-            case 445:
-              switch (zzInput) {
-                case 28: zzState = 394; break zzForNext;
-                default: break zzForAction;
-              }
-
-            default:
-              // if this is ever reached, there is a serious bug in JFlex
-              zzScanError(ZZ_UNKNOWN_ERROR);
-              break;
-          } }
-
-          if ( zzIsFinal ) {
-            zzAction = zzState;
-            zzMarkedPosL = zzCurrentPosL;
-            if ( zzNoLookAhead ) break zzForAction;
-          }
-
-        }
-      }
-
-      // store back cached position
-      zzMarkedPos = zzMarkedPosL;
-
-      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 10: 
-          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16BE;}
-          }
-        case 26: break;
-        case 16: 
-          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF83ByteBOM;}
-          }
-        case 27: break;
-        case 1: 
-          { if(yychar > MAX_TO_SCAN) {hasMore=false; return EncodingParserConstants.MAX_CHARS_REACHED;}
-          }
-        case 28: break;
-        case 4: 
-          { yybegin(SQ_STRING); string.setLength(0);
-          }
-        case 29: break;
-        case 8: 
-          { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.UnDelimitedStringValue;
-          }
-        case 30: break;
-        case 5: 
-          { string.append( yytext() );
-          }
-        case 31: break;
-        case 9: 
-          { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue;
-          }
-        case 32: break;
-        case 21: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageLanguage;
-          }
-        case 33: break;
-        case 15: 
-          { yypushback(yylength()); popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;
-          }
-        case 34: break;
-        case 25: 
-          { isXHTML = true;
-          }
-        case 35: break;
-        case 23: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageEncoding;
-          }
-        case 36: break;
-        case 11: 
-          { if (yychar == 0 ) {hasMore = false; return EncodingParserConstants.UTF16LE;}
-          }
-        case 37: break;
-        case 7: 
-          { popState(); valueText = string.toString(); return EncodingParserConstants.StringValue;
-          }
-        case 38: break;
-        case 14: 
-          { yybegin(YYINITIAL);  return JSPHeadTokenizerConstants.PageDirectiveEnd;
-          }
-        case 39: break;
-        case 22: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return JSPHeadTokenizerConstants.PageContentType;
-          }
-        case 40: break;
-        case 17: 
-          { if (yychar == 0 ) {yybegin(ST_XMLDecl); return XMLHeadTokenizerConstants.XMLDeclStart;}
-          }
-        case 41: break;
-        case 2: 
-          { yypushback(1); yybegin(UnDelimitedString); string.setLength(0);
-          }
-        case 42: break;
-        case 12: 
-          { yybegin(YYINITIAL); return XMLHeadTokenizerConstants.XMLDeclEnd;
-          }
-        case 43: break;
-        case 13: 
-          { yybegin(YYINITIAL); return JSPHeadTokenizerConstants.PageDirectiveEnd;
-          }
-        case 44: break;
-        case 24: 
-          { isWML = true;
-          }
-        case 45: break;
-        case 18: 
-          { yybegin(ST_PAGE_DIRECTIVE); return JSPHeadTokenizerConstants.PageDirectiveStart;
-          }
-        case 46: break;
-        case 6: 
-          { yypushback(yylength());popState(); valueText = string.toString(); return EncodingParserConstants.InvalidTerminatedStringValue;
-          }
-        case 47: break;
-        case 20: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDelEncoding;
-          }
-        case 48: break;
-        case 19: 
-          { pushCurrentState(); yybegin(QuotedAttributeValue); return XMLHeadTokenizerConstants.XMLDeclVersion;
-          }
-        case 49: break;
-        case 3: 
-          { yybegin(DQ_STRING); string.setLength(0);
-          }
-        case 50: break;
-        default: 
-          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-            zzAtEOF = true;
-            zzDoEOF();
-              {
-                hasMore = false; return EncodingParserConstants.EOF;
-              }
-          } 
-          else {
-            zzScanError(ZZ_NO_MATCH);
-          }
-      }
-    }
-  }
-
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizerConstants.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizerConstants.java
deleted file mode 100644
index 7b71657..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPHeadTokenizerConstants.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-
-import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;
-
-public interface JSPHeadTokenizerConstants extends XMLHeadTokenizerConstants {
-	String PageDirectiveStart = "PageDirectiveStart"; //$NON-NLS-1$
-	String PageDirectiveEnd = "PageDirectiveEnd"; //$NON-NLS-1$
-	String PageLanguage = "PageLanguage"; //$NON-NLS-1$
-	String PageEncoding = "PageEncoding"; //$NON-NLS-1$
-	String PageContentType = "PageContentType"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPResourceEncodingDetector.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPResourceEncodingDetector.java
deleted file mode 100644
index f3f3e9c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contenttype/JSPResourceEncodingDetector.java
+++ /dev/null
@@ -1,522 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.contenttype;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.nio.charset.Charset;
-import java.nio.charset.IllegalCharsetNameException;
-import java.nio.charset.UnsupportedCharsetException;
-import java.util.regex.Pattern;
-
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.wst.sse.core.internal.encoding.CodedIO;
-import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
-import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
-import org.eclipse.wst.sse.core.internal.encoding.NonContentBasedEncodingRules;
-import org.eclipse.wst.xml.core.internal.contenttype.EncodingParserConstants;
-import org.eclipse.wst.xml.core.internal.contenttype.XMLHeadTokenizerConstants;
-
-public class JSPResourceEncodingDetector implements IResourceCharsetDetector {
-
-	private String fCharset;
-
-	private String fContentType;
-
-	private String fContentTypeValue;
-
-	private String fLanguage;
-
-	private String fPageEncodingValue;
-
-	private JSPHeadTokenizer fTokenizer;
-
-	private String fXMLDecEncodingName;
-
-	private boolean unicodeCase;
-
-	private EncodingMemento fEncodingMemento;
-
-	private boolean fHeaderParsed;
-
-	private Reader fReader;
-
-	private boolean fXHTML;
-
-	private boolean fWML;
-
-
-	/**
-	 * No Arg constructor.
-	 */
-	public JSPResourceEncodingDetector() {
-		super();
-	}
-
-	class NullMemento extends EncodingMemento {
-		/**
-		 * 
-		 */
-		public NullMemento() {
-			super();
-			String defaultCharset = NonContentBasedEncodingRules.useDefaultNameRules(null);
-			setJavaCharsetName(defaultCharset);
-			setAppropriateDefault(defaultCharset);
-			setDetectedCharsetName(null);
-		}
-
-	}
-
-	/**
-	 * @return Returns the contentType.
-	 */
-	public String getContentType() throws IOException {
-		ensureInputSet();
-		if (!fHeaderParsed) {
-			parseInput();
-			// we keep track of if header's already been parse, so can make
-			// multiple 'get' calls, without causing reparsing.
-			fHeaderParsed = true;
-			// Note: there is a "hidden assumption" here that an empty
-			// string in content should be treated same as not present.
-		}
-		return fContentType;
-	}
-
-	public String getEncoding() throws IOException {
-		return getEncodingMemento().getDetectedCharsetName();
-	}
-
-	// to ensure consist overall rules used, we'll mark as
-	// final,
-	// and require subclasses to provide certain pieces of
-	// the
-	// implementation
-	public EncodingMemento getEncodingMemento() throws IOException {
-		ensureInputSet();
-		if (!fHeaderParsed) {
-			parseInput();
-			// we keep track of if header's already been
-			// parse, so can make
-			// multiple 'get' calls, without causing
-			// reparsing.
-			fHeaderParsed = true;
-			// Note: there is a "hidden assumption" here
-			// that an empty
-			// string in content should be treated same as
-			// not present.
-		}
-		if (fEncodingMemento == null) {
-			handleSpecDefault();
-		}
-		if (fEncodingMemento == null) {
-			// safty net
-			fEncodingMemento = new NullMemento();
-		}
-		return fEncodingMemento;
-	}
-
-	public String getLanguage() throws IOException {
-		ensureInputSet();
-		if (!fHeaderParsed) {
-			parseInput();
-			fHeaderParsed = true;
-		}
-		return fLanguage;
-	}
-
-	public String getSpecDefaultEncoding() {
-		// by JSP Spec
-		final String enc = "ISO-8859-1"; //$NON-NLS-1$
-		return enc;
-	}
-
-	public EncodingMemento getSpecDefaultEncodingMemento() {
-		resetAll();
-		EncodingMemento result = null;
-		String enc = getSpecDefaultEncoding();
-		if (enc != null) {
-			createEncodingMemento(enc, EncodingMemento.DEFAULTS_ASSUMED_FOR_EMPTY_INPUT);
-			fEncodingMemento.setAppropriateDefault(enc);
-			result = fEncodingMemento;
-		}
-		return result;
-	}
-
-	/**
-	 * 
-	 */
-	public void set(InputStream inputStream) {
-		resetAll();
-		fReader = new ByteReader(inputStream);
-		try {
-			fReader.mark(CodedIO.MAX_MARK_SIZE);
-		}
-		catch (IOException e) {
-			// impossible, since we know ByteReader
-			// supports marking
-			throw new Error(e);
-		}
-	}
-
-	/**
-	 * 
-	 */
-	public void set(IStorage iStorage) throws CoreException {
-		resetAll();
-		InputStream inputStream = iStorage.getContents();
-		InputStream resettableStream = new BufferedInputStream(inputStream, CodedIO.MAX_BUF_SIZE);
-		resettableStream.mark(CodedIO.MAX_MARK_SIZE);
-		set(resettableStream);
-		// TODO we'll need to "remember" IFile, or
-		// get its (or its project's) settings, in case
-		// those are needed to handle cases when the
-		// encoding is not in the file stream.
-	}
-
-	/**
-	 * Note: this is not part of interface to help avoid confusion ... it
-	 * expected this Reader is a well formed character reader ... that is, its
-	 * all ready been determined to not be a unicode marked input stream. And,
-	 * its assumed to be in the correct position, at position zero, ready to
-	 * read first character.
-	 */
-	public void set(Reader reader) {
-		resetAll();
-		fReader = reader;
-		if (!fReader.markSupported()) {
-			fReader = new BufferedReader(fReader);
-		}
-		try {
-			fReader.mark(CodedIO.MAX_MARK_SIZE);
-		}
-		catch (IOException e) {
-			// impossble, since we just checked if markable
-			throw new Error(e);
-		}
-	}
-
-	private boolean canHandleAsUnicodeStream(String tokenType) {
-		boolean canHandleAsUnicode = false;
-		if (tokenType == EncodingParserConstants.UTF83ByteBOM) {
-			canHandleAsUnicode = true;
-			String enc = "UTF-8"; //$NON-NLS-1$
-			createEncodingMemento(enc, EncodingMemento.DETECTED_STANDARD_UNICODE_BYTES);
-			fEncodingMemento.setUTF83ByteBOMUsed(true);
-		}
-		else if (tokenType == EncodingParserConstants.UTF16BE || tokenType == EncodingParserConstants.UTF16LE) {
-			canHandleAsUnicode = true;
-			String enc = "UTF-16"; //$NON-NLS-1$
-			byte[] bom = (tokenType == EncodingParserConstants.UTF16BE) ? IContentDescription.BOM_UTF_16BE : IContentDescription.BOM_UTF_16LE;
-			createEncodingMemento(enc, EncodingMemento.DETECTED_STANDARD_UNICODE_BYTES);
-			fEncodingMemento.setUnicodeStream(true);
-			fEncodingMemento.setUnicodeBOM(bom);
-		}
-		return canHandleAsUnicode;
-	}
-
-	/**
-	 * Note: once this instance is created, trace info still needs to be
-	 * appended by caller, depending on the context its created.
-	 */
-	private void createEncodingMemento(String detectedCharsetName) {
-		fEncodingMemento = new EncodingMemento();
-		fEncodingMemento.setJavaCharsetName(getAppropriateJavaCharset(detectedCharsetName));
-		fEncodingMemento.setDetectedCharsetName(detectedCharsetName);
-		// TODO: if detectedCharset and spec default is
-		// null, need to use "work
-		// bench based" defaults.
-		fEncodingMemento.setAppropriateDefault(getSpecDefaultEncoding());
-	}
-
-	/**
-	 * There can sometimes be mulitple 'encodings' specified in a file. This
-	 * is an attempt to centralize the rules for deciding between them.
-	 * Returns encoding according to priority: 1. XML Declaration 2. page
-	 * directive pageEncoding name 3. page directive contentType charset name
-	 */
-	private String getAppropriateEncoding() {
-		String result = null;
-		if (fXMLDecEncodingName != null)
-			result = fXMLDecEncodingName;
-		else if (fPageEncodingValue != null)
-			result = fPageEncodingValue;
-		else if (fCharset != null)
-			result = fCharset;
-		return result;
-	}
-
-	/**
-	 * This method can return null, if invalid charset name (in which case
-	 * "appropriateDefault" should be used, if a name is really need for some
-	 * "save anyway" cases).
-	 * 
-	 * @param detectedCharsetName
-	 * @return
-	 */
-	private String getAppropriateJavaCharset(String detectedCharsetName) {
-		String result = null;
-		// 1. Check explicit mapping overrides from
-		// property file -- its here we pick up "rules" for cases
-		// that are not even in Java
-		result = CodedIO.checkMappingOverrides(detectedCharsetName);
-		// 2. Use the "canonical" name from JRE mappings
-		// Note: see Charset JavaDoc, the name you get one
-		// with can be alias,
-		// the name you get back is "standard" name.
-		Charset javaCharset = null;
-		try {
-			javaCharset = Charset.forName(detectedCharsetName);
-		}
-		catch (UnsupportedCharsetException e) {
-			// only set invalid, if result is same as detected -- they won't
-			// be equal if
-			// overridden
-			if (result != null && result.equals(detectedCharsetName)) {
-				fEncodingMemento.setInvalidEncoding(detectedCharsetName);
-			}
-		}
-		catch (IllegalCharsetNameException e) {
-			// only set invalid, if result is same as detected -- they won't
-			// be equal if
-			// overridden
-			if (result != null && result.equals(detectedCharsetName)) {
-				fEncodingMemento.setInvalidEncoding(detectedCharsetName);
-			}
-		}
-		// give priority to java cononical name, if present
-		if (javaCharset != null) {
-			result = javaCharset.name();
-			// but still allow overrides
-			result = CodedIO.checkMappingOverrides(result);
-		}
-		return result;
-	}
-
-	private JSPHeadTokenizer getTokinizer() {
-		if (fTokenizer == null) {
-			fTokenizer = new JSPHeadTokenizer();
-		}
-		return fTokenizer;
-	}
-
-	private void handleSpecDefault() {
-		String encodingName;
-		encodingName = getSpecDefaultEncoding();
-		if (encodingName != null) {
-			// createEncodingMemento(encodingName,
-			// EncodingMemento.USED_CONTENT_TYPE_DEFAULT);
-			fEncodingMemento = new EncodingMemento();
-			fEncodingMemento.setJavaCharsetName(encodingName);
-			fEncodingMemento.setAppropriateDefault(encodingName);
-		}
-	}
-
-	private boolean isLegalString(String valueTokenType) {
-		boolean result = false;
-		if (valueTokenType != null) {
-			result = valueTokenType.equals(EncodingParserConstants.StringValue) || valueTokenType.equals(EncodingParserConstants.UnDelimitedStringValue) || valueTokenType.equals(EncodingParserConstants.InvalidTerminatedStringValue) || valueTokenType.equals(EncodingParserConstants.InvalidTermintatedUnDelimitedStringValue);
-		}
-		return result;
-	}
-
-
-	/**
-	 * This method should be exactly the same as what is in 
-	 * JSPHeadTokenizerTester
-	 * @param contentType
-	 */
-	private void parseContentTypeValue(String contentType) {
-		Pattern pattern = Pattern.compile(";\\s*charset\\s*=\\s*"); //$NON-NLS-1$
-		String[] parts = pattern.split(contentType);
-		if (parts.length > 0) {
-			// if only one item, it can still be charset instead of
-			// contentType
-			if (parts.length == 1) {
-				if (parts[0].length() > 6) {
-					String checkForCharset = parts[0].substring(0, 7);
-					if (checkForCharset.equalsIgnoreCase("charset")) { //$NON-NLS-1$
-						int eqpos = parts[0].indexOf('=');
-						eqpos = eqpos + 1;
-						if (eqpos < parts[0].length()) {
-							fCharset = parts[0].substring(eqpos);
-							fCharset = fCharset.trim();
-						}
-					}
-					else {
-						fContentType = parts[0];
-					}
-				}
-			}
-			else {
-				fContentType = parts[0];
-			}
-		}
-		if (parts.length > 1) {
-			fCharset = parts[1];
-		}
-	}
-
-
-	/**
-	 * Looks for what ever encoding properties the tokenizer returns. Its the
-	 * responsibility of the tokenizer to stop when appropriate and not go too
-	 * far.
-	 */
-	private void parseHeader(JSPHeadTokenizer tokenizer) throws Exception {
-		fPageEncodingValue = null;
-		fCharset = null;
-
-		HeadParserToken token = null;
-		do {
-			// don't use 'get' here (at least until reset issue fixed)
-			token = tokenizer.getNextToken();
-			String tokenType = token.getType();
-			if (canHandleAsUnicodeStream(tokenType))
-				unicodeCase = true;
-			else {
-				if (tokenType == XMLHeadTokenizerConstants.XMLDelEncoding) {
-					if (tokenizer.hasMoreTokens()) {
-						HeadParserToken valueToken = tokenizer.getNextToken();
-						String valueTokenType = valueToken.getType();
-						if (isLegalString(valueTokenType)) {
-							fXMLDecEncodingName = valueToken.getText();
-						}
-					}
-				}
-				else if (tokenType == JSPHeadTokenizerConstants.PageEncoding) {
-					if (tokenizer.hasMoreTokens()) {
-						HeadParserToken valueToken = tokenizer.getNextToken();
-						String valueTokenType = valueToken.getType();
-						if (isLegalString(valueTokenType)) {
-							fPageEncodingValue = valueToken.getText();
-						}
-					}
-				}
-				else if (tokenType == JSPHeadTokenizerConstants.PageContentType) {
-					if (tokenizer.hasMoreTokens()) {
-						HeadParserToken valueToken = tokenizer.getNextToken();
-						String valueTokenType = valueToken.getType();
-						if (isLegalString(valueTokenType)) {
-							fContentTypeValue = valueToken.getText();
-						}
-					}
-				}
-				else if (tokenType == JSPHeadTokenizerConstants.PageLanguage) {
-					if (tokenizer.hasMoreTokens()) {
-						HeadParserToken valueToken = tokenizer.getNextToken();
-						String valueTokenType = valueToken.getType();
-						if (isLegalString(valueTokenType)) {
-							fLanguage = valueToken.getText();
-						}
-					}
-				}
-			}
-		}
-		while (tokenizer.hasMoreTokens());
-		if (fContentTypeValue != null) {
-			parseContentTypeValue(fContentTypeValue);
-		}
-		if (tokenizer.isXHTML()) {
-			fXHTML = true;
-		}
-		if (tokenizer.isWML() ) {
-			fWML = true;
-		}
-	}
-
-	private void parseInput() throws IOException {
-		JSPHeadTokenizer tokenizer = getTokinizer();
-		fReader.reset();
-		tokenizer.reset(fReader);
-		try {
-			parseHeader(tokenizer);
-			// unicode stream cases are created directly in parseHeader
-			if (!unicodeCase) {
-				String enc = getAppropriateEncoding();
-				if (enc != null && enc.length() > 0) {
-					createEncodingMemento(enc, EncodingMemento.FOUND_ENCODING_IN_CONTENT);
-				}
-			}
-		} catch (Exception e) {
-			Logger.log(Logger.ERROR_DEBUG, e.getMessage());
-		}
-	}
-
-	/**
-	 * 
-	 */
-	private void resetAll() {
-		fReader = null;
-		fHeaderParsed = false;
-		fEncodingMemento = null;
-		fCharset = null;
-		fContentTypeValue = null;
-		fPageEncodingValue = null;
-		fXMLDecEncodingName = null;
-		unicodeCase = false;
-		fXHTML=false;
-		fWML=false;
-	}
-
-
-
-	/**
-	 * convience method all subclasses can use (but not override)
-	 * 
-	 * @param detectedCharsetName
-	 * @param reason
-	 */
-	private void createEncodingMemento(String detectedCharsetName, String reason) {
-		createEncodingMemento(detectedCharsetName);
-	}
-
-	/**
-	 * convience method all subclasses can use (but not override)
-	 */
-	private void ensureInputSet() {
-		if (fReader == null) {
-			throw new IllegalStateException("input must be set before use"); //$NON-NLS-1$
-		}
-	}
-
-	public boolean isWML() throws IOException {
-		ensureInputSet();
-		if (!fHeaderParsed) {
-			parseInput();
-			// we keep track of if header's already been parse, so can make
-			// multiple 'get' calls, without causing reparsing.
-			fHeaderParsed = true;
-			// Note: there is a "hidden assumption" here that an empty
-			// string in content should be treated same as not present.
-		}
-		return fWML;
-	}
-
-	public boolean isXHTML() throws IOException {
-		ensureInputSet();
-		if (!fHeaderParsed) {
-			parseInput();
-			// we keep track of if header's already been parse, so can make
-			// multiple 'get' calls, without causing reparsing.
-			fHeaderParsed = true;
-			// Note: there is a "hidden assumption" here that an empty
-			// string in content should be treated same as not present.
-		}
-		return fXHTML;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/DocumentFactoryForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/DocumentFactoryForJSP.java
deleted file mode 100644
index fdf9a70..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/DocumentFactoryForJSP.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.document;
-
-import org.eclipse.core.filebuffers.IDocumentFactory;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
-import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.TagMarker;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-
-
-public class DocumentFactoryForJSP implements IDocumentFactory {
-
-	public DocumentFactoryForJSP() {
-		super();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.filebuffers.IDocumentFactory#createDocument()
-	 */
-	public IDocument createDocument() {
-		IStructuredDocument structuredDocument = StructuredDocumentFactory.getNewStructuredDocumentInstance(new JSPSourceParser());
-		return structuredDocument;
-	}
-
-	public RegionParser getParser() {
-		// remember, the Loader
-		// will need to finish initialization of parser
-		// based on "embedded content"
-		JSPSourceParser parser = new JSPSourceParser();
-		// add default nestable tag list
-		addNestablePrefix(parser, JSP11Namespace.JSP_TAG_PREFIX);
-		return parser;
-	}
-
-	private void addNestablePrefix(JSPSourceParser parser, String tagName) {
-		TagMarker bm = new TagMarker(tagName);
-		parser.addNestablePrefix(bm);
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapter.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapter.java
deleted file mode 100644
index d2b321f..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.document;
-
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.EmbeddedTypeHandler;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-
-/**
- * Classes which implement this interface have two responsibilities. 
- * One is to provide
- * and embedded factory registry for JSP Aware INodeAdapter Factories
- * to use. The other is to monitor page directives and if 
- * a change in embedded type is is made, it will signal 
- * the structuredModel that it needs to reinitialize itself.
- */
-public interface PageDirectiveAdapter extends INodeAdapter {
-
-	public String getContentType();
-
-	public String getLanguage();
-
-	/**
-	 * This setter method should be called once, shortly after
-	 * initialization.
-	 */
-	void setEmbeddedType(EmbeddedTypeHandler handler);
-
-	EmbeddedTypeHandler getEmbeddedType();
-
-	/**
-	 * This method is to give this adapter a chance to use
-	 * the AdapterFactories from the EmbeddedTypeHandler
-	 * to adapt the node. Its to be used by JSPAwareAdapterFactories
-	 * to (potentially) adapt nodes from the embedded content type.
-	 */
-	INodeAdapter adapt(INodeNotifier notifier, Object type);
-
-	void addEmbeddedFactory(INodeAdapterFactory factory);
-
-	/**
-	 * Method setLanguage.
-	 * @param language
-	 */
-	void setLanguage(String language);
-
-	INodeNotifier getTarget();
-
-	public void release();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterFactory.java
deleted file mode 100644
index fc986da..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterFactory.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.document;
-
-import org.eclipse.jst.jsp.core.internal.Assert;
-import org.eclipse.wst.sse.core.internal.provisional.AbstractAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.Node;
-
-/**
- * This class adapts document 
- * with the an instance of PageDirectiveAdapter
- */
-public class PageDirectiveAdapterFactory extends AbstractAdapterFactory implements INodeAdapterFactory {
-
-
-	private PageDirectiveAdapter pageDirectiveAdapterInstance = null;
-
-	/**
-	 * Constructor for PageDirectiveAdapterFactory.
-	 * Note: its important not to be a singleton, since
-	 * this factory needs to track its adapter(s) and release
-	 * them when they are released.
-	 * 
-	 * @param adapterKey
-	 * @param registerAdapters
-	 */
-	protected PageDirectiveAdapterFactory(Object adapterKey, boolean registerAdapters) {
-		super(adapterKey, registerAdapters);
-	}
-
-	/**
-	 * The no argument constructor assumes its a 
-	 * Factory for PageDirectiveAdapter
-	 */
-	public PageDirectiveAdapterFactory() {
-		this(PageDirectiveAdapter.class, true);
-	}
-
-	protected INodeAdapter createAdapter(INodeNotifier target) {
-		PageDirectiveAdapter result = null;
-		if (target instanceof IDOMNode) {
-			IDOMNode node = (IDOMNode) target;
-			if (node.getNodeType() == Node.DOCUMENT_NODE) {
-				result = getAdapterInstance(target);
-			}
-
-		}
-		return result;
-	}
-
-	public void release() {
-		if (pageDirectiveAdapterInstance != null) {
-			pageDirectiveAdapterInstance.release();
-		}
-	}
-
-	/**
-	 * We assume this is only called for 'document' target
-	 */
-	protected PageDirectiveAdapter getAdapterInstance(INodeNotifier target) {
-		// if our instance already exists with a different
-		// target, then, somehow, the document node must 
-		// have changed for a model, so we should release 
-		// old adapter and create new one for new document 
-		// node. This is probably a programming error.
-		if (pageDirectiveAdapterInstance != null) {
-			if (target != pageDirectiveAdapterInstance.getTarget()) {
-				release();
-				pageDirectiveAdapterInstance = new PageDirectiveAdapterImpl(target);
-			}
-			// else return the one we have
-		}
-		else {
-			// if is equal to null, create a new one
-			pageDirectiveAdapterInstance = new PageDirectiveAdapterImpl(target);
-		}
-		Assert.isNotNull(pageDirectiveAdapterInstance, "pageDipageDirectiveAdapterInstance was null"); //$NON-NLS-1$
-		return pageDirectiveAdapterInstance;
-	}
-
-	public INodeAdapterFactory copy() {
-
-		return new PageDirectiveAdapterFactory(getAdapterKey(), isShouldRegisterAdapter());
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterImpl.java
deleted file mode 100644
index 026c3a7..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterImpl.java
+++ /dev/null
@@ -1,703 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.document;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentExtension3;
-import org.eclipse.jface.text.IDocumentPartitioner;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentProperties;
-import org.eclipse.jst.jsp.core.internal.modelhandler.EmbeddedTypeStateData;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.IContentDescriptionForJSP;
-import org.eclipse.jst.jsp.core.internal.text.StructuredTextPartitionerForJSP;
-import org.eclipse.wst.html.core.internal.provisional.contenttype.ContentTypeFamilyForHTML;
-import org.eclipse.wst.sse.core.internal.document.DocumentReader;
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.EmbeddedTypeHandler;
-import org.eclipse.wst.sse.core.internal.modelhandler.EmbeddedTypeRegistry;
-import org.eclipse.wst.sse.core.internal.modelhandler.EmbeddedTypeRegistryImpl;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning;
-import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-
-import com.ibm.icu.util.StringTokenizer;
-
-/**
- * This class has the responsibility to provide an embedded factory registry
- * for JSP Aware INodeAdapter Factories to use.
- * 
- * Typically, the embedded type is to be considered a feature of the document,
- * so JSP Aware AdpaterFactories should call
- * getAdapter(PageDirectiveAdapter.class) directoy on the document (or owning
- * document) node.
- */
-public class PageDirectiveAdapterImpl implements PageDirectiveAdapter {
-
-	protected static final String STR_CHARSET = "charset"; //$NON-NLS-1$
-	private final static Object adapterType = PageDirectiveAdapter.class;
-	private IStructuredModel model;
-	protected final String[] JAVASCRIPT_LANGUAGE_KEYS = new String[]{"javascript", "javascript1.0", "javascript1.1_3", "javascript1.2", "javascript1.3", "javascript1.4", "javascript1.5", "javascript1.6", "jscript", "sashscript"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
-	protected final String[] JAVA_LANGUAGE_KEYS = new String[]{"java"}; //$NON-NLS-1$
-
-	/**
-	 * Constructor for PageDirectiveAdapterImpl.
-	 */
-	public PageDirectiveAdapterImpl(INodeNotifier target) {
-		super();
-		notifierAtCreation = target;
-		// we need to remember our instance of model,
-		// in case we need to "signal" a re-init needed.
-		if (target instanceof IDOMNode) {
-			IDOMNode node = (IDOMNode) target;
-			model = node.getModel();
-		}
-
-	}
-
-	/**
-	 * parses the full contentType value into its two parts the contentType,
-	 * and the charset, if present. Note: this method is a lightly modified
-	 * version of a method in AbstractHeadParser. There, we're mostly
-	 * interested in the charset part of contentTypeValue. Here, we're mostly
-	 * interested in the mimeType part.
-	 */
-	private String getMimeTypeFromContentTypeValue(String contentTypeValue) {
-		if (contentTypeValue == null)
-			return null;
-		String cleanContentTypeValue = StringUtils.stripNonLetterDigits(contentTypeValue);
-		StringTokenizer tokenizer = new StringTokenizer(cleanContentTypeValue, ";= \t\n\r\f"); //$NON-NLS-1$
-		int tLen = tokenizer.countTokens();
-		// if contains encoding should have three tokens, the mimetype, the
-		// word 'charset', and the encoding value
-		String[] tokens = new String[tLen];
-		int j = 0;
-		while (tokenizer.hasMoreTokens()) {
-			tokens[j] = tokenizer.nextToken();
-			j++;
-		}
-		// 
-		// Following is the common form for target expression
-		// <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-		// But apparrently is also valid without the content type there,
-		// just the charset, as follows:
-		// <META http-equiv="Content-Type" content="charset=UTF-8">
-		// So we'll loop through tokens and key off of 'charset'
-
-		int charsetPos = -1;
-		for (int i = 0; i < tokens.length; i++) {
-			if (tokens[i].equalsIgnoreCase(STR_CHARSET)) {
-				charsetPos = i;
-				break;
-			}
-		}
-		// String charset = null;
-		String contentType = null;
-		if (charsetPos > -1) {
-			// case where charset was present
-			// int charsetValuePos = charsetPos + 1;
-			// if (charsetValuePos < tokens.length) {
-			// charset = tokens[charsetValuePos];
-			// }
-			int contentTypeValuePos = charsetPos - 1;
-			if (contentTypeValuePos > -1) {
-				contentType = tokens[contentTypeValuePos];
-			}
-		}
-		else {
-			// charset was not present, so if there's
-			// a value, we assume its the contentType value
-			if (tokens.length > 0) {
-				contentType = tokens[0];
-			}
-		}
-		return contentType;
-	}
-
-	private EmbeddedTypeHandler embeddedTypeHandler;
-	private List embeddedFactoryRegistry = new ArrayList();
-	private String cachedLanguage;
-	private String cachedContentType;
-	private INodeNotifier notifierAtCreation;
-
-	private int firstLanguagePosition = -1;
-	private int firstContentTypePosition = -1;
-
-	/*
-	 * @see INodeAdapter#isAdapterForType(Object)
-	 */
-	public boolean isAdapterForType(Object type) {
-		return (type == adapterType);
-	}
-
-	/*
-	 * @see INodeAdapter#notifyChanged(INodeNotifier, int, Object, Object,
-	 *      Object, int)
-	 */
-	public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
-	}
-
-	public void setEmbeddedType(EmbeddedTypeHandler handler) {
-		// if really the same handler, no need for further processing
-		if (embeddedTypeHandler == handler) {
-			return;
-		}
-		// then one exists, and the new one is truely different, so we need to
-		// release and remove current factories
-		if (embeddedTypeHandler != null) {
-			Iterator list = embeddedFactoryRegistry.iterator();
-			while (list.hasNext()) {
-				INodeAdapterFactory factory = (INodeAdapterFactory) list.next();
-				factory.release();
-			}
-
-			embeddedFactoryRegistry.clear();
-		}
-
-		embeddedTypeHandler = handler;
-		// when the handler is set, "transfer" its factories to our own list.
-		// note: our own list may also be added to else where, such as on
-		// "editor side".
-		if (embeddedTypeHandler != null) {
-			Iterator iterator = embeddedTypeHandler.getAdapterFactories().iterator();
-			while (iterator.hasNext()) {
-				INodeAdapterFactory factory = (INodeAdapterFactory) iterator.next();
-				embeddedFactoryRegistry.add(factory);
-			}
-		}
-	}
-
-	/**
-	 * @see PageDirectiveAdapter#adapt(INodeNotifier, Object)
-	 */
-	public INodeAdapter adapt(INodeNotifier notifier, Object type) {
-		INodeAdapter result = null;
-		// if embeddedContentType hasn't been set,
-		// then we can not adapt it.
-		if (embeddedTypeHandler != null) {
-			if (embeddedFactoryRegistry != null) {
-				Iterator iterator = embeddedFactoryRegistry.iterator();
-				INodeAdapterFactory factory = null;
-				while (iterator.hasNext()) {
-					factory = (INodeAdapterFactory) iterator.next();
-					if (factory.isFactoryForType(type)) {
-						result = factory.adapt(notifier);
-						break;
-					}
-				}
-			}
-		}
-		return result;
-
-	}
-
-	/**
-	 * @see PageDirectiveAdapter#getEmbeddedType()
-	 */
-	public EmbeddedTypeHandler getEmbeddedType() {
-		if (embeddedTypeHandler == null) {
-			embeddedTypeHandler = getDefaultEmbeddedType();
-		}
-		return embeddedTypeHandler;
-	}
-
-	public void addEmbeddedFactory(INodeAdapterFactory factory) {
-		// should we check if already exists in list?
-		embeddedFactoryRegistry.add(factory);
-	}
-
-	// /**
-	// * Used by PageDirectiveWatchers to signal that some important attribute
-	// has changed, and
-	// * any cached values should be re-calcuated
-	// */
-	// void changed() {
-	// // we won't actually check if change is needed, if the model state is
-	// already changing.
-	// if (!model.isReinitializationNeeded()) {
-	// // go through our list of page watcher adapters, and updates the
-	// attributes
-	// // we're interested in, if and only if they are the earliest occurance
-	// in the resource
-	// String potentialContentType = null;
-	// String potentialLanguage = null;
-	// int contentTypePosition = -1;
-	// int languagePosition = -1;
-	// Iterator iterator = pageDirectiveWatchers.iterator();
-	// while (iterator.hasNext()) {
-	// PageDirectiveWatcher pdWatcher = (PageDirectiveWatcher)
-	// iterator.next();
-	// String contentType = pdWatcher.getContentType();
-	// String language = pdWatcher.getLanguage();
-	// int offset = pdWatcher.getOffset();
-	// if (potentialContentType == null || (hasValue(contentType) && (offset <
-	// contentTypePosition))) {
-	// potentialContentType = contentType;
-	// contentTypePosition = offset;
-	// }
-	// }
-	// // now we have the best candiates for cached values, let's see if
-	// they've really changed from
-	// // what we had. If so, note we go through the setters so side effects
-	// can take place there.
-	// potentialContentType =
-	// getMimeTypeFromContentTypeValue(potentialContentType);
-	// if (potentialContentType == null || potentialContentType.length() == 0)
-	// {
-	// //potentialContentType = getDefaultContentType();
-	// } else {
-	// setCachedContentType(potentialContentType);
-	// }
-	//
-	// if (potentialLanguage != null && hasValue(potentialLanguage)) {
-	// setCachedLanguage(potentialLanguage);
-	// }
-	// }
-	// }
-	void changedContentType(int elementOffset, String newValue) {
-		// only need to process if this new value is
-		// earlier in the file than our current value
-		if (firstContentTypePosition == -1 || elementOffset <= firstContentTypePosition) {
-			// dw_TODO: update embedded partitioner in JSP document
-			// partitioner
-			// nsd_TODO: update embedded partitioner in JSP document
-			// partitioner
-
-			// no need to change current value, if we're told some
-			// earlier value is null or blank (sounds like an error, anyway)
-			if (hasValue(newValue)) {
-				firstContentTypePosition = elementOffset;
-				String potentialContentType = getMimeTypeFromContentTypeValue(newValue);
-				// only do the set processing if different
-				// from what it already is
-				// if (!potentialContentType.equalsIgnoreCase(cachedLanguage))
-				// {
-				setCachedContentType(potentialContentType);
-				// }
-			}
-		}
-	}
-
-	/**
-	 * Used by PageDirectiveWatchers to signal that some important attribute
-	 * has changed, and any cached values should be re-calcuated
-	 */
-	void changedLanguage(int elementOffset, String newValue) {
-		// only need to process if this new value is
-		// earlier in the file than our current value
-		// has to be less than or equal to, in case our previous earliest one,
-		// is itself changing!
-		if (firstLanguagePosition == -1 || elementOffset <= firstLanguagePosition) {
-
-			// no need to change current value, if we're told some
-			// earlier value is null or blank (sounds like an error, anyway)
-			if (hasValue(newValue)) {
-				firstLanguagePosition = elementOffset;
-				// only do the set processing if different
-				// from what it already is
-				if (!newValue.equalsIgnoreCase(cachedLanguage)) {
-					setCachedLanguage(newValue);
-				}
-			}
-
-			// dw_TODO: set language in document partitioner
-			// nsd_TODO: set language in document partitioner
-		}
-	}
-
-	/**
-	 * Used by PageDirectiveWatchers to signal that some important attribute
-	 * has changed, and any cached values should be re-calcuated
-	 */
-	void changedPageEncoding(int elementOffset, String newValue) {
-
-		// we don't currently track active value, since
-		// just need during read and write (where its
-		// calculated. We will need in future, to
-		// acurately clone a model and to display
-		// "current encoding" to user in status bar.
-	}
-
-	/**
-	 * Method hasValue.
-	 * 
-	 * @param contentType
-	 * @return boolean
-	 */
-	private boolean hasValue(String value) {
-		if (value != null && value.length() > 0)
-			return true;
-		else
-			return false;
-	}
-
-	/**
-	 * Returns the cachedContentType.
-	 * 
-	 * @return String
-	 */
-	public String getContentType() {
-		if (cachedContentType == null) {
-			cachedContentType = getDefaultContentType();
-		}
-		return cachedContentType;
-	}
-
-	/**
-	 * Method getDefaultContentType.
-	 * 
-	 * @return String
-	 */
-	private String getDefaultContentType() {
-		String type = null;
-		IFile file = getFile(model);
-		if (file != null) {
-			type = JSPFContentProperties.getProperty(JSPFContentProperties.JSPCONTENTTYPE, file, true);
-		}
-		// BUG136468
-		if (type == null)
-			type = "text/html"; //$NON-NLS-1$
-		return type;
-	}
-
-	/**
-	 * Returns the cachedLanguage.
-	 * 
-	 * @return String
-	 */
-	public String getLanguage() {
-		if (cachedLanguage == null)
-			cachedLanguage = getDefaultLanguage();
-		return cachedLanguage;
-	}
-
-	/**
-	 * Method getDefaultLanguage.
-	 * 
-	 * @return String
-	 */
-	private String getDefaultLanguage() {
-		String language = null;
-		IFile file = getFile(model);
-		if (file != null) {
-			language = JSPFContentProperties.getProperty(JSPFContentProperties.JSPLANGUAGE, file, true);
-		}
-		// BUG136468
-		if (language == null)
-			language = "java"; //$NON-NLS-1$
-		return language;
-	}
-
-	/**
-	 * Sets the cachedContentType.
-	 * 
-	 * @param cachedContentType
-	 *            The cachedContentType to set
-	 */
-	public void setCachedContentType(String newContentType) {
-		/*
-		 * if the passed in value is the same as existing, there's nothing to
-		 * do. if its different, then we need to change the contentHandler as
-		 * well and, more to the point, signal a re-initializtation is needed.
-		 * 
-		 * Note: if the value we're getting set to does not have a handler in
-		 * the registry, we'll actually not set it to null or anything, we'll
-		 * just continue on with the one we have. This is pretty important to
-		 * avoid re-initializing on every key stroke if someone is typing in a
-		 * new content type, but haven't yet finished the whole "word".
-		 * However, if an contentType is not recognized, the registry returns
-		 * the one for XML.
-		 */
-		
-		/* set the actual value first, the rest is "side effect" */
-		this.cachedContentType = newContentType;
-
-		/* see if we need to update embedded handler */
-
-		/*
-		 * If the document is a type of XHTML, we do not use the page
-		 * directive's contentType to determine the embedded type ... its
-		 * XHTML! ... and, eventually, the DOCTYPE adapter should determine
-		 * if/when it needs to change.
-		 */
-
-		/* just safety check, can be removed later, early in release cycle */
-		if (model == null) {
-			// throw IllegalStateException("model should never be null in
-			// PageDirective Adapter");
-			Logger.log(Logger.ERROR, "model should never be null in PageDirective Adapter");
-			return;
-		}
-
-		EmbeddedTypeHandler potentialNewandler = null;
-		IContentDescription contentDescription = getContentDescription(model.getStructuredDocument());
-		Object prop = contentDescription.getProperty(IContentDescriptionForJSP.CONTENT_FAMILY_ATTRIBUTE);
-		if (prop != null) {
-			if (ContentTypeFamilyForHTML.HTML_FAMILY.equals(prop)) {
-				potentialNewandler = EmbeddedTypeRegistryImpl.getInstance().getTypeFor("text/html");
-			}
-		}
-
-		if (potentialNewandler == null) {
-			/*
-			 * getHandler should always return something (never null), based
-			 * on the rules in the factory.
-			 */
-			potentialNewandler = getHandlerFor(this.cachedContentType);
-		}
-		/*
-		 * we do this check for re-init here, instead of in setEmbeddedType,
-		 * since setEmbeddedType is called during the normal initializtion
-		 * process, when re-init is not needed (since there is no content)
-		 */
-		if (embeddedTypeHandler == null) {
-			setEmbeddedType(potentialNewandler);
-		}
-		else if (potentialNewandler != null && embeddedTypeHandler != potentialNewandler) {
-			/*
-			 * changing this embedded handler here may be in the middle of a
-			 * notify loop. That's why we set that "it's needed". Then the
-			 * model decides when its "safe" to actually do the re-init.
-			 * 
-			 * be sure to hold oldHandler in temp var or else setEmbeddedType
-			 * will "reset" it before modelReinitNeeded(oldHandler, handler)
-			 * is called
-			 * 
-			 */
-			EmbeddedTypeHandler oldHandler = embeddedTypeHandler;
-			setEmbeddedType(potentialNewandler);
-			modelReinitNeeded(oldHandler, potentialNewandler);
-		}
-
-	}
-
-	/**
-	 * This method is used to re-init based on embeddedTypeHandler changing.
-	 * It is given priority over the language change, since there its more
-	 * important to have old and new handlers's in the stateData field.
-	 */
-	private void modelReinitNeeded(EmbeddedTypeHandler oldHandler, EmbeddedTypeHandler newHandler) {
-		if (model.isReinitializationNeeded()) {
-			System.out.println("already being initialized"); //$NON-NLS-1$
-		}
-
-		try {
-			model.aboutToChangeModel();
-			model.setReinitializeStateData(new EmbeddedTypeStateData(oldHandler, newHandler));
-			model.setReinitializeNeeded(true);
-		}
-		finally {
-			model.changedModel();
-		}
-	}
-
-	/**
-	 * Method modelReinitNeeded.
-	 */
-	private void modelReinitNeeded(String oldlanguage, String newLanguage) {
-		// bit of a short cut for now .... we dont' need language at the
-		// moment,
-		// but should set the state data
-		if (model.isReinitializationNeeded()) {
-			if (Debug.displayWarnings) {
-				System.out.println("already being initialized"); //$NON-NLS-1$
-			}
-		}
-		else {
-			try {
-				// if already being re-initialized, we don't want to
-				// reset the data in the stateData field.
-				model.aboutToChangeModel();
-				model.setReinitializeStateData(newLanguage);
-				model.setReinitializeNeeded(true);
-			}
-			finally {
-				model.changedModel();
-			}
-		}
-	}
-
-	public void setCachedLanguage(String newLanguage) {
-		if (cachedLanguage != null && languageStateChanged(cachedLanguage, newLanguage)) {
-			/*
-			 * a complete re-init overkill in current system, since really
-			 * just need for the line style providers, BUT, a change in
-			 * language could effect other things, and we don't expect to
-			 * happen often so a little overkill isn't too bad. The deep
-			 * problem is that there is no way to get at the "edit side"
-			 * adpapters specifically here in model class. we have to do the
-			 * model changed sequence to get the screen to update. do not
-			 * signal again, if signaled once (the reinit state data will be
-			 * wrong. (this needs to be improved in future)
-			 */
-			if (!model.isReinitializationNeeded()) {
-				modelReinitNeeded(cachedLanguage, newLanguage);
-			}
-		}
-		setLanguage(newLanguage);
-	}
-
-	/**
-	 * This is public access method, used especially from loader, for JSP
-	 * Fragment support.
-	 */
-	public void setLanguage(String newLanguage) {
-		this.cachedLanguage = newLanguage;
-		IDocumentPartitioner partitioner = ((IDocumentExtension3) model.getStructuredDocument()).getDocumentPartitioner(IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING);
-		if (partitioner instanceof StructuredTextPartitionerForJSP) {
-			((StructuredTextPartitionerForJSP) partitioner).setLanguage(newLanguage);
-		}
-	}
-
-	/**
-	 * Method languageStateChange.
-	 * 
-	 * @param cachedLanguage
-	 * @param newLanguage
-	 * @return boolean
-	 */
-	private boolean languageStateChanged(String cachedLanguage, String newLanguage) {
-		boolean result = false; // languages are equal, then no change in
-		// state
-		if (!cachedLanguage.equalsIgnoreCase(newLanguage)) {
-			boolean oldLanguageKnown = languageKnown(cachedLanguage);
-			boolean newLanguageKnown = languageKnown(newLanguage);
-			result = newLanguageKnown || (!newLanguageKnown && oldLanguageKnown);
-		}
-		return result;
-	}
-
-	/**
-	 * Method languageKnown.
-	 * 
-	 * @param cachedLanguage
-	 * @return boolean
-	 */
-	private boolean languageKnown(String language) {
-		return (StringUtils.contains(JAVA_LANGUAGE_KEYS, language, false) || StringUtils.contains(JAVASCRIPT_LANGUAGE_KEYS, language, false));
-	}
-
-	private IFile getFile(IStructuredModel model) {
-		String location = model.getBaseLocation();
-		if (location != null) {
-			IPath path = new Path(location);
-			if (path.segmentCount() > 1) {
-				return ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-			}
-		}
-		return null;
-	}
-
-	private EmbeddedTypeHandler getHandlerFor(String contentType) {
-		EmbeddedTypeRegistry reg = getEmbeddedContentTypeRegistry();
-		EmbeddedTypeHandler handler = null;
-		if (reg != null)
-			handler = reg.getTypeFor(contentType);
-		return handler;
-	}
-
-	/**
-	 * Gets the embeddedContentTypeRegistry.
-	 * 
-	 * @return Returns a EmbeddedContentTypeRegistry
-	 */
-	private EmbeddedTypeRegistry getEmbeddedContentTypeRegistry() {
-		return EmbeddedTypeRegistryImpl.getInstance();
-	}
-
-	/**
-	 * For JSP files, text/html is the default content type. This may want
-	 * this different for types like jsv (jsp for voice xml) For now, hard
-	 * code to new instance. In future, should get instance from registry.
-	 * 
-	 * Specification cites HTML as the default contentType.
-	 */
-	protected EmbeddedTypeHandler getDefaultEmbeddedType() {
-		return getHandlerFor(getDefaultContentType());
-	}
-
-	public INodeNotifier getTarget() {
-		return notifierAtCreation;
-	}
-
-	public void release() {
-		if (embeddedTypeHandler != null) {
-			if (embeddedFactoryRegistry != null) {
-				Iterator iterator = embeddedFactoryRegistry.iterator();
-				INodeAdapterFactory factory = null;
-				while (iterator.hasNext()) {
-					factory = (INodeAdapterFactory) iterator.next();
-					factory.release();
-				}
-			}
-			// pa_TODO: possibly need to release here...
-			// or "uninitializeFactoryRegistry"
-			// initializeFactoryRegistry was called from JSPModelLoader
-			embeddedTypeHandler = null;
-		}
-	}
-
-	private IContentDescription getContentDescription(IDocument doc) {
-		if (doc == null)
-			return null;
-		DocumentReader in = new DocumentReader(doc);
-		return getContentDescription(in);
-	}
-
-	/**
-	 * Returns content description for an input stream Assumes it's JSP
-	 * content. Closes the input stream when finished.
-	 * 
-	 * @param in
-	 * @return the IContentDescription for in, or null if in is null
-	 */
-	private IContentDescription getContentDescription(Reader in) {
-
-		if (in == null)
-			return null;
-
-		IContentDescription desc = null;
-		try {
-
-			IContentType contentTypeJSP = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-			desc = contentTypeJSP.getDescriptionFor(in, IContentDescription.ALL);
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		finally {
-			try {
-				in.close();
-			}
-			catch (IOException e) {
-				Logger.logException(e);
-			}
-		}
-		return desc;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcher.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcher.java
deleted file mode 100644
index b443a8a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcher.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.document;
-
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-
-interface PageDirectiveWatcher extends INodeAdapter {
-
-	String getContentType();
-
-	String getLanguage();
-
-	int getOffset();
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java
deleted file mode 100644
index 1fbb07a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.document;
-
-import org.eclipse.wst.sse.core.internal.PropagatingAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.xml.core.internal.propagate.PropagatingAdapterFactoryImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.w3c.dom.Node;
-
-public class PageDirectiveWatcherFactory extends PropagatingAdapterFactoryImpl implements PropagatingAdapterFactory {
-
-	/**
-	 * Constructor for PageDirectiveWatcherFactory.
-	 */
-	public PageDirectiveWatcherFactory() {
-		this(PageDirectiveWatcher.class, true);
-	}
-
-	/**
-	 * Constructor for PageDirectiveWatcherFactory.
-	 * 
-	 * @param adapterKey
-	 * @param registerAdapters
-	 */
-	public PageDirectiveWatcherFactory(Object adapterKey, boolean registerAdapters) {
-		super(adapterKey, registerAdapters);
-	}
-
-	protected INodeAdapter createAdapter(INodeNotifier target) {
-		PageDirectiveWatcher result = null;
-		if (target instanceof IDOMElement) {
-			IDOMElement xmlElement = (IDOMElement) target;
-			if (xmlElement.getNodeType() == Node.ELEMENT_NODE) {
-				String nodeName = xmlElement.getNodeName();
-				if (nodeName.equals("jsp:directive.page")) { //$NON-NLS-1$
-					result = new PageDirectiveWatcherImpl(xmlElement);
-				}
-
-			}
-		}
-		return result;
-
-	}
-
-public INodeAdapterFactory copy() {
-		return new PageDirectiveWatcherFactory(getAdapterKey(), isShouldRegisterAdapter());
-	}}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherImpl.java
deleted file mode 100644
index 5058785..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveWatcherImpl.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.document;
-
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.xml.core.internal.document.AttrImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-
-
-
-/** 
- * The responsibility of this class is to monitor page directives and if 
- * a change in embedded type is is made, it will signal 
- * the structuredModel that it needs to reinitialize itself.
- */
-class PageDirectiveWatcherImpl implements PageDirectiveWatcher {
-
-	private static Object adapterType = PageDirectiveWatcher.class;
-	IDOMElement targetElement;
-
-	/**
-	 * Constructor for PageDirectiveWatcherImpl.
-	 */
-	public PageDirectiveWatcherImpl(IDOMElement target) {
-		super();
-		targetElement = target;
-		String contentTypeValue = target.getAttribute("contentType"); //$NON-NLS-1$
-		if (contentTypeValue != null) {
-			// using concrete class below, since "changed" is something of an internal method
-			PageDirectiveAdapterImpl pageDirectiveAdapter = (PageDirectiveAdapterImpl) ((IDOMDocument) targetElement.getOwnerDocument()).getAdapterFor(PageDirectiveAdapter.class);
-			pageDirectiveAdapter.changedContentType(((IndexedRegion) targetElement).getStartOffset(), contentTypeValue);
-		}
-		String languageValue = target.getAttribute("language"); //$NON-NLS-1$
-		if (languageValue != null) {
-			// using concrete class below, since "changed" is something of an internal method
-			PageDirectiveAdapterImpl pageDirectiveAdapter = (PageDirectiveAdapterImpl) ((IDOMDocument) targetElement.getOwnerDocument()).getAdapterFor(PageDirectiveAdapter.class);
-			pageDirectiveAdapter.changedLanguage(((IndexedRegion) targetElement).getStartOffset(), languageValue);
-		}
-
-
-	}
-
-	public boolean isAdapterForType(Object type) {
-		return (type == adapterType);
-	}
-
-	public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
-		// we should only be added to page directives, so if we see a page directive
-		// change, we need to check its attributes, and notify the PageDirectiveAdapter when 
-		// certain ones chane, so it can make its "centralized" decisions.
-		if (notifier instanceof IDOMNode) {
-
-			switch (eventType) {
-				case INodeNotifier.CHANGE :
-					if (changedFeature instanceof AttrImpl) {
-						AttrImpl attribute = (AttrImpl) changedFeature;
-						String name = attribute.getName();
-						if (name.equals("contentType")) { //$NON-NLS-1$
-							// using concrete class below, since "changed" is something of an internal method
-							PageDirectiveAdapterImpl pageDirectiveAdapter = (PageDirectiveAdapterImpl) ((IDOMDocument) targetElement.getOwnerDocument()).getAdapterFor(PageDirectiveAdapter.class);
-							pageDirectiveAdapter.changedContentType(((IndexedRegion) targetElement).getStartOffset(), (String) newValue);
-						}
-						if (name.equals("language")) { //$NON-NLS-1$ //$NON-NLS-2$
-							// using concrete class below, since "changed" is something of an internal method
-							PageDirectiveAdapterImpl pageDirectiveAdapter = (PageDirectiveAdapterImpl) ((IDOMDocument) targetElement.getOwnerDocument()).getAdapterFor(PageDirectiveAdapter.class);
-							pageDirectiveAdapter.changedLanguage(((IndexedRegion) targetElement).getStartOffset(), (String) newValue);
-						}
-					}
-
-					break;
-				case INodeNotifier.REMOVE :
-					//System.out.println("removed"+new Date().toString());
-					break;
-
-
-				default :
-					break;
-			}
-		}
-
-	}
-
-	public String getContentType() {
-		String contentTypeValue = targetElement.getAttribute("contentType"); //$NON-NLS-1$
-		return contentTypeValue;
-	}
-
-	public String getLanguage() {
-		String languageValue = targetElement.getAttribute("language"); //$NON-NLS-1$
-		return languageValue;
-	}
-
-	public int getOffset() {
-		return targetElement.getStartOffset();
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java
deleted file mode 100644
index ff30c55..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/AttrImplForJSP.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.domdocument;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.xml.core.internal.document.AttrImpl;
-import org.w3c.dom.Document;
-
-public class AttrImplForJSP extends AttrImpl {
-
-	protected boolean isNestedLanguageOpening(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == DOMJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN;
-		return result;
-	}
-	protected void setOwnerDocument(Document ownerDocument) {
-		super.setOwnerDocument(ownerDocument);
-	}
-	protected void setName(String name) {
-		super.setName(name);
-	}
-	protected void setNamespaceURI(String namespaceURI) {
-		super.setNamespaceURI(namespaceURI);
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java
deleted file mode 100644
index c9ccc58..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/CommentImplForJSP.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.domdocument;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.xml.core.internal.document.CommentImpl;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-/**
- * CommentImplForJSP
- */
-public class CommentImplForJSP extends CommentImpl {
-	protected CommentImplForJSP() {
-		super();
-	}
-
-	protected CommentImplForJSP(CommentImpl that) {
-		super(that);
-	}
-
-	protected boolean isNestedCommentClose(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_COMMENT_CLOSE;
-		return result;
-	}
-
-	protected boolean isNestedCommentOpenClose(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_COMMENT_OPEN || regionType == DOMJSPRegionContexts.JSP_COMMENT_CLOSE;
-		return result;
-	}
-
-	protected void setOwnerDocument(Document ownerDocument) {
-		super.setOwnerDocument(ownerDocument);
-	}
-	
-	public Node cloneNode(boolean deep) {
-		CommentImpl cloned = new CommentImplForJSP(this);
-		return cloned;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java
deleted file mode 100644
index 23a8baa..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMDocumentForJSP.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.domdocument;
-
-import org.eclipse.wst.html.core.internal.document.DocumentStyleImpl;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Comment;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-
-public class DOMDocumentForJSP extends DocumentStyleImpl {
-
-	/**
-	 * 
-	 */
-	public DOMDocumentForJSP() {
-		super();
-	}
-
-	/**
-	 * @param that
-	 */
-	protected DOMDocumentForJSP(DocumentImpl that) {
-		super(that);
-	}
-	/**
-	 * cloneNode method
-	 * @return org.w3c.dom.Node
-	 * @param deep boolean
-	 */
-	public Node cloneNode(boolean deep) {
-		DOMDocumentForJSP cloned = new DOMDocumentForJSP(this);
-		if (deep)
-			cloned.importChildNodes(this, true);
-		return cloned;
-	}
-	/**
-	 * createElement method
-	 * 
-	 * @return org.w3c.dom.Element
-	 * @param tagName
-	 *            java.lang.String
-	 */
-	public Element createElement(String tagName) throws DOMException {
-		checkTagNameValidity(tagName);
-
-		ElementImplForJSP element = new ElementImplForJSP();
-		element.setOwnerDocument(this);
-		element.setTagName(tagName);
-		return element;
-	}
-	/**
-	 * createComment method
-	 * 
-	 * @return org.w3c.dom.Comment
-	 * @param data
-	 *            java.lang.String
-	 */
-	public Comment createComment(String data) {
-		CommentImplForJSP comment = new CommentImplForJSP();
-		comment.setOwnerDocument(this);
-		if (data != null)
-			comment.setData(data);
-		return comment;
-	}
-
-	/**
-	 * createAttribute method
-	 * 
-	 * @return org.w3c.dom.Attr
-	 * @param name
-	 *            java.lang.String
-	 */
-	public Attr createAttribute(String name) throws DOMException {
-		AttrImplForJSP attr = new AttrImplForJSP();
-		attr.setOwnerDocument(this);
-		attr.setName(name);
-		return attr;
-	}
-
-	/**
-	 */
-	public Attr createAttributeNS(String uri, String name) throws DOMException {
-		AttrImplForJSP attr = new AttrImplForJSP();
-		attr.setOwnerDocument(this);
-		attr.setName(name);
-		attr.setNamespaceURI(uri);
-		return attr;
-	}
-	/**
-	 * createTextNode method
-	 * 
-	 * @return org.w3c.dom.Text
-	 * @param data
-	 *            java.lang.String
-	 */
-	public Text createTextNode(String data) {
-		TextImplForJSP text = new TextImplForJSP();
-		text.setOwnerDocument(this);
-		text.setData(data);
-		return text;
-	}
-	protected void setModel(IDOMModel model) {
-		super.setModel(model);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java
deleted file mode 100644
index dcc8ce2..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/DOMModelForJSP.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.domdocument;
-
-import org.eclipse.wst.html.core.internal.document.DOMStyleModelImpl;
-import org.eclipse.wst.xml.core.internal.document.XMLModelParser;
-import org.eclipse.wst.xml.core.internal.document.XMLModelUpdater;
-import org.w3c.dom.Document;
-
-public class DOMModelForJSP extends DOMStyleModelImpl {
-
-	/**
-	 * 
-	 */
-	public DOMModelForJSP() {
-		super();
-		// remember, the document is created in super constructor, 
-		// via internalCreateDocument
-	}
-	/**
-	 * createDocument method
-	 * @return org.w3c.dom.Document
-	 */
-	protected Document internalCreateDocument() {
-		DOMDocumentForJSP document = new DOMDocumentForJSP();
-		document.setModel(this);
-		return document;
-	}
-	protected XMLModelParser createModelParser() {
-		return new NestedDOMModelParser(this);
-	}
-	protected XMLModelUpdater createModelUpdater() {
-		return new NestDOMModelUpdater(this);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java
deleted file mode 100644
index 2969129..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/ElementImplForJSP.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.domdocument;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.html.core.internal.document.ElementStyleImpl;
-import org.eclipse.wst.xml.core.internal.document.ElementImpl;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-public class ElementImplForJSP extends ElementStyleImpl {
-	/**
-	 * 
-	 */
-	public ElementImplForJSP() {
-		super();
-	}
-
-	/**
-	 * @param that
-	 */
-	public ElementImplForJSP(ElementImpl that) {
-		super(that);
-	}
-
-	protected boolean isNestedEndTag(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME || regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME;
-		return result;
-	}
-
-	protected boolean isNestedClosed(String regionType) {
-		boolean result = (regionType == DOMJSPRegionContexts.JSP_CLOSE || regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE);
-		return result;
-	}
-
-	protected boolean isNestedClosedComment(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_COMMENT_CLOSE;
-		return result;
-	}
-
-	protected boolean isClosedNestedDirective(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE;
-		return result;
-	}
-
-	protected void setOwnerDocument(Document ownerDocument) {
-		super.setOwnerDocument(ownerDocument);
-	}
-
-	protected void setTagName(String tagName) {
-		super.setTagName(tagName);
-	}
-	public Node cloneNode(boolean deep) {
-		ElementImpl cloned = new ElementImplForJSP(this);
-		if (deep)
-			cloneChildNodes(cloned, deep);
-		return cloned;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java
deleted file mode 100644
index 337d75b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestDOMModelUpdater.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.domdocument;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.xml.core.internal.document.DOMModelImpl;
-import org.eclipse.wst.xml.core.internal.document.XMLModelUpdater;
-
-
-public class NestDOMModelUpdater extends XMLModelUpdater {
-
-	/**
-	 * @param model
-	 */
-	public NestDOMModelUpdater(DOMModelImpl model) {
-		super(model);
-	}
-
-	protected boolean isNestedTagClose(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_CLOSE || regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE;
-		return result;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java
deleted file mode 100644
index afaa719..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/NestedDOMModelParser.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.domdocument;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.xml.core.internal.document.DOMModelImpl;
-import org.eclipse.wst.xml.core.internal.document.JSPTag;
-import org.eclipse.wst.xml.core.internal.document.XMLModelParser;
-
-public class NestedDOMModelParser extends XMLModelParser {
-
-	/**
-	 * @param model
-	 */
-	public NestedDOMModelParser(DOMModelImpl model) {
-		super(model);
-	}
-
-	protected boolean isNestedCommentOpen(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_COMMENT_OPEN;
-		return result;
-	}
-
-	protected boolean isNestedCommentText(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_COMMENT_TEXT;
-		return result;
-	}
-
-	protected boolean isNestedContent(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_CONTENT;
-		return result;
-	}
-
-	protected boolean isNestedTag(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == DOMJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN || regionType == DOMJSPRegionContexts.JSP_CLOSE;
-		return result;
-	}
-
-	protected boolean isNestedTagName(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME || regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME;
-		return result;
-	}
-	protected boolean isNestedTagOpen(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || regionType == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN || regionType == DOMJSPRegionContexts.JSP_DECLARATION_OPEN || regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN;
-		return result;
-	}
-	protected String computeNestedTag(String regionType, String tagName, IStructuredDocumentRegion structuredDocumentRegion, ITextRegion region) {
-		String resultTagName = tagName;
-		if (regionType == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) {
-			resultTagName = JSPTag.JSP_SCRIPTLET;
-		}
-		else if (regionType == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) {
-			resultTagName = JSPTag.JSP_EXPRESSION;
-		}
-		else if (regionType == DOMJSPRegionContexts.JSP_DECLARATION_OPEN) {
-			resultTagName = JSPTag.JSP_DECLARATION;
-		}
-		else if (regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN) {
-			resultTagName = JSPTag.JSP_DIRECTIVE;
-		}
-		else if (regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-			resultTagName += '.';
-			resultTagName += structuredDocumentRegion.getText(region);
-		}
-		return resultTagName;
-	}
-
-	protected boolean isNestedTagClose(String regionType) {
-		boolean result = regionType == DOMJSPRegionContexts.JSP_CLOSE || regionType == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE;
-		return result;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/TextImplForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/TextImplForJSP.java
deleted file mode 100644
index 1f67f53..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/domdocument/TextImplForJSP.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.domdocument;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.xml.core.internal.document.TextImpl;
-import org.w3c.dom.Document;
-
-public class TextImplForJSP extends TextImpl {
-	protected boolean isNotNestedContent(String regionType) {
-		boolean result = regionType != DOMJSPRegionContexts.JSP_CONTENT;
-		return result;
-	}
-	protected void setOwnerDocument(Document ownerDocument) {
-		super.setOwnerDocument(ownerDocument);
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/IJSPHeadContentDetector.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/IJSPHeadContentDetector.java
deleted file mode 100644
index 291c547..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/IJSPHeadContentDetector.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.encoding;
-
-import java.io.IOException;
-
-import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;
-
-public interface IJSPHeadContentDetector extends IDocumentCharsetDetector {
-	String getContentType() throws IOException;
-
-	String getLanguage() throws IOException;
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentHeadContentDetector.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentHeadContentDetector.java
deleted file mode 100644
index 84c5e7e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentHeadContentDetector.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.encoding;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jst.jsp.core.internal.contenttype.JSPResourceEncodingDetector;
-import org.eclipse.wst.sse.core.internal.document.DocumentReader;
-
-/**
- * This class parses beginning portion of JSP file to get attributes in page
- * directiive
- *  
- */
-public class JSPDocumentHeadContentDetector extends JSPResourceEncodingDetector implements IJSPHeadContentDetector {
-
-	public JSPDocumentHeadContentDetector() {
-		super();
-	}
-
-	public void set(IDocument document) {
-		set(new DocumentReader(document, 0));
-
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentLoader.java
deleted file mode 100644
index 8e1d3cb..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/encoding/JSPDocumentLoader.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.encoding;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.text.IDocumentPartitioner;
-import org.eclipse.jst.jsp.core.internal.Assert;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.document.PageDirectiveWatcherFactory;
-import org.eclipse.jst.jsp.core.internal.parser.JSPReParser;
-import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.jst.jsp.core.internal.text.StructuredTextPartitionerForJSP;
-import org.eclipse.wst.sse.core.internal.PropagatingAdapter;
-import org.eclipse.wst.sse.core.internal.document.AbstractDocumentLoader;
-import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;
-import org.eclipse.wst.sse.core.internal.document.IDocumentLoader;
-import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
-import org.eclipse.wst.sse.core.internal.encoding.CodedIO;
-import org.eclipse.wst.sse.core.internal.encoding.CodedReaderCreator;
-import org.eclipse.wst.sse.core.internal.encoding.ContentTypeEncodingPreferences;
-import org.eclipse.wst.sse.core.internal.encoding.util.BufferedLimitedReader;
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.EmbeddedTypeHandler;
-import org.eclipse.wst.sse.core.internal.ltk.parser.JSPCapableParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.TagMarker;
-import org.eclipse.wst.sse.core.internal.modelhandler.EmbeddedTypeRegistry;
-import org.eclipse.wst.sse.core.internal.modelhandler.EmbeddedTypeRegistryImpl;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.document.IEncodedDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapter;
-import org.w3c.dom.Document;
-
-public class JSPDocumentLoader extends AbstractDocumentLoader {
-	private final static String DEFAULT_MIME_TYPE = "text/html"; //$NON-NLS-1$
-	private final static String SPEC_DEFAULT_ENCODING = "ISO-8859-1"; //$NON-NLS-1$
-
-	protected static IFile getFileFor(IStructuredModel model) {
-		if (model == null)
-			return null;
-		String path = model.getBaseLocation();
-		if (path == null || path.length() == 0) {
-			Object id = model.getId();
-			if (id == null)
-				return null;
-			path = id.toString();
-		}
-		// TODO needs rework for linked resources
-		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-		IFile file = root.getFileForLocation(new Path(path));
-		return file;
-	}
-
-	private EmbeddedTypeRegistry fEmbeddedContentTypeRegistry;
-
-	public JSPDocumentLoader() {
-		super();
-	}
-
-	protected void addNestablePrefix(JSPSourceParser parser, String tagName) {
-		TagMarker bm = new TagMarker(tagName);
-		parser.addNestablePrefix(bm);
-	}
-
-	synchronized public IEncodedDocument createNewStructuredDocument(IFile iFile) throws IOException, CoreException {
-		IStructuredDocument structuredDocument = null;
-		try {
-			structuredDocument = createCodedDocument(iFile);
-
-			EmbeddedTypeHandler embeddedType = getEmbeddedType(iFile);
-			if (embeddedType != null)
-				embeddedType.initializeParser((JSPCapableParser) structuredDocument.getParser());
-
-			fFullPreparedReader.reset();
-			setDocumentContentsFromReader(structuredDocument, fFullPreparedReader);
-
-		}
-		finally {
-			if (fFullPreparedReader != null) {
-				fFullPreparedReader.close();
-			}
-		}
-		return structuredDocument;
-	}
-
-	private IStructuredDocument createCodedDocument(IFile iFile) throws CoreException, UnsupportedEncodingException, IOException {
-		IStructuredDocument structuredDocument = (IStructuredDocument) createNewStructuredDocument();
-
-		getCodedReaderCreator().set(iFile);
-
-		fFullPreparedReader = getCodedReaderCreator().getCodedReader();
-		fEncodingMemento = getCodedReaderCreator().getEncodingMemento();
-
-		structuredDocument.setEncodingMemento(getCodedReaderCreator().getEncodingMemento());
-
-		return structuredDocument;
-	}
-
-	public IEncodedDocument createNewStructuredDocument(String filename, InputStream inputStream) throws UnsupportedEncodingException, IOException {
-		if (filename == null && inputStream == null) {
-			throw new IllegalArgumentException("can not have both null filename and inputstream"); //$NON-NLS-1$
-		}
-		IEncodedDocument structuredDocument = createNewStructuredDocument();
-		CodedReaderCreator codedReaderCreator = new CodedReaderCreator();
-		try {
-			codedReaderCreator.set(filename, inputStream);
-			fFullPreparedReader = codedReaderCreator.getCodedReader();
-			fEncodingMemento = codedReaderCreator.getEncodingMemento();
-			structuredDocument.setEncodingMemento(fEncodingMemento);
-			// the fact that file is null means this method/code path is no
-			// good for JSP fragments
-			EmbeddedTypeHandler embeddedType = getEmbeddedType((IFile) null);
-			fFullPreparedReader.reset();
-			if (embeddedType != null)
-				embeddedType.initializeParser((JSPCapableParser) ((IStructuredDocument) structuredDocument).getParser());
-			setDocumentContentsFromReader(structuredDocument, fFullPreparedReader);
-		}
-		catch (CoreException e) {
-			// impossible in this context
-			throw new Error(e);
-		}
-		finally {
-			if (fFullPreparedReader != null) {
-				fFullPreparedReader.close();
-			}
-		}
-		return structuredDocument;
-
-	}
-
-	/**
-	 * Method getDefaultDocumentPartitioner.
-	 * 
-	 * @return IDocumentPartitioner
-	 */
-	public IDocumentPartitioner getDefaultDocumentPartitioner() {
-		return new StructuredTextPartitionerForJSP();
-	}
-
-	/**
-	 * Method getDefaultMimeType.
-	 * 
-	 * @return String
-	 */
-	private String getDefaultMimeType() {
-		return DEFAULT_MIME_TYPE;
-	}
-
-
-	public IDocumentCharsetDetector getDocumentEncodingDetector() {
-		if (fDocumentEncodingDetector == null) {
-			fDocumentEncodingDetector = new JSPDocumentHeadContentDetector();
-		}
-		return fDocumentEncodingDetector;
-	}
-
-	/**
-	 * Gets the embeddedContentTypeRegistry.
-	 * 
-	 * @return Returns a EmbeddedContentTypeRegistry
-	 */
-	private EmbeddedTypeRegistry getEmbeddedContentTypeRegistry() {
-		if (fEmbeddedContentTypeRegistry == null) {
-			fEmbeddedContentTypeRegistry = EmbeddedTypeRegistryImpl.getInstance();
-		}
-		return fEmbeddedContentTypeRegistry;
-	}
-
-	/**
-	 * Determine the MIME content type specified in a page directive. This
-	 * should appear "as early as possible in the JSP page" according to the
-	 * JSP v1.2 specification.
-	 */
-	private EmbeddedTypeHandler getEmbeddedType(IFile file) throws UnsupportedEncodingException, CoreException, IOException {
-		EmbeddedTypeHandler handler = null;
-		if (fFullPreparedReader == null) {
-			handler = getJSPDefaultEmbeddedType();
-		}
-		else {
-			String mimeType = null;
-
-			IDocumentCharsetDetector jspProvider = getDocumentEncodingDetector();
-			Reader fullPreparedReader = getFullPreparedReader();
-			BufferedLimitedReader limitedReader = new BufferedLimitedReader(fullPreparedReader, CodedIO.MAX_BUF_SIZE);
-			jspProvider.set(limitedReader);
-			if (jspProvider instanceof IJSPHeadContentDetector) {
-				mimeType = ((IJSPHeadContentDetector) jspProvider).getContentType();
-				fullPreparedReader.reset();
-			}
-
-			EmbeddedTypeRegistry reg = getEmbeddedContentTypeRegistry();
-			if (mimeType == null || mimeType.length() == 0) {
-				handler = getJSPDefaultEmbeddedType();
-			}
-			else {
-				handler = reg.getTypeFor(mimeType);
-			}
-		}
-		return handler;
-	}
-
-	/**
-	 * For JSP files, text/html is the default content type. This may want
-	 * this different for types like jsv (jsp for voice xml) For now, hard
-	 * code to new instance. In future, should get instance from registry.
-	 * Specification cites HTML as the default contentType.
-	 */
-	private EmbeddedTypeHandler getJSPDefaultEmbeddedType() {
-		EmbeddedTypeRegistry reg = getEmbeddedContentTypeRegistry();
-		return reg.getTypeFor(getDefaultMimeType());
-	}
-
-	public RegionParser getParser() {
-		// remember, the Loader
-		// will need to finish initialization of parser
-		// based on "embedded content"
-		JSPSourceParser parser = new JSPSourceParser();
-		// add default nestable tag list
-		addNestablePrefix(parser, JSP11Namespace.JSP_TAG_PREFIX);
-		return parser;
-	}
-
-	protected String getPreferredNewLineDelimiter(IFile file) {
-		String delimiter = ContentTypeEncodingPreferences.getPreferredNewLineDelimiter(ContentTypeIdForJSP.ContentTypeID_JSP);
-		if (delimiter == null)
-			delimiter = super.getPreferredNewLineDelimiter(file);
-		return delimiter;
-	}
-
-	/**
-	 * Specification cites ISO-8859-1/Latin-1 as the default charset.
-	 */
-	protected String getSpecDefaultEncoding() {
-		return SPEC_DEFAULT_ENCODING;
-	}
-
-	/**
-	 * This method must return a new instance of IStructuredDocument, that has
-	 * been initialized with appropriate parser. For many loaders, the
-	 * (default) parser used is known for any input. For others, the correct
-	 * parser (and its initialization) is normall dependent on the content of
-	 * the file. This no-argument method should assume "empty input" and would
-	 * therefore return the default parser for the default contentType. If the
-	 * parser is to handle tag libraries, it must have a TaglibSupport object
-	 * with a valid URIResolver and this IStructuredDocument attached to it
-	 * before the contents are set on the IStructuredDocument.
-	 */
-	protected IEncodedDocument newEncodedDocument() {
-		IStructuredDocument structuredDocument = StructuredDocumentFactory.getNewStructuredDocumentInstance(getParser());
-		((BasicStructuredDocument) structuredDocument).setReParser(new JSPReParser());
-		// structuredDocument.setDocumentPartitioner(new
-		// JSPJavaDocumentPartioner());
-		// even though this is an "empty model" ... we want it to have at
-		// least
-		// the
-		// default embeddeded content type handler
-		EmbeddedTypeHandler embeddedType = getJSPDefaultEmbeddedType();
-		embeddedType.initializeParser((JSPCapableParser) structuredDocument.getParser());
-		return structuredDocument;
-	}
-
-	public IDocumentLoader newInstance() {
-		return new JSPDocumentLoader();
-	}
-
-	protected void preLoadAdapt(IStructuredModel structuredModel) {
-		IDOMModel domModel = (IDOMModel) structuredModel;
-		//
-		// document must have already been set for this to
-		// work.
-		Document document = domModel.getDocument();
-		Assert.isNotNull(document, JSPCoreMessages.JSPDocumentLoader_1);
-		// if there is a model in the adapter, this will adapt it to
-		// first node. After that the PropagatingAdater spreads over the
-		// children being
-		// created. Each time that happends, a side effect is to
-		// also "spread" sprecific registered adapters,
-		// they two can propigate is needed.
-		// This 'get' causes first to be be attached.
-		PropagatingAdapter propagatingAdapter = (PropagatingAdapter) ((INodeNotifier) document).getAdapterFor(PropagatingAdapter.class);
-		// may make this easier to use in futue
-		propagatingAdapter.addAdaptOnCreateFactory(new PageDirectiveWatcherFactory());
-		// For JSPs, the ModelQueryAdapter must be "attached" to the document
-		// before content is set in the model, so taglib initization can
-		// take place.
-		((INodeNotifier) document).getAdapterFor(ModelQueryAdapter.class);
-
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/ArrayMap.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/ArrayMap.java
deleted file mode 100644
index 507ec77..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/ArrayMap.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Hashtable;
-import java.util.Iterator;
-
-/**
- * This implementation of a hashtable maps keys to arrays
- * to support multiple values being associated with a single
- * key. To remove a specific entry, a key and inserted value must
- * be provided. Removing just based on the key name will remove all
- * values stored under that key
- * 
- */
-public class ArrayMap extends Hashtable {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	
-	public ArrayMap(int size) {
-		super(size);
-	}
-	
-	public synchronized Object put(Object key, Object value) {
-		Object[] values = (Object[]) super.get(key);
-		Object[] newValues = null;
-		
-		if (values == null || values.length == 0)
-			newValues = new Object[1];
-		else {
-			newValues = new Object[values.length + 1];
-			System.arraycopy(values, 0, newValues, 0, values.length);
-		}
-
-		newValues[newValues.length - 1] = value;
-		return super.put(key, newValues);
-	}
-	
-	/**
-	 * Removes the first occurrence of <code>value</code> from the list 
-	 * of values associated with <code>key</code>
-	 * 
-	 * @param key the key that has <code>value</code>
-	 * @param value the specific value to remove from the key
-	 * @return The item removed from the list of values
-	 */
-	public synchronized Object remove(Object key, Object value) {
-		Object[] values = (Object[]) super.get(key);
-		Object removed = null;
-		Object[] result = null;
-		if (values != null && value != null) {
-			for (int i = 0; i < values.length; i++) {
-				if (value.equals(values[i])) {
-					removed = values[i];
-					result = new Object[values.length - 1];
-					
-					if (result.length > 0) {
-						// Copy left of value
-						System.arraycopy(values, 0, result, 0, i);
-						// Copy right of value
-						if (i < (values.length - 1))
-							System.arraycopy(values, i+1, result, i, result.length - i);
-					}
-					else
-						super.remove(key);
-					
-					break;
-				}
-			}
-		}
-		
-		if(result != null && result.length > 0)
-			super.put(key, result);
-		
-		return removed;
-	}
-	
-	public Collection values() {
-		Collection valuemaps = super.values();
-		Collection values = new ArrayList();
-		
-		for(Iterator i = valuemaps.iterator(); i.hasNext();)
-			values.addAll(Arrays.asList((Object[]) i.next()));
-		
-		return values;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/CompilationUnitHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/CompilationUnitHelper.java
deleted file mode 100644
index 8df5524..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/CompilationUnitHelper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.eclipse.jst.jsp.core.internal.java;
-
-import org.eclipse.jdt.core.WorkingCopyOwner;
-
-/**
- * To ensure there is only one instance of ProblemRequestor and WorkingCopyOwner
- * for JSP plugins.  These were removed from JSPTranslation to ensure that the
- * JSPTranslation was not held in memory by any type of JDT lists (caching
- * search results, etc...)
- * 
- * @author pavery
- */
-public class CompilationUnitHelper {
-
-    private JSPProblemRequestor fProblemRequestor = null;
-    private WorkingCopyOwner fWorkingCopyOwner = null;
-    private static CompilationUnitHelper instance;
-
-    private CompilationUnitHelper() {
-        // force use of instance
-    }
-
-    public synchronized static final CompilationUnitHelper getInstance() {
-
-        if (instance == null)
-            instance = new CompilationUnitHelper();
-        return instance;
-    }
-
-    public JSPProblemRequestor getProblemRequestor() {
-
-        if (fProblemRequestor == null)
-            fProblemRequestor = new JSPProblemRequestor();
-        return fProblemRequestor;
-    }
-
-    public WorkingCopyOwner getWorkingCopyOwner() {
-
-        if (fWorkingCopyOwner == null) {
-            fWorkingCopyOwner = new WorkingCopyOwner() {
-                public String toString() {
-                    return "JSP Working copy owner"; //$NON-NLS-1$
-                }
-            };
-        }
-        return fWorkingCopyOwner;
-    }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/EscapedTextUtil.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/EscapedTextUtil.java
deleted file mode 100644
index 2d65350..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/EscapedTextUtil.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-
-
-import java.util.Properties;
-import com.ibm.icu.util.StringTokenizer;
-
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-
-/**
- * class to handle chunks of text/regions
- * with escaped character data
- * @author pavery
- */
-public class EscapedTextUtil {
-
-	public static Properties fXMLtoJavaLookup = null;
-
-	/**
-	 * @return unescaped full text of that region, "" if there is no text
-	 */
-	public static String getUnescapedText(IStructuredDocumentRegion parent, ITextRegion r) {
-		String test = (parent != r) ? parent.getFullText(r) : parent.getFullText();
-		return getUnescapedText(test);
-	}
-
-	public static String getUnescapedText(String test) {
-		initLookup();
-		StringBuffer buffer = new StringBuffer();
-		if (test != null) {
-			StringTokenizer st = new StringTokenizer(test, "&;", true); //$NON-NLS-1$
-			String tok1, tok2, tok3, transString;
-			while (st.hasMoreTokens()) {
-				tok1 = tok2 = tok3 = transString = ""; //$NON-NLS-1$
-				tok1 = st.nextToken();
-				if (tok1.equals("&") && st.hasMoreTokens()) //$NON-NLS-1$
-				{
-					tok2 = st.nextToken();
-					if (st.hasMoreTokens()) {
-						tok3 = st.nextToken();
-					}
-				}
-				if (!(transString = fXMLtoJavaLookup.getProperty(tok1 + tok2 + tok3, "")).equals("")) //$NON-NLS-2$ //$NON-NLS-1$
-				{
-					buffer.append(transString);
-				}
-				else {
-					buffer.append(tok1 + tok2 + tok3);
-				}
-			}
-			return buffer.toString();
-		}
-		return ""; //$NON-NLS-1$
-	}
-
-	/**
-	 * initialize lookup tables
-	 */
-	private static void initLookup() {
-		fXMLtoJavaLookup = new Properties();
-		fXMLtoJavaLookup.setProperty("&apos;", "'"); //$NON-NLS-2$ //$NON-NLS-1$
-		fXMLtoJavaLookup.setProperty("&quot;", "\""); //$NON-NLS-2$ //$NON-NLS-1$
-		fXMLtoJavaLookup.setProperty("&amp;", "&"); //$NON-NLS-2$ //$NON-NLS-1$
-		fXMLtoJavaLookup.setProperty("&lt;", "<"); //$NON-NLS-2$ //$NON-NLS-1$
-		fXMLtoJavaLookup.setProperty("&gt;", ">"); //$NON-NLS-2$ //$NON-NLS-1$
-		fXMLtoJavaLookup.setProperty("&nbsp;", " "); //$NON-NLS-2$ //$NON-NLS-1$
-	}
-
-	/**
-	 * Get the String representation of an entity reference.
-	 */
-	public static String translateEntityReference(String entity) {
-		return fXMLtoJavaLookup.getProperty(entity, entity);
-	}
-}
-
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/IJSPProblem.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/IJSPProblem.java
deleted file mode 100644
index ff986cd..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/IJSPProblem.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.eclipse.jst.jsp.core.internal.java;
-
-import org.eclipse.jdt.core.compiler.IProblem;
-
-public interface IJSPProblem extends IProblem {
-
-	int F_PROBLEM_ID_LITERAL = 0xA0000000;
-	
-	int TEIClassNotFound = F_PROBLEM_ID_LITERAL + 1;
-	int TEIValidationMessage = F_PROBLEM_ID_LITERAL + 2;
-	int TEIClassNotInstantiated = F_PROBLEM_ID_LITERAL + 3;
-	int TEIClassMisc = F_PROBLEM_ID_LITERAL + 4;	
-	int TagClassNotFound = F_PROBLEM_ID_LITERAL + 5;
-	int UseBeanInvalidID = F_PROBLEM_ID_LITERAL + 6;
-	int UseBeanMissingTypeInfo = F_PROBLEM_ID_LITERAL + 7;
-	int UseBeanAmbiguousType  = F_PROBLEM_ID_LITERAL + 8;
-	
-	/**
-	 * @return the ID of this JSP problem
-	 */
-	int getEID();
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/IJSPTranslation.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/IJSPTranslation.java
deleted file mode 100644
index 17f641f..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/IJSPTranslation.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import java.util.List;
-
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.IJavaElement;
-
-/**
- * An object that holds a translated JSP String along with
- * position mapping from Java to JSP, and JSP to Java.
- * 
- * @author pavery
- * 
- */
-public interface IJSPTranslation {
-
-	/**
-	 * The string contents of the translated document.
-	 * @return  the string contents of the translated document.
-	 */
-	public String getJavaText();
-
-	/**
-	 * The corresponding java offset in the translated document for a given jsp offset.
-	 * @param jspPosition
-	 * @return the java offset that maps to jspOffset, -1 if the position has no mapping.
-	 */
-	public int getJavaOffset(int jspOffset);
-
-	/**
-	 * The corresponding jsp offset in the source document for a given jsp offset in the translated document.
-	 * @param javaPosition
-	 * @return the jsp offset that maps to javaOffset, -1 if the position has no mapping.
-	 */
-	public int getJspOffset(int javaOffset);
-
-	/**
-	 * The corresponding CompilationUnit for the translated JSP document
-	 * @return an ICompilationUnit of the translation
-	 */
-	public ICompilationUnit getCompilationUnit();
-
-	/**
-	 * Returns the IJavaElements corresponding to the JSP range in the JSP StructuredDocument
-	 * 
-	 * @param jspStart staring offset in the JSP document
-	 * @param jspEnd ending offset in the JSP document
-	 * @return IJavaElements corresponding to the JSP selection
-	 */
-	public IJavaElement[] getElementsFromJspRange(int jspStart, int jspEnd);
-
-	/**
-	 * @param javaOffset
-	 * @return whether the given offset within the translated Java source maps
-	 *         directly to a scripting region in the original JSP
-	 */
-	public boolean isIndirect(int javaOffset);
-	
-	/**
-	 * Must be set true in order for problems to be collected during reconcile.
-	 * If set false, problems will be ignored during reconcile.
-	 * @param collect
-	 */
-	public void setProblemCollectingActive(boolean collect);
-
-	/**
-	 * Reconciles the compilation unit for this JSPTranslation
-	 */
-	public void reconcileCompilationUnit();
-
-	/**
-	 * @return the List of problems collected during reconcile of the compilation unit
-	 */
-	public List getProblems();
-	
-	// add these API once finalized
-	// getJspEdits(TextEdit javaEdit)
-	// getJavaRanges()
-    // getJavaDocument()
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSP2ServletNameUtil.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSP2ServletNameUtil.java
deleted file mode 100644
index bd6e94a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSP2ServletNameUtil.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import java.io.File;
-
-/**
- * @author pavery
- */
-public class JSP2ServletNameUtil {
-	
-	/**
-	 * WAS mangles Tom&Jerry as: _Tom_26_Jerry; this takes in the mangled name
-	 * and returns the original name.
-	 * 
-	 * Unmangles the qualified type name.  If an underscore is found
-	 * it is assumed to be a mangled representation of a non-alpha, 
-	 * non-digit character of the form _NN_, where NN are hex digits
-	 * representing the encoded character.  This routine converts it
-	 * back to the original character.
-	 */
-	public final static String unmangle(String qualifiedTypeName) {
-		if(qualifiedTypeName.charAt(0) != '_')
-			return qualifiedTypeName;
-		
-		StringBuffer buf = new StringBuffer();
-		String possible = ""; //$NON-NLS-1$
-	
-		// remove the .java extension if there is one
-		if(qualifiedTypeName.endsWith(".java"))//$NON-NLS-1$
-			qualifiedTypeName = qualifiedTypeName.substring(0, qualifiedTypeName.length() - 5);
-		
-		for(int i = 1; i < qualifiedTypeName.length(); i++) {  // start at index 1 b/c 1st char is always '_'
-			char c = qualifiedTypeName.charAt(i);
-			if(c == '_') {
-				int endIndex = qualifiedTypeName.indexOf('_', i+1);
-				if(endIndex == -1)
-					buf.append(c);
-				else {
-					char unmangled;
-					try {
-						possible = qualifiedTypeName.substring(i+1, endIndex); 
-					    if(isValid(possible)) {
-							unmangled = (char)Integer.decode("0x" + possible).intValue();//$NON-NLS-1$
-							i = endIndex;
-					    }
-					    else { 
-					        unmangled = c;
-					    }
-						
-					} catch(NumberFormatException e) {
-						unmangled = c;
-					}
-					buf.append(unmangled);
-				}
-			} else {
-				buf.append(c);
-			}
-		}
-		return buf.toString();
-	}
-
-	/**
-	 * Determine if given string is a valid Hex representation of an ASCII character (eg. 2F -> /)
-	 * @param possible
-	 * @return
-	 */
-	private static boolean isValid(String possible) {
-	    boolean result = false;
-	    if(possible.length() == 2){	    
-	        char c1 = possible.charAt(0);
-	        char c2 = possible.charAt(1);
-	        // 1st character must be a digit
-	        if(Character.isDigit(c1)) {
-	            // 2nd character must be digit or upper case letter A-F
-	            if(Character.isDigit(c2)) {
-	                result = true;
-	            }
-	            else if(Character.isUpperCase(c2) && (c2 == 'A' || c2 == 'B' || c2 ==  'C'|| c2 ==  'D'|| c2 ==  'E'|| c2 == 'F')) {
-	                result = true;
-	            }
-	        }
-	    }
-        return result;
-	}
-	
-	/**
-	 * Mangle string to WAS-like specifications
-	 *
-	 */
-	public final static String mangle(String name) {	  
-	  StringBuffer modifiedName = new StringBuffer();
-	  
-	  // extension (.jsp, .jspf, .jspx, etc...) should already be encoded in name
-	  
-	  int length = name.length();
-	  // in case name is forbidden (a number, class, for, etc...)
-	  modifiedName.append('_');
-	
-	  // ensure rest of characters are valid	
-	  for (int i=0; i< length; i++) {
-		  char currentChar = name.charAt(i);
-		  if (Character.isJavaIdentifierPart(currentChar) == true  ) { 
-			  modifiedName.append(currentChar);
-		  } else {
-			  modifiedName.append(mangleChar(currentChar));
-		  }
-	  }
-	  return modifiedName.toString();
-	  
-	}
-
-	/**
-	 * take a character and return its hex equivalent
-	 */
-	private final static String mangleChar(char ch) {
-	  if ( ch == File.separatorChar ) {
-		  ch = '/';
-	  }
-	
-	  if ( Character.isLetterOrDigit(ch) == true ) {
-		  return "" + ch; //$NON-NLS-1$
-	  }
-	  return "_" + Integer.toHexString(ch).toUpperCase() + "_"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java
deleted file mode 100644
index f0115c8..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPIncludeRegionHelper.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-
-/**
- * Extension of XMLJSPRegionHelper inteded to parse entire included JSP files.
- * Basically it expands the rules for what tags are parsed as JSP.
- * 
- * @author pavery
- */
-class JSPIncludeRegionHelper extends XMLJSPRegionHelper {
-	/**
-	 * @param JSPTranslator
-	 */
-	public JSPIncludeRegionHelper(JSPTranslator translator, boolean appendAsIndirectSource) {
-		super(translator, appendAsIndirectSource);
-	}
-
-	// these methods determine what content gets added to the local scriplet, expression, declaration buffers
-	/*
-	 * return true for elements whose contents we might want to add to the java file we are building
-	 */
-	protected boolean isJSPStartRegion(IStructuredDocumentRegion sdRegion) {
-		String type = sdRegion.getFirstRegion().getType();
-		return type == DOMRegionContext.XML_TAG_OPEN || type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN || type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN || type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || type == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN || type == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME;
-	}
-
-	protected boolean isDeclaration(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:declaration") //$NON-NLS-1$		
-					|| tagName.equalsIgnoreCase("<%!"); //$NON-NLS-1$		
-	}
-
-	protected boolean isExpression(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:expression") //$NON-NLS-1$		
-					|| tagName.equalsIgnoreCase("<%="); //$NON-NLS-1$
-	}
-
-	protected boolean isScriptlet(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:scriptlet") //$NON-NLS-1$		
-					|| tagName.equalsIgnoreCase("<%"); //$NON-NLS-1$
-	}
-
-	protected boolean isIncludeDirective(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:directive.include") || //$NON-NLS-1$
-					tagName.equalsIgnoreCase("include"); //$NON-NLS-1$
-	}
-
-	protected boolean isTaglibDirective(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:directive.taglib") //$NON-NLS-1$
-					|| tagName.equalsIgnoreCase("taglib"); //$NON-NLS-1$
-	}
-
-	protected boolean isPageDirective(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:directive.page") //$NON-NLS-1$
-					|| tagName.equalsIgnoreCase("page"); //$NON-NLS-1$
-	}
-
-	// different btwn XML-JSP and JSP tags		
-	protected String getRegionName(IStructuredDocumentRegion sdRegion) {
-		ITextRegion nameRegion = null;
-		String nameStr = ""; //$NON-NLS-1$
-		int size = sdRegion.getRegions().size();
-		if (size > 1) {
-			// presumably XML-JSP <jsp:scriptlet> | <jsp:expression> | <jsp:declaration>
-			nameRegion = sdRegion.getRegions().get(1);
-		}
-		else if (size == 1) {
-			// presumably JSP open <% | <%= | <%!
-			nameRegion = sdRegion.getRegions().get(0);
-		}
-		if (nameRegion != null)
-			nameStr = fTextToParse.substring(sdRegion.getStartOffset(nameRegion), sdRegion.getTextEndOffset(nameRegion));
-		return nameStr.trim();
-	}
-
-	protected void processOtherRegions(IStructuredDocumentRegion sdRegion) {
-		processIncludeDirective(sdRegion);
-		processPageDirective(sdRegion);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPProblemRequestor.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPProblemRequestor.java
deleted file mode 100644
index cf47682..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPProblemRequestor.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.eclipse.jst.jsp.core.internal.java;
-
-/**
- * @author pavery
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jdt.core.IProblemRequestor;
-import org.eclipse.jdt.core.compiler.IProblem;
-
-class JSPProblemRequestor implements IProblemRequestor {
-
-    private boolean fIsActive = false;
-
-    private boolean fIsRunning = false;
-
-    private List fCollectedProblems;
-
-    public void beginReporting() {
-
-        fIsRunning = true;
-        fCollectedProblems = new ArrayList();
-    }
-
-    public void acceptProblem(IProblem problem) {
-
-        if (isActive())
-            fCollectedProblems.add(problem);
-    }
-
-    public void endReporting() {
-
-        fIsRunning = false;
-    }
-
-    public boolean isActive() {
-
-        return fIsActive && fCollectedProblems != null;
-    }
-
-    /**
-     * Sets the active state of this problem requestor.
-     * 
-     * @param isActive
-     *            the state of this problem requestor
-     */
-    public void setIsActive(boolean isActive) {
-
-        if (fIsActive != isActive) {
-            fIsActive = isActive;
-            if (fIsActive)
-                startCollectingProblems();
-            else
-                stopCollectingProblems();
-        }
-    }
-
-    /**
-     * Tells this annotation model to collect temporary problems from now on.
-     */
-    private void startCollectingProblems() {
-
-        fCollectedProblems = new ArrayList();
-    }
-
-    /**
-     * Tells this annotation model to no longer collect temporary problems.
-     */
-    private void stopCollectingProblems() {
-
-        // do nothing
-    }
-
-    /**
-     * @return the list of collected problems
-     */
-    public List getCollectedProblems() {
-
-        return fCollectedProblems;
-    }
-
-    public boolean isRunning() {
-
-        return fIsRunning;
-    }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java
deleted file mode 100644
index 3072c8f..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java
+++ /dev/null
@@ -1,659 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.WorkspaceJob;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.core.IBuffer;
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IPackageFragment;
-import org.eclipse.jdt.core.IPackageFragmentRoot;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.WorkingCopyOwner;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jst.jsp.core.internal.Logger;
-
-
-/**
- * <p>
- * An implementation of IJSPTranslation.  
- * <br>
- * This object that holds the java translation of 
- * a JSP file as well as a mapping of ranges from the translated Java to the JSP source, 
- * and mapping from JSP source back to the translated Java.
- * </p>
- * 
- * <p>
- * You may also use JSPTranslation to do CompilationUnit-esque things such as:
- * <ul>
- * 	<li>code select (get java elements for jsp selection)</li>
- *  <li>reconcile</li>
- *  <li>get java regions for jsp selection</li>
- *  <li>get a JSP text edit based on a Java text edit</li>
- *  <li>determine if a java offset falls within a jsp:useBean range</li>
- *  <li>determine if a java offset falls within a jsp import statment</li>
- * </ul>
- * </p>
- * 
- * @author pavery
- */
-public class JSPTranslation implements IJSPTranslation {
-	
-	// for debugging
-	private static final boolean DEBUG;
-	static {
-		String value= Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation"); //$NON-NLS-1$
-		DEBUG= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	/** the name of the class (w/out extension) **/
-	private String fClassname = ""; //$NON-NLS-1$
-	private IJavaProject fJavaProject = null;
-	private HashMap fJava2JspMap = null;
-	private HashMap fJsp2JavaMap = null;
-	private HashMap fJava2JspImportsMap = null;
-	private HashMap fJava2JspUseBeanMap = null;
-	private HashMap fJava2JspIndirectMap = null;
-	private List fELProblems = null;
-	
-	// don't want to hold onto model (via translator)
-	// all relevant info is extracted in the constructor.
-	//private JSPTranslator fTranslator = null;
-	private String fJavaText = ""; //$NON-NLS-1$
-	private String fJspText = ""; //$NON-NLS-1$
-	
-	private ICompilationUnit fCompilationUnit = null;
-	private IProgressMonitor fProgressMonitor = null;
-	/** lock to synchronize access to the compilation unit **/
-	private byte[] fLock = null;
-	private String fMangledName;
-	private String fJspName;
-	private List fTranslationProblems;
-	private Collection fIncludedPaths;
-
-	public JSPTranslation(IJavaProject javaProj, JSPTranslator translator) {
-
-		fLock = new byte[0];
-		fJavaProject = javaProj;
-		//fTranslator = translator;
-		
-		// can be null if it's an empty document (w/ NullJSPTranslation)
-		if(translator != null) {
-		    fJavaText = translator.getTranslation().toString();
-		    fJspText = translator.getJspText();
-			fClassname = translator.getClassname();
-			fJava2JspMap = translator.getJava2JspRanges();
-			fJsp2JavaMap = translator.getJsp2JavaRanges();
-			fJava2JspImportsMap = translator.getJava2JspImportRanges();
-			fJava2JspUseBeanMap = translator.getJava2JspUseBeanRanges();
-			fJava2JspIndirectMap = translator.getJava2JspIndirectRanges();
-			fELProblems = translator.getELProblems();
-			fTranslationProblems = translator.getTranslationProblems();
-			fIncludedPaths = translator.getIncludedPaths();
-		}
-	}
-	
-	public IJavaProject getJavaProject() {
-		return fJavaProject;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jst.jsp.core.internal.java.IJSPTranslation#getJavaText()
-	 */
-	public String getJavaText() {
-		//return (fTranslator != null) ? fTranslator.getTranslation().toString() : "";  //$NON-NLS-1$ 
-		return fJavaText;
-	}
-	
-	public String getJspText() {
-		//return (fTranslator != null) ? fTranslator.getJspText() : "";  //$NON-NLS-1$
-		return fJspText;
-	}
-	
-	public String getJavaPath() {
-		// create if necessary
-		ICompilationUnit cu = getCompilationUnit();
-		return (cu != null) ? cu.getPath().toString() : ""; //$NON-NLS-1$
-	}
-	
-	/**
-	 * 
-	 * @return the corresponding Java offset for a give JSP offset
-	 */
-	public int getJavaOffset(int jspOffset) {
-		int result = -1;
-		int offsetInRange = 0;
-		Position jspPos, javaPos = null;
-
-		// iterate all mapped jsp ranges
-		Iterator it = fJsp2JavaMap.keySet().iterator();
-		while (it.hasNext()) {
-			jspPos = (Position) it.next();
-			// need to count the last position as included
-			if (!jspPos.includes(jspOffset) && !(jspPos.offset+jspPos.length == jspOffset))
-				continue;
-
-			offsetInRange = jspOffset - jspPos.offset;
-			javaPos = (Position) fJsp2JavaMap.get(jspPos);
-			if(javaPos != null)
-				result = javaPos.offset + offsetInRange;
-			else  {
-
-				Logger.log(Logger.ERROR, "JavaPosition was null!" + jspOffset); //$NON-NLS-1$
-			}
-			break;
-		}
-		return result;
-	}
-
-	/**
-	 * 
-	 * @return the corresponding JSP offset for a give Java offset
-	 */
-	public int getJspOffset(int javaOffset) {
-		int result = -1;
-		int offsetInRange = 0;
-		Position jspPos, javaPos = null;
-
-		// iterate all mapped java ranges
-		Iterator it = fJava2JspMap.keySet().iterator();
-		while (it.hasNext()) {
-			javaPos = (Position) it.next();
-			// need to count the last position as included
-			if (!javaPos.includes(javaOffset) && !(javaPos.offset+javaPos.length == javaOffset))
-				continue;
-
-			offsetInRange = javaOffset - javaPos.offset;
-			jspPos = (Position) fJava2JspMap.get(javaPos);
-			
-			if(jspPos != null)
-				result = jspPos.offset + offsetInRange;
-			else  {
-				Logger.log(Logger.ERROR, "jspPosition was null!" + javaOffset); //$NON-NLS-1$
-			}
-			break;
-		}
-
-		return result;
-	}
-		
-	public Collection getIncludedPaths() {
-		return fIncludedPaths;
-	}
-
-	/**
-	 * 
-	 * @return a map of Positions in the Java document to corresponding Positions in the JSP document
-	 */
-	public HashMap getJava2JspMap() {
-		return fJava2JspMap;
-	}
-
-	/**
-	 * 
-	 * @return a map of Positions in the JSP document to corresponding Positions in the Java document
-	 */
-	public HashMap getJsp2JavaMap() {
-		return fJsp2JavaMap;
-	}
-
-	/**
-	 * Checks if the specified java range covers more than one partition in the JSP file.
-	 * 
-	 * <p>
-	 * ex.
-	 * <code>
-	 * <%
-	 * 	if(submit)
-	 *  {
-	 * %>
-	 *    <p> print this...</p>
-	 * 
-	 * <%
-	 *  }
-	 *  else
-	 *  {
-	 * %>
-	 * 	   <p> print that...</p>
-	 * <%
-	 *  }
-	 * %>
-	 * </code>
-	 * </p>
-	 * 
-	 * the if else statement above spans 3 JSP partitions, so it would return true.
-	 * @param offset
-	 * @param length
-	 * @return <code>true</code> if the java code spans multiple JSP partitions, otherwise false.
-	 */
-	public boolean javaSpansMultipleJspPartitions(int javaOffset, int javaLength) {
-		HashMap java2jsp = getJava2JspMap();
-		int count = 0;
-		Iterator it = java2jsp.keySet().iterator();
-		Position javaRange = null;
-		while(it.hasNext()) {
-			javaRange = (Position)it.next();
-			if(javaRange.overlapsWith(javaOffset, javaLength))
-				count++;
-			if(count > 1)
-				return true;
-		}
-		return false;
-	}
-	
-	/**
-	 * Returns the Java positions for the given range in the Java document.
-	 * 
-	 * @param offset
-	 * @param length
-	 * @return
-	 */
-	public Position[] getJavaRanges(int offset, int length) {
-
-		List results = new ArrayList();
-		Iterator it = getJava2JspMap().keySet().iterator();
-		Position p = null;
-		while(it.hasNext()) {
-			p = (Position)it.next();
-			if(p.overlapsWith(offset, length))
-				results.add(p);
-		}
-		return (Position[])results.toArray(new Position[results.size()]);
-	}
-	
-	/**
-	 * Indicates if the java Offset falls within the user import ranges
-	 * @param javaOffset
-	 * @return true if the java Offset falls within the user import ranges, otherwise false
-	 */
-	public boolean isImport(int javaOffset) {
-		return isInRanges(javaOffset, fJava2JspImportsMap);
-	}
-
-	/**
-	 * Indicates if the java offset falls within the use bean ranges
-	 * @param javaOffset
-	 * @return true if the java offset falls within the user import ranges, otherwise false
-	 */
-	public boolean isUseBean(int javaOffset) {
-		return isInRanges(javaOffset, fJava2JspUseBeanMap);
-	}
-	
-	/**
-	 * @param javaPos
-	 * @return
-	 */
-	public boolean isIndirect(int javaOffset) {
-		return isInRanges(javaOffset, fJava2JspIndirectMap, false);
-	}
-	
-	private boolean isInRanges(int javaOffset, HashMap ranges) {
-		return isInRanges(javaOffset, ranges, true);
-	}
-	/**
-	 * Tells you if the given offset is included in any of the ranges (Positions) passed in.
-	 * includeEndOffset tells whether or not to include the end offset of each range in the test.
-	 * 
-	 * @param javaOffset
-	 * @param ranges
-	 * @param includeEndOffset
-	 * @return
-	 */
-	private boolean isInRanges(int javaOffset, HashMap ranges, boolean includeEndOffset) {
-		
-		Iterator it = ranges.keySet().iterator();
-		while(it.hasNext()) {
-			Position javaPos = (Position)it.next();
-			// also include the start and end offset (only if requested)
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=81687
-			if(javaPos.includes(javaOffset) || (includeEndOffset && javaPos.offset+javaPos.length == javaOffset)) 
-				return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Return the Java CompilationUnit associated with this JSPTranslation (this particular model)
-	 * When using methods on the CU, it's reccomended to synchronize on the CU for reliable
-	 * results.
-	 * 
-	 * The method is synchronized to ensure that <code>createComplilationUnit</code> doesn't
-	 * get entered 2 or more times simultaneously.  A side effect of that is 2 compilation units
-	 * can be created in the JavaModelManager, but we only hold one reference to it in 
-	 * fCompilationUnit.  This would lead to a leak since only one instance of the CU is
-	 * discarded in the <code>release()</code> method.
-	 * 
-	 * @return a CompilationUnit representation of this JSPTranslation
-	 */
-	public ICompilationUnit getCompilationUnit() {
-		synchronized(fLock) {
-			try {
-				if (fCompilationUnit == null) {
-					fCompilationUnit = createCompilationUnit();
-				}
-			}
-			catch (JavaModelException jme) {
-				if(DEBUG)
-					Logger.logException("error creating JSP working copy... ", jme); //$NON-NLS-1$
-			}
-		}
-		return fCompilationUnit;
-	}
-
-	private String getMangledName() {
-		return fMangledName;
-	}
-	private void setMangledName(String mangledName) {
-		fMangledName = mangledName;
-	}
-	private String getJspName() {
-		return fJspName;
-	}
-
-	private void setJspName(String jspName) {
-		fJspName = jspName;
-	}
-
-	/**
-	 * Replaces mangled (servlet) name with jsp file name.
-	 * 
-	 * @param displayString
-	 * @return
-	 */
-	public String fixupMangledName(String displayString) {
-		
-		if(displayString == null)
-			return null;
-		
-		if(getJspName() == null || getMangledName() == null) {
-			// names not set yet
-			initJspAndServletNames();
-		}
-		return displayString.replaceAll(getMangledName(), getJspName());
-	}
-
-	private void initJspAndServletNames() {
-		ICompilationUnit cu = getCompilationUnit();
-		if(cu != null) {
-			String cuName = null;
-			synchronized(cu) {
-				// set some names for fixing up mangled name in proposals
-				// set mangled (servlet) name
-				 cuName = cu.getPath().lastSegment();
-			}
-			if(cuName != null) {
-				setMangledName(cuName.substring(0, cuName.lastIndexOf('.')));
-				// set name of jsp file
-				String unmangled = JSP2ServletNameUtil.unmangle(cuName);
-				setJspName(unmangled.substring(unmangled.lastIndexOf('/') + 1, unmangled.lastIndexOf('.')));
-			}
-		}
-	}
-
-	
-	/**
-	 * Originally from ReconcileStepForJava.  Creates an ICompilationUnit from the contents of the JSP document.
-	 * 
-	 * @return an ICompilationUnit from the contents of the JSP document
-	 */
-	private ICompilationUnit createCompilationUnit() throws JavaModelException {
-		
-		IPackageFragment packageFragment = null;
-		IJavaElement je = getJavaProject();
-
-		if (je == null || !je.exists())
-			return null;
-
-		switch (je.getElementType()) {
-			case IJavaElement.PACKAGE_FRAGMENT :
-				je = je.getParent();
-			// fall through
-
-			case IJavaElement.PACKAGE_FRAGMENT_ROOT :
-				IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) je;
-				packageFragment = packageFragmentRoot.getPackageFragment(IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH);
-				break;
-
-			case IJavaElement.JAVA_PROJECT :
-				IJavaProject jProject = (IJavaProject) je;
-
-				if (!jProject.exists()) {
-					if(DEBUG) {
-						System.out.println("** Abort create working copy: cannot create working copy: JSP is not in a Java project"); //$NON-NLS-1$
-					}
-					return null;
-				}
-
-				packageFragmentRoot = null;
-				IPackageFragmentRoot[] packageFragmentRoots = jProject.getPackageFragmentRoots();
-				int i = 0;
-				while (i < packageFragmentRoots.length) {
-					if (!packageFragmentRoots[i].isArchive() && !packageFragmentRoots[i].isExternal()) {
-						packageFragmentRoot = packageFragmentRoots[i];
-						break;
-					}
-					i++;
-				}
-				if (packageFragmentRoot == null) {
-					if(DEBUG) {
-						System.out.println("** Abort create working copy: cannot create working copy: JSP is not in a Java project with source package fragment root"); //$NON-NLS-1$
-					}
-					return null;
-				}
-				packageFragment = packageFragmentRoot.getPackageFragment(IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH);
-				break;
-
-			default :
-				return null;
-		}
-		
-		ICompilationUnit cu = packageFragment.getCompilationUnit(getClassname() + ".java").getWorkingCopy(getWorkingCopyOwner(), getProblemRequestor(), getProgressMonitor()); //$NON-NLS-1$
-		setContents(cu);
-
-		if(DEBUG) {
-			System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //$NON-NLS-1$
-			System.out.println("(+) JSPTranslation ["+ this + "] finished creating CompilationUnit: " + cu); //$NON-NLS-1$ //$NON-NLS-2$
-			System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //$NON-NLS-1$
-		}
-		
-		return cu;
-	}
-
-	/**
-	 * 
-	 * @return the problem requestor for the CompilationUnit in this JSPTranslation
-	 */
-	private JSPProblemRequestor getProblemRequestor() {
-	    return CompilationUnitHelper.getInstance().getProblemRequestor();
-	}
-
-	/**
-	 * 
-	 * @return the IWorkingCopyOwner for this CompilationUnit in this JSPTranslation
-	 */
-	public WorkingCopyOwner getWorkingCopyOwner() {
-	    return CompilationUnitHelper.getInstance().getWorkingCopyOwner();
-	}
-
-	/**
-	 * 
-	 * @return the progress monitor used in long operations (reconcile, creating the CompilationUnit...) in this JSPTranslation
-	 */
-	private IProgressMonitor getProgressMonitor() {
-		if (fProgressMonitor == null)
-			fProgressMonitor = new NullProgressMonitor();
-		return fProgressMonitor;
-	}
-
-	/**
-	 * 
-	 * @return the List of problems collected during reconcile of the compilation unit
-	 */
-	public List getProblems() {
-		List problems = getProblemRequestor().getCollectedProblems();
-		if (problems != null) {
-			if (fTranslationProblems.isEmpty()) {
-				return problems;
-			}
-			List combinedProblems = new ArrayList(problems);
-			combinedProblems.addAll(fTranslationProblems);
-			return combinedProblems;
-		}
-		return fTranslationProblems;
-	}
-	
-	/**
-	 * 
-	 * @return the List of problems collected during reconcile of the compilation unit
-	 */
-	public List getELProblems() {
-		return fELProblems != null ? fELProblems : new ArrayList();
-	}
-
-
-	/**
-	 * Must be set true in order for problems to be collected during reconcile.
-	 * If set false, problems will be ignored during reconcile.
-	 * @param collect
-	 */
-	public void setProblemCollectingActive(boolean collect) {
-		ICompilationUnit cu = getCompilationUnit();
-		if(cu != null) {	
-			getProblemRequestor().setIsActive(collect);
-		}
-	}
-
-	/**
-	 * Reconciles the compilation unit for this JSPTranslation
-	 */
-	public void reconcileCompilationUnit() {
-		ICompilationUnit cu = getCompilationUnit();
-		if (cu != null) {
-			try {
-				synchronized(cu) {
-					cu.makeConsistent(getProgressMonitor());
-					cu.reconcile(ICompilationUnit.NO_AST, true, getWorkingCopyOwner(), getProgressMonitor());
-				}
-			}
-			catch (JavaModelException e) {
-				Logger.logException(e);
-			}
-		}
-	}
-
-	/**
-	 * Set contents of the compilation unit to the translated jsp text.
-	 * @param the ICompilationUnit on which to set the buffer contents
-	 */
-	private void setContents(ICompilationUnit cu) {
-		if (cu == null)
-			return;
-		
-		synchronized (cu) {
-			IBuffer buffer;
-			try {
-				
-				buffer = cu.getBuffer();
-			}
-			catch (JavaModelException e) {
-				e.printStackTrace();
-				buffer = null;
-			}
-	
-			if (buffer != null)
-				buffer.setContents(getJavaText());
-		}
-	}
-
-	/**
-	 * Returns the IJavaElements corresponding to the JSP range in the JSP StructuredDocument
-	 * 
-	 * @param jspStart staring offset in the JSP document
-	 * @param jspEnd ending offset in the JSP document
-	 * @return IJavaElements corresponding to the JSP selection
-	 */
-	public IJavaElement[] getElementsFromJspRange(int jspStart, int jspEnd) {
-
-		int javaPositionStart = getJavaOffset(jspStart);
-		int javaPositionEnd = getJavaOffset(jspEnd);
-
-		IJavaElement[] EMTPY_RESULT_SET = new IJavaElement[0];
-		IJavaElement[] result = EMTPY_RESULT_SET;
-		try {
-			ICompilationUnit cu = getCompilationUnit();
-			if (cu != null) {
-				synchronized (cu) {
-					int cuDocLength = cu.getBuffer().getLength();
-					int javaLength = javaPositionEnd - javaPositionStart;
-					if (cuDocLength > 0 && javaPositionStart >= 0 && javaLength >= 0 && javaPositionEnd < cuDocLength) {
-						result = cu.codeSelect(javaPositionStart, javaLength);
-					}
-				}
-			}
-
-			if (result == null || result.length == 0)
-				return EMTPY_RESULT_SET;
-		}
-		catch (JavaModelException x) {
-			Logger.logException(x);
-		}
-
-		return result;
-	}
-
-	public String getClassname() {
-		return fClassname;
-	}
-
-	/**
-	 * Must discard compilation unit, or else they can leak in the JavaModelManager
-	 */
-	public void release() {
-		
-		synchronized (fLock) {
-			if (fCompilationUnit != null) {
-				Job discarder = new WorkspaceJob(fClassname) {
-					public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
-						try {
-							if (DEBUG) {
-								System.out.println("------------------------------------------------------------------"); //$NON-NLS-1$
-								System.out.println("(-) JSPTranslation [" + this + "] discarding CompilationUnit: " + fCompilationUnit); //$NON-NLS-1$ //$NON-NLS-2$
-								System.out.println("------------------------------------------------------------------"); //$NON-NLS-1$
-							}
-							fCompilationUnit.discardWorkingCopy();
-						}
-						catch (JavaModelException e) {
-							// we're done w/ it anyway
-						}
-						return Status.OK_STATUS;
-					}
-				};
-				discarder.setSystem(true);
-				discarder.setUser(false);
-				discarder.schedule();
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationAdapter.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationAdapter.java
deleted file mode 100644
index 5db6c87..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationAdapter.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-
-/**
- * An adapter for getting a JSPTranslation of the document.
- * 
- * @author pavery
- */
-public class JSPTranslationAdapter implements INodeAdapter, IDocumentListener {
-
-	// for debugging
-	private static final boolean DEBUG = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation")); //$NON-NLS-1$  //$NON-NLS-2$
-
-	private IDocument fJspDocument = null;
-	private IDocument fJavaDocument = null;
-	private JSPTranslationExtension fJSPTranslation = null;
-	private boolean fDocumentIsDirty = true;
-	private IDOMModel fXMLModel;
-	private JSPTranslator fTranslator = null;
-	private NullProgressMonitor fTranslationMonitor = null;
-
-	public JSPTranslationAdapter(IDOMModel xmlModel) {
-		setXMLModel(xmlModel);
-		initializeJavaPlugins();
-	}
-
-	/**
-	 * Initialize the required Java Plugins
-	 */
-	protected void initializeJavaPlugins() {
-		JavaCore.getPlugin();
-	}
-
-	public boolean isAdapterForType(Object type) {
-		return type.equals(IJSPTranslation.class);
-	}
-
-	public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
-		// nothing to do
-	}
-
-	/**
-	 * Automatically set through the setXMLModel(XMLModel)
-	 * 
-	 * @param doc
-	 */
-	private void setDocument(IDocument doc) {
-		if (fJspDocument != null)
-			fJspDocument.removeDocumentListener(this);
-		if (doc != null) {
-			doc.addDocumentListener(this);
-			fJspDocument = doc;
-		}
-	}
-
-	/**
-	 * @see org.eclipse.jface.text.IDocumentListener#documentAboutToBeChanged(org.eclipse.jface.text.DocumentEvent)
-	 */
-	public void documentAboutToBeChanged(DocumentEvent event) {
-		// do nothing
-	}
-
-	/**
-	 * @see org.eclipse.jface.text.IDocumentListener#documentChanged(org.eclipse.jface.text.DocumentEvent)
-	 */
-	public void documentChanged(DocumentEvent event) {
-		// mark translation for rebuilding
-		fDocumentIsDirty = true;
-	}
-
-	public void release() {
-
-		if (fJspDocument != null)
-			fJspDocument.removeDocumentListener(this);
-
-		if (fTranslationMonitor != null)
-			fTranslationMonitor.setCanceled(true);
-
-		if (fJSPTranslation != null) {
-
-			if (DEBUG)
-				System.out.println("JSPTranslationAdapter releasing:" + fJSPTranslation); //$NON-NLS-1$
-
-			fJSPTranslation.release();
-		}
-	}
-
-	/**
-	 * Returns the JSPTranslation for this adapter.
-	 * 
-	 * @return a JSPTranslationExtension
-	 */
-	public synchronized JSPTranslationExtension getJSPTranslation() {
-
-		if (fJSPTranslation == null || fDocumentIsDirty) {
-			JSPTranslator translator = null;
-			if (getXMLModel() != null && getXMLModel().getIndexedRegion(0) != null) {
-				translator = getTranslator((IDOMNode) getXMLModel().getIndexedRegion(0));
-				translator.translate();
-				StringBuffer javaContents = translator.getTranslation();
-				fJavaDocument = new Document(javaContents.toString());
-			}
-			else {
-				// empty document case
-				translator = createTranslator();
-				StringBuffer emptyContents = translator.getEmptyTranslation();
-				fJavaDocument = new Document(emptyContents.toString());
-			}
-			// it's going to be rebuilt, so we release it here
-			if (fJSPTranslation != null) {
-				if (DEBUG)
-					System.out.println("JSPTranslationAdapter releasing:" + fJSPTranslation); //$NON-NLS-1$
-				fJSPTranslation.release();
-			}
-			fJSPTranslation = new JSPTranslationExtension(getXMLModel().getStructuredDocument(), fJavaDocument, getJavaProject(), translator);
-			fDocumentIsDirty = false;
-		}
-		return fJSPTranslation;
-	}
-
-	JSPTranslator createTranslator() {
-		return new JSPTranslator();
-	}
-
-	/**
-	 * Returns the JSPTranslator for this adapter. If it's null, a new
-	 * translator is created with the xmlNode. Otherwise the
-	 * translator.reset(xmlNode) is called to reset the current local
-	 * translator.
-	 * 
-	 * @param xmlNode
-	 *            the first node of the JSP document to be translated
-	 * @return the JSPTranslator for this adapter (creates if null)
-	 */
-	private JSPTranslator getTranslator(IDOMNode xmlNode) {
-		if (fTranslator == null) {
-			fTranslationMonitor = new NullProgressMonitor();
-			fTranslator = createTranslator();
-			fTranslator.reset(xmlNode, fTranslationMonitor);
-		}
-		else
-			fTranslator.reset(xmlNode, fTranslationMonitor);
-		return fTranslator;
-	}
-
-	/**
-	 * set the XMLModel for this adapter. Must be called.
-	 * 
-	 * @param xmlModel
-	 */
-	public void setXMLModel(IDOMModel xmlModel) {
-		fXMLModel = xmlModel;
-		setDocument(fXMLModel.getStructuredDocument());
-	}
-
-	/**
-	 * @return the XMLModel for this adapter.
-	 */
-	private IDOMModel getXMLModel() {
-		return fXMLModel;
-	}
-
-	/**
-	 * Gets (or creates via JavaCore) a JavaProject based on the location of
-	 * this adapter's XMLModel. Returns null for non IFile based models.
-	 * 
-	 * @return the java project where
-	 */
-	public IJavaProject getJavaProject() {
-
-		IJavaProject javaProject = null;
-		try {
-			String baseLocation = getXMLModel().getBaseLocation();
-			// 20041129 (pa) the base location changed for XML model
-			// because of FileBuffers, so this code had to be updated
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=79686
-			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-			IPath filePath = new Path(baseLocation);
-			IProject project = null;
-			if (filePath.segmentCount() > 0) {
-				project = root.getProject(filePath.segment(0));
-			}
-//			IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(new Path(baseLocation));
-//			for (int i = 0; project == null && i < files.length; i++) {
-//				if (files[i].getType() != IResource.PROJECT) {
-//					project = files[i].getProject();
-//					break;
-//				}
-//			}
-			if (project != null) {
-				javaProject = JavaCore.create(project);
-			}
-		}
-		catch (Exception ex) {
-			if (getXMLModel() != null)
-				Logger.logException("(JSPTranslationAdapter) problem getting java project from the XMLModel's baseLocation > " + getXMLModel().getBaseLocation(), ex); //$NON-NLS-1$
-			else
-				Logger.logException("(JSPTranslationAdapter) problem getting java project", ex); //$NON-NLS-1$
-		}
-		return javaProject;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationAdapterFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationAdapterFactory.java
deleted file mode 100644
index dbe0b4e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationAdapterFactory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.sse.core.internal.provisional.AbstractAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-
-/**
- * Factory for JSPTranslationAdapters.
- * 
- * @author pavery
- *  
- */
-public class JSPTranslationAdapterFactory extends AbstractAdapterFactory {
-
-	private JSPTranslationAdapter fAdapter = null;
-
-	// for debugging
-	static final boolean DEBUG = Boolean.valueOf(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation")).booleanValue(); //$NON-NLS-1$;
-	
-	public JSPTranslationAdapterFactory() {
-		super(IJSPTranslation.class, true);
-	}
-
-	public INodeAdapterFactory copy() {
-		return new JSPTranslationAdapterFactory();
-	}
-
-	protected INodeAdapter createAdapter(INodeNotifier target) {
-		if (target instanceof IDOMNode && fAdapter == null) {
-			fAdapter = new JSPTranslationAdapter(((IDOMNode) target).getModel());
-			if(DEBUG) {
-				System.out.println("(+) JSPTranslationAdapterFactory [" + this + "] created adapter: " + fAdapter); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		return fAdapter;
-	}
-
-
-	public void release() {
-		if (fAdapter != null) {
-			if(DEBUG) {
-				System.out.println("(-) JSPTranslationAdapterFactory [" + this + "] releasing adapter: " + fAdapter); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			fAdapter.release();
-		}
-		super.release();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationExtension.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationExtension.java
deleted file mode 100644
index 72ed408..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationExtension.java
+++ /dev/null
@@ -1,463 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.ToolFactory;
-import org.eclipse.jdt.core.formatter.CodeFormatter;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.TextUtilities;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.text.edits.DeleteEdit;
-import org.eclipse.text.edits.InsertEdit;
-import org.eclipse.text.edits.MalformedTreeException;
-import org.eclipse.text.edits.MultiTextEdit;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.edits.TextEdit;
-import org.eclipse.text.edits.UndoEdit;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-import com.ibm.icu.util.StringTokenizer;
-
-
-/**
- * Adds the notion of IDocuments (jsp Document and java Document) Used for
- * TextEdit translation
- * 
- * @author pavery
- */
-public class JSPTranslationExtension extends JSPTranslation {
-
-	// for debugging
-	private static final boolean DEBUG;
-	static {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jsptranslation"); //$NON-NLS-1$
-		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	// just a convenience data structure
-	// to keep track of java position deltas
-	private class PositionDelta {
-
-		public boolean isDeleted = false;
-		public int preOffset = 0;
-		public int preLength = 0;
-		public int postOffset = 0;
-		public int postLength = 0;
-
-		public PositionDelta(int preOffset, int preLength) {
-			this.preOffset = preOffset;
-			this.preLength = preLength;
-		}
-
-		public void setPostEditData(int postOffset, int postLength, boolean isDeleted) {
-			this.postOffset = postOffset;
-			this.postLength = postLength;
-			this.isDeleted = isDeleted;
-		}
-	}
-
-	private IDocument fJspDocument = null;
-	private IDocument fJavaDocument = null;
-	private CodeFormatter fCodeFormatter = null;
-
-	public JSPTranslationExtension(IDocument jspDocument, IDocument javaDocument, IJavaProject javaProj, JSPTranslator translator) {
-		super(javaProj, translator);
-		fJspDocument = jspDocument;
-		fJavaDocument = javaDocument;
-
-		// make sure positions are added to Java and JSP documents
-		// this is necessary for text edits
-		addPositionsToDocuments();
-	}
-
-	public IDocument getJspDocument() {
-		return fJspDocument;
-	}
-
-	public IDocument getJavaDocument() {
-		return fJavaDocument;
-	}
-
-	public String getJavaText() {
-		return getJavaDocument() != null ? getJavaDocument().get() : ""; //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns a corresponding TextEdit for the JSP file given a TextEdit for
-	 * a Java file.
-	 * 
-	 * @param javaEdit
-	 * @return the corresponding JSP edits (not applied to the document yet)
-	 */
-	public TextEdit getJspEdit(TextEdit javaEdit) {
-
-		if (javaEdit == null)
-			return null;
-
-		List jspEdits = new ArrayList();
-
-		int offset = javaEdit.getOffset();
-		int length = javaEdit.getLength();
-
-		if (javaEdit instanceof MultiTextEdit && javaEdit.getChildren().length > 0) {
-
-			IRegion r = TextEdit.getCoverage(getAllEdits(javaEdit));
-			offset = r.getOffset();
-			length = r.getLength();
-		}
-
-		// get java ranges that will be affected by the edit
-		Position[] javaPositions = getJavaRanges(offset, length);
-
-		// record position data before the change
-		Position[] jspPositions = new Position[javaPositions.length];
-		PositionDelta[] deltas = new PositionDelta[javaPositions.length];
-		for (int i = 0; i < javaPositions.length; i++) {
-			deltas[i] = new PositionDelta(javaPositions[i].offset, javaPositions[i].length);
-			// isIndirect means the position doesn't actually exist as exact
-			// text
-			// mapping from java <-> jsp (eg. an import statement)
-			if (!isIndirect(javaPositions[i].offset))
-				jspPositions[i] = (Position) getJava2JspMap().get(javaPositions[i]);
-		}
-
-		if (DEBUG) {
-			System.out.println("================================================"); //$NON-NLS-1$
-			System.out.println("deltas:"); //$NON-NLS-1$
-			String javaText = getJavaText();
-			for (int i = 0; i < deltas.length; i++)
-				System.out.println("pos[" + deltas[i].preOffset + ":" + deltas[i].preLength + "]" + javaText.substring(deltas[i].preOffset, deltas[i].preOffset + deltas[i].preLength)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			System.out.println("==============================================="); //$NON-NLS-1$
-		}
-		UndoEdit undo = null;
-		// apply the edit to the java document
-		try {
-			undo = javaEdit.apply(getJavaDocument());
-		}
-		catch (MalformedTreeException e) {
-			Logger.logException(e);
-		}
-		catch (BadLocationException e) {
-			Logger.logException(e);
-		}
-		// now at this point Java positions are unreliable since they were
-		// updated after applying java edit.
-
-		String newJavaText = getJavaDocument().get();
-		if (DEBUG)
-			System.out.println("java post format text:\n" + newJavaText); //$NON-NLS-1$
-
-		// record post edit data
-		for (int i = 0; i < javaPositions.length; i++)
-			deltas[i].setPostEditData(javaPositions[i].offset, javaPositions[i].length, javaPositions[i].isDeleted);
-
-		// create appropriate text edits for deltas
-		Position jspPos = null;
-		String replaceText = ""; //$NON-NLS-1$
-		for (int i = 0; i < deltas.length; i++) {
-			jspPos = jspPositions[i];
-			// can be null if it's an indirect mapping position
-			// or if something was added into java that was not originally in
-			// JSP (like a new import...)
-
-			if (jspPos != null) {
-				if (deltas[i].isDeleted) {
-					jspEdits.add(new DeleteEdit(jspPos.offset, jspPos.length));
-				}
-				else {
-					replaceText = newJavaText.substring(deltas[i].postOffset, deltas[i].postOffset + deltas[i].postLength);
-
-					// get rid of pre and post white space or fine tuned
-					// adjustment later.
-					// fix text here...
-					replaceText = fixJspReplaceText(replaceText, jspPos.offset);
-
-					jspEdits.add(new ReplaceEdit(jspPos.offset, jspPos.length, replaceText));
-				}
-				if (DEBUG)
-					debugReplace(deltas, jspPos, replaceText, i);
-			}
-			else {
-				// the new Java text has no corresponding JSP position
-				// possible new import?
-				if (isImport(javaPositions[i].getOffset()) && replaceText.lastIndexOf("import ") != -1) { //$NON-NLS-1$
-					replaceText = newJavaText.substring(deltas[i].postOffset, deltas[i].postOffset + deltas[i].postLength);
-					String importText = replaceText.substring(replaceText.lastIndexOf("import "), replaceText.indexOf(";")); //$NON-NLS-1$ //$NON-NLS-2$
-					// evenutally need to check if it's XML-JSP
-					importText = "<%@page import=\"" + importText + "\" %>\n"; //$NON-NLS-1$ //$NON-NLS-2$
-					jspEdits.add(new InsertEdit(0, importText));
-				}
-			}
-		}
-		TextEdit allJspEdits = createMultiTextEdit((TextEdit[]) jspEdits.toArray(new TextEdit[jspEdits.size()]));
-
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=105632
-		// undo the java edit
-		// (so the underlying Java document still represents what's in the
-		// editor)
-		if (undo != null) {
-			try {
-				undo.apply(getJavaDocument());
-			}
-			catch (MalformedTreeException e) {
-				Logger.logException(e);
-			}
-			catch (BadLocationException e) {
-				Logger.logException(e);
-			}
-		}
-
-		return allJspEdits;
-	}
-
-	private String fixJspReplaceText(String replaceText, int jspOffset) {
-
-		// result is the text inbetween the delimiters
-		// eg.
-		// 
-		// <% result
-		// %>
-		String result = replaceText.trim();
-		String preDelimiterWhitespace = ""; //$NON-NLS-1$
-
-		IDocument jspDoc = getJspDocument();
-		if (jspDoc instanceof IStructuredDocument) {
-			IStructuredDocument sDoc = (IStructuredDocument) jspDoc;
-			IStructuredDocumentRegion[] regions = sDoc.getStructuredDocumentRegions(0, jspOffset);
-			IStructuredDocumentRegion lastRegion = regions[regions.length - 1];
-
-			// only specifically modify scriptlets
-			if (lastRegion != null && lastRegion.getType() == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) {
-				for (int i = regions.length - 1; i >= 0; i--) {
-					IStructuredDocumentRegion region = regions[i];
-
-					// is there a better way to check whitespace?
-					if (region.getType() == DOMRegionContext.XML_CONTENT && region.getFullText().trim().equals("")) { //$NON-NLS-1$
-
-						preDelimiterWhitespace = region.getFullText();
-						preDelimiterWhitespace = preDelimiterWhitespace.replaceAll("\r", ""); //$NON-NLS-1$ //$NON-NLS-2$
-						preDelimiterWhitespace = preDelimiterWhitespace.replaceAll("\n", ""); //$NON-NLS-1$ //$NON-NLS-2$
-
-						// need to determine indent for that first line...
-						String initialIndent = getInitialIndent(result);
-
-						// fix the first line of java code
-						result = TextUtilities.getDefaultLineDelimiter(sDoc) + initialIndent + result;
-
-						result = adjustIndent(result, preDelimiterWhitespace, TextUtilities.getDefaultLineDelimiter(sDoc));
-
-						// add whitespace before last delimiter to match
-						// it w/ the opening delimiter
-						result = result + TextUtilities.getDefaultLineDelimiter(sDoc) + preDelimiterWhitespace;
-						break;
-					}
-				}
-			}
-		}
-		return result;
-	}
-
-	private String adjustIndent(String textBefore, String indent, String delim) {
-
-		// first replace multiple indent with single indent
-		// the triple indent occurs because the scriptlet code
-		// actually occurs under:
-		// 
-		// class
-		// method
-		// code
-		// 
-		// in the translated java document
-		// BUG188636 - just get indent info from code formatter
-		String level1 = getCodeFormatter().createIndentationString(1);
-		String level3 = getCodeFormatter().createIndentationString(3);
-		String theOld = "\n" + level3; //$NON-NLS-1$
-		String theNew = "\n" + level1; //$NON-NLS-1$
-		textBefore = textBefore.replaceAll(theOld, theNew);
-
-		// get indent after 2nd line break
-		StringBuffer textAfter = new StringBuffer();
-		// will this work on mac?
-		textBefore = textBefore.replaceAll("\r", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		StringTokenizer st = new StringTokenizer(textBefore, "\n", true); //$NON-NLS-1$
-		while (st.hasMoreTokens()) {
-			String tok = st.nextToken();
-			if (tok.equals("\n")) { //$NON-NLS-1$
-				textAfter.append(delim);
-			}
-			else {
-				// prepend each line w/ specified indent
-				textAfter.append(indent);
-				textAfter.append(tok);
-			}
-		}
-		return textAfter.toString();
-
-	}
-
-	private String getInitialIndent(String result) {
-		// BUG188636 - just get initial indent from code formatter
-		String indent = getCodeFormatter().createIndentationString(1);
-		// // get indent after 2nd line break
-		// String indent = ""; //$NON-NLS-1$
-		// StringTokenizer st = new StringTokenizer(result, "\r\n", false);
-		// //$NON-NLS-1$
-		// if (st.countTokens() > 1) {
-		// String tok = st.nextToken();
-		// tok = st.nextToken();
-		// int index = 0;
-		// if (tok != null) {
-		// while (tok.charAt(index) == ' ' || tok.charAt(index) == '\t') {
-		// indent += tok.charAt(index);
-		// index++;
-		// }
-		// }
-		// }
-		return indent;
-	}
-
-	private CodeFormatter getCodeFormatter() {
-		if (fCodeFormatter == null)
-			fCodeFormatter = ToolFactory.createCodeFormatter(null);
-		return fCodeFormatter;
-	}
-
-
-	/**
-	 * Combines an array of edits into one MultiTextEdit (with the appropriate
-	 * coverage region)
-	 * 
-	 * @param edits
-	 * @return
-	 */
-	private TextEdit createMultiTextEdit(TextEdit[] edits) {
-
-		if (edits.length == 0)
-			return new MultiTextEdit();
-
-		IRegion region = TextEdit.getCoverage(edits);
-		MultiTextEdit multiEdit = new MultiTextEdit(region.getOffset(), region.getLength());
-		for (int i = 0; i < edits.length; i++) {
-			addToMultiEdit(edits[i], multiEdit);
-		}
-		return multiEdit;
-	}
-
-
-	private void addToMultiEdit(TextEdit edit, MultiTextEdit multiEdit) {
-
-		// check for overlap here
-		// discard overlapping edits..
-		// possible exponential performance hit... need a better way...
-		TextEdit[] children = multiEdit.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			if (children[i].covers(edit))
-				// don't add
-				return;
-		}
-		multiEdit.addChild(edit);
-	}
-
-
-	/**
-	 * @param translation
-	 */
-	private void addPositionsToDocuments() {
-
-		// can be null if it's a NullJSPTranslation
-		if (getJavaDocument() != null && getJspDocument() != null) {
-
-			HashMap java2jsp = getJava2JspMap();
-			Iterator it = java2jsp.keySet().iterator();
-			Position javaPos = null;
-			while (it.hasNext()) {
-				javaPos = (Position) it.next();
-				try {
-
-					fJavaDocument.addPosition(javaPos);
-
-				}
-				catch (BadLocationException e) {
-					if (DEBUG) {
-						System.out.println("tyring to add Java Position:[" + javaPos.offset + ":" + javaPos.length + "] to " + getJavaPath()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$					
-						// System.out.println("substring :[" +
-						// fJavaDocument.get().substring(javaPos.offset) +
-						// "]"); //$NON-NLS-1$ //$NON-NLS-2$
-						Logger.logException(e);
-					}
-				}
-
-				try {
-
-					fJspDocument.addPosition((Position) java2jsp.get(javaPos));
-
-				}
-				catch (BadLocationException e) {
-					if (DEBUG) {
-						System.out.println("tyring to add JSP Position:[" + ((Position) java2jsp.get(javaPos)).offset + ":" + ((Position) java2jsp.get(javaPos)).length + "] to " + getJavaPath()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						Logger.logException(e);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Recursively gets all child edits
-	 * 
-	 * @param javaEdit
-	 * @return all child edits
-	 */
-	private TextEdit[] getAllEdits(TextEdit javaEdit) {
-
-		List result = new ArrayList();
-		if (javaEdit instanceof MultiTextEdit) {
-			TextEdit[] children = javaEdit.getChildren();
-			for (int i = 0; i < children.length; i++)
-				result.addAll(Arrays.asList(getAllEdits(children[i])));
-		}
-		else
-			result.add(javaEdit);
-		return (TextEdit[]) result.toArray(new TextEdit[result.size()]);
-	}
-
-	/**
-	 * @param deltas
-	 * @param jspPos
-	 * @param replaceText
-	 * @param jspText
-	 * @param i
-	 */
-	private void debugReplace(PositionDelta[] deltas, Position jspPos, String replaceText, int i) {
-		String jspChunk;
-		jspChunk = getJspDocument().get().substring(jspPos.offset, jspPos.offset + jspPos.length);
-		if (!deltas[i].isDeleted) {
-			System.out.println("replacing:"); //$NON-NLS-1$
-			System.out.println("jsp:[" + jspChunk + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-			System.out.println("w/ :[" + replaceText + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-			System.out.println("--------------------------------"); //$NON-NLS-1$
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationUtil.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationUtil.java
deleted file mode 100644
index 2d72c36..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationUtil.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jst.jsp.core.internal.modelhandler.ModelHandlerForJSP;
-import org.eclipse.text.edits.CopySourceEdit;
-import org.eclipse.text.edits.CopyTargetEdit;
-import org.eclipse.text.edits.DeleteEdit;
-import org.eclipse.text.edits.InsertEdit;
-import org.eclipse.text.edits.MoveSourceEdit;
-import org.eclipse.text.edits.MoveTargetEdit;
-import org.eclipse.text.edits.MultiTextEdit;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.edits.TextEdit;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-
-public class JSPTranslationUtil {
-	protected IDocument fDocument = null;
-	protected JSPTranslationExtension fTranslation = null;
-
-	public JSPTranslationUtil(IDocument document) {
-		fDocument = document;
-	}
-
-	public TextEdit translateTextEdit(TextEdit textEdit) {
-		TextEdit translatedTextEdit = null;
-
-		int javaOffset = textEdit.getOffset();
-		int jspOffset = getTranslation().getJspOffset(textEdit.getOffset());
-		int length = textEdit.getLength();
-
-		if (textEdit instanceof MultiTextEdit) {
-			translatedTextEdit = new MultiTextEdit();
-			TextEdit[] children = ((MultiTextEdit) textEdit).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				TextEdit translatedChildTextEdit = translateTextEdit(children[i]);
-				if (translatedChildTextEdit != null)
-					((MultiTextEdit) translatedTextEdit).addChild(translatedChildTextEdit);
-			}
-		}
-		else if (textEdit instanceof ReplaceEdit) {
-			if (jspOffset == -1)
-				return null;
-
-			if (!getTranslation().javaSpansMultipleJspPartitions(javaOffset, length))
-				translatedTextEdit = new ReplaceEdit(jspOffset, length, ((ReplaceEdit) textEdit).getText());
-		}
-		else if (textEdit instanceof InsertEdit) {
-			translatedTextEdit = new InsertEdit(jspOffset, ((InsertEdit) textEdit).getText());
-		}
-		else if (textEdit instanceof DeleteEdit) {
-			translatedTextEdit = new DeleteEdit(jspOffset, length);
-			TextEdit[] children = ((DeleteEdit) textEdit).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				TextEdit translatedChildTextEdit = translateTextEdit(children[i]);
-				if (translatedChildTextEdit != null)
-					((DeleteEdit) translatedTextEdit).addChild(translatedChildTextEdit);
-			}
-		}
-		else if (textEdit instanceof CopySourceEdit) {
-			translatedTextEdit = new CopySourceEdit(jspOffset, length);
-			((CopySourceEdit) translatedTextEdit).setTargetEdit(((CopySourceEdit) textEdit).getTargetEdit());
-			((CopySourceEdit) translatedTextEdit).setSourceModifier(((CopySourceEdit) textEdit).getSourceModifier());
-		}
-		else if (textEdit instanceof CopyTargetEdit) {
-			translatedTextEdit = new CopyTargetEdit(jspOffset);
-			((CopyTargetEdit) textEdit).getSourceEdit().setTargetEdit((CopyTargetEdit) translatedTextEdit);
-		}
-		else if (textEdit instanceof MoveSourceEdit) {
-			translatedTextEdit = new MoveSourceEdit(jspOffset, length);
-			((MoveSourceEdit) translatedTextEdit).setTargetEdit(((MoveSourceEdit) textEdit).getTargetEdit());
-		}
-		else if (textEdit instanceof MoveTargetEdit) {
-			translatedTextEdit = new MoveTargetEdit(jspOffset);
-			((MoveTargetEdit) textEdit).getSourceEdit().setTargetEdit((MoveTargetEdit) translatedTextEdit);
-		}
-		else {
-			System.out.println("Need to translate " + textEdit); //$NON-NLS-1$
-		}
-
-		return translatedTextEdit;
-	}
-
-	public JSPTranslationExtension getTranslation() {
-		if (fTranslation == null) {
-			IDOMModel xmlModel = (IDOMModel) getModelManager().getExistingModelForRead(fDocument);
-			ModelHandlerForJSP.ensureTranslationAdapterFactory(xmlModel);
-			try {
-				IDOMDocument xmlDoc = xmlModel.getDocument();
-
-				JSPTranslationAdapter translationAdapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class);
-				if (translationAdapter != null)
-					fTranslation = translationAdapter.getJSPTranslation();
-			}
-			finally {
-				if (xmlModel != null) {
-					xmlModel.releaseFromRead();
-				}
-			}
-		}
-
-		return fTranslation;
-	}
-
-	public ICompilationUnit getCompilationUnit() {
-		return getTranslation().getCompilationUnit();
-	}
-
-	protected IModelManager getModelManager() {
-		return StructuredModelManager.getModelManager();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
deleted file mode 100644
index 9cd41c0..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
+++ /dev/null
@@ -1,2898 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Frits Jalvingh - contributions for bug 150794
- *     Matthias Fuessel - JSPTranslator sometimes adds tags without prefix
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Set;
-import java.util.Stack;
-
-import javax.servlet.jsp.tagext.VariableInfo;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache.PropertyGroup;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.internal.taglib.TaglibHelper;
-import org.eclipse.jst.jsp.core.internal.taglib.TaglibHelperManager;
-import org.eclipse.jst.jsp.core.internal.taglib.TaglibVariable;
-import org.eclipse.jst.jsp.core.internal.util.FacetModuleCoreSupport;
-import org.eclipse.jst.jsp.core.internal.util.ZeroStructuredDocumentRegion;
-import org.eclipse.jst.jsp.core.jspel.IJSPELTranslator;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.html.core.internal.contentmodel.JSP20Namespace;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.parser.ContextRegionContainer;
-import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocumentTracker;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-import com.ibm.icu.text.MessageFormat;
-import com.ibm.icu.util.StringTokenizer;
-
-/**
- * Translates a JSP document into a HttpServlet. Keeps two way mapping from
- * Java translation to the original JSP source, which can be obtained through
- * getJava2JspRanges() and getJsp2JavaRanges().
- */
-public class JSPTranslator {
-
-	// the name of the element in the extension point
-	private static final String EL_TRANSLATOR_EXTENSION_NAME = "elTranslator"; //$NON-NLS-1$
-
-	private static final String ELTRANSLATOR_PROP_NAME = "ELTranslator"; //$NON-NLS-1$
-
-	// Default EL Translator
-	private static final String DEFAULT_JSP_EL_TRANSLATOR_ID = "org.eclipse.jst.jsp.defaultJSP20"; //$NON-NLS-1$
-
-	// handy plugin ID constant
-	private static final String JSP_CORE_PLUGIN_ID = "org.eclipse.jst.jsp.core"; //$NON-NLS-1$
-
-	// for debugging
-	private static final boolean DEBUG = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspjavamapping")); //$NON-NLS-1$  //$NON-NLS-2$
-
-	private IJSPELTranslator fELTranslator = null;
-
-	public static final String ENDL = "\n"; //$NON-NLS-1$
-
-	String fClassHeader = null;
-	String fClassname = null;
-
-	String fImplicitImports = null;
-
-	String fServiceHeader = null;
-
-	private String fSessionVariableDeclaration = "javax.servlet.http.HttpSession session = null;" + ENDL; //$NON-NLS-1$
-	private String fFooter = "}}"; //$NON-NLS-1$
-	private String fException = "Throwable exception = null;"; //$NON-NLS-1$
-	public static final String EXPRESSION_PREFIX = "out.print(\"\"+"; //$NON-NLS-1$
-	public static final String EXPRESSION_SUFFIX = ");"; //$NON-NLS-1$
-	String fSuperclass = null;
-
-	private String fTryCatchStart = ENDL + "try {" + ENDL; //$NON-NLS-1$
-	private List fTranslationProblems = new ArrayList();
-	private String fTryCatchEnd = " } catch (java.lang.Exception e) {} " + ENDL; //$NON-NLS-1$
-
-	/** fSourcePosition = position in JSP source */
-	private int fSourcePosition = -1;
-	/** fRelativeOffest = offset in the buffer there the cursor is */
-	private int fRelativeOffset = -1;
-	/** fCursorPosition = offset in the translated java document */
-	private int fCursorPosition = -1;
-
-	/** some page directive attributes */
-	private boolean fIsErrorPage, fCursorInExpression = false;
-	private boolean fIsInASession = true;
-
-	/** user java code in body of the service method */
-	private StringBuffer fUserCode = new StringBuffer();
-	/** user EL Expression */
-	private StringBuffer fUserELExpressions = new StringBuffer();
-	/** user defined vars declared in the beginning of the class */
-	private StringBuffer fUserDeclarations = new StringBuffer();
-
-	/** user defined imports */
-	private StringBuffer fUserImports = new StringBuffer();
-
-	/**
-	 * A map of tag names to tag library variable information; used to store
-	 * the ones needed for AT_END variable support.
-	 */
-	private StackMap fTagToVariableMap = null;
-	private Stack fUseBeansStack = new Stack();
-
-	private StringBuffer fResult; // the final traslated java document
-	// string buffer
-	private StringBuffer fCursorOwner = null; // the buffer where the cursor
-	// is
-
-	private IDOMModel fStructuredModel = null;
-	private IStructuredDocument fStructuredDocument = null;
-	private IStructuredDocumentRegion fCurrentNode;
-	private boolean fInCodeRegion = false; // flag for if cursor is in the
-	// current region being translated
-
-	/**
-	 * these constants are to keep track of whether the code in question is
-	 * embedded (JSP as an attribute or within comment tags) or is just
-	 * standard JSP code, or identifies if it's an expression
-	 */
-	protected final static int STANDARD_JSP = 0;
-	protected final static int EMBEDDED_JSP = 1;
-	protected final static int DECLARATION = 2;
-	protected final static int EXPRESSION = 4;
-	protected final static int SCRIPTLET = 8;
-
-	/** used to avoid infinite looping include files */
-	private Stack fIncludes = null;
-	private Set fIncludedPaths = new HashSet(2);
-	private boolean fProcessIncludes = true;
-	/** mostly for helper classes, so they parse correctly */
-	private ArrayList fBlockMarkers = null;
-	/**
-	 * for keeping track of offset in user buffers while document is being
-	 * built
-	 */
-	private int fOffsetInUserImports = 0;
-	private int fOffsetInUserDeclarations = 0;
-	private int fOffsetInUserCode = 0;
-
-	/** correlates ranges (positions) in java to ranges in jsp */
-	private HashMap fJava2JspRanges = new HashMap();
-
-	/**
-	 * map of ranges in fUserImports (relative to the start of the buffer) to
-	 * ranges in source JSP buffer.
-	 */
-	private HashMap fImportRanges = new HashMap();
-	/**
-	 * map of ranges in fUserCode (relative to the start of the buffer) to
-	 * ranges in source JSP buffer.
-	 */
-	private HashMap fCodeRanges = new HashMap();
-	/**
-	 * map of ranges in fUserDeclarations (relative to the start of the
-	 * buffer) to ranges in source JSP buffer.
-	 */
-	private HashMap fDeclarationRanges = new HashMap();
-
-	private HashMap fUseBeanRanges = new HashMap();
-
-	private HashMap fUserELRanges = new HashMap();
-
-	/**
-	 * ranges that don't directly map from java code to JSP code (eg.
-	 * <%@include file="included.jsp"%>
-	 */
-	private HashMap fIndirectRanges = new HashMap();
-
-	private IProgressMonitor fProgressMonitor = null;
-
-	/**
-	 * save JSP document text for later use may just want to read this from
-	 * the file or strucdtured document depending what is available
-	 */
-	private StringBuffer fJspTextBuffer = new StringBuffer();
-
-
-	/**
-	 * List of EL problems to be translated
-	 */
-	private ArrayList fELProblems = new ArrayList();
-
-	/**
-	 * EL Translator ID
-	 */
-	private String fELTranslatorID;
-
-	public JSPTranslator() {
-		super();
-		init();
-	}
-
-	/**
-	 * configure using an XMLNode
-	 * 
-	 * @param node
-	 * @param monitor
-	 */
-	private void configure(IDOMNode node, IProgressMonitor monitor) {
-
-		fProgressMonitor = monitor;
-		fStructuredModel = node.getModel();
-		String baseLocation = fStructuredModel.getBaseLocation();
-
-		fELTranslatorID = getELTranslatorProperty(baseLocation);
-
-		fStructuredDocument = fStructuredModel.getStructuredDocument();
-
-		String className = createClassname(node);
-		if (className.length() > 0) {
-			setClassname(className);
-			fClassHeader = "public class " + className + " extends "; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-	}
-
-	/**
-	 * memory saving configure (no StructuredDocument in memory) currently
-	 * doesn't handle included files
-	 * 
-	 * @param jspFile
-	 * @param monitor
-	 */
-	private void configure(IFile jspFile, IProgressMonitor monitor) {
-		// when configured on a file
-		// fStructuredModel, fPositionNode, fModelQuery, fStructuredDocument
-		// are all null
-		fProgressMonitor = monitor;
-
-		fELTranslatorID = getELTranslatorProperty(jspFile);
-
-		String className = createClassname(jspFile);
-		if (className.length() > 0) {
-			setClassname(className);
-			fClassHeader = "public class " + className + " extends "; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	/**
-	 * Set the jsp text from an IFile
-	 * 
-	 * @param jspFile
-	 */
-	private void setJspText(IFile jspFile) {
-		try {
-			BufferedInputStream in = new BufferedInputStream(jspFile.getContents());
-			BufferedReader reader = new BufferedReader(new InputStreamReader(in));
-			String line = null;
-			while ((line = reader.readLine()) != null) {
-				fJspTextBuffer.append(line);
-				fJspTextBuffer.append(ENDL);
-			}
-			reader.close();
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-	}
-
-	/**
-	 * Get the value of the ELTranslator property from a workspace relative
-	 * path string
-	 * 
-	 * @param baseLocation
-	 *            Workspace-relative string path
-	 * @return Value of the ELTranslator property associated with the project.
-	 */
-	private String getELTranslatorProperty(String baseLocation) {
-		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
-		String elTranslatorValue = null;
-		IFile file = workspaceRoot.getFile(new Path(baseLocation));
-		if (file != null) {
-			elTranslatorValue = getELTranslatorProperty(file);
-		}
-		return elTranslatorValue;
-	}
-
-	/**
-	 * Get the value of the ELTranslator property from an IFile
-	 * 
-	 * @param file
-	 *            IFile
-	 * @return Value of the ELTranslator property associated with the project.
-	 */
-	private String getELTranslatorProperty(IFile file) {
-		String elTranslatorValue = null;
-		if (file != null) {
-			if (file.exists()) {
-				try {
-					elTranslatorValue = file.getPersistentProperty(new QualifiedName(JSP_CORE_PLUGIN_ID, ELTRANSLATOR_PROP_NAME));
-					if (null == elTranslatorValue) {
-
-						elTranslatorValue = file.getProject().getPersistentProperty(new QualifiedName(JSP_CORE_PLUGIN_ID, ELTRANSLATOR_PROP_NAME));
-					}
-				}
-				catch (CoreException e) {
-					// ISSUE: why do we log this here? Instead of allowing to
-					// throwup?
-					Logger.logException(e);
-				}
-
-			}
-		}
-		return elTranslatorValue;
-	}
-
-	/**
-	 * @param node
-	 * @return
-	 */
-	private String createClassname(IDOMNode node) {
-		String classname = ""; //$NON-NLS-1$
-		if (node != null) {
-			String base = node.getModel().getBaseLocation();
-			classname = JSP2ServletNameUtil.mangle(base);
-		}
-		return classname;
-	}
-
-	/**
-	 * @param jspFile
-	 * @return
-	 */
-	private String createClassname(IFile jspFile) {
-
-		String classname = ""; //$NON-NLS-1$
-		if (jspFile != null) {
-			classname = JSP2ServletNameUtil.mangle(jspFile.getFullPath().toString());
-		}
-		return classname;
-	}
-
-	private IJSPProblem createJSPProblem(final int problemEID, final int problemID, final String message, final int start, final int end) {
-		final int line = fStructuredDocument.getLineOfOffset(start);
-		final char[] classname = fClassname.toCharArray();
-
-		/*
-		 * Note: these problems would result in translation errors on the
-		 * server, so the severity is not meant to be controllable
-		 */
-		return new IJSPProblem() {
-			public void setSourceStart(int sourceStart) {
-			}
-
-			public void setSourceLineNumber(int lineNumber) {
-			}
-
-			public void setSourceEnd(int sourceEnd) {
-			}
-
-			public boolean isWarning() {
-				return false;
-			}
-
-			public boolean isError() {
-				return true;
-			}
-
-			public int getSourceStart() {
-				return start;
-			}
-
-			public int getSourceLineNumber() {
-				return line;
-			}
-
-			public int getSourceEnd() {
-				return end;
-			}
-
-			public char[] getOriginatingFileName() {
-				return classname;
-			}
-
-			public String getMessage() {
-				return message;
-			}
-
-			public int getID() {
-				return problemID;
-			}
-
-			public String[] getArguments() {
-				return new String[0];
-			}
-
-			public int getEID() {
-				return problemEID;
-			}
-		};
-	}
-
-	public void setClassname(String classname) {
-		this.fClassname = classname;
-	}
-
-	public String getClassname() {
-		return this.fClassname != null ? this.fClassname : "GenericJspServlet"; //$NON-NLS-1$
-	}
-
-	/**
-	 * So that the JSPTranslator can be reused.
-	 */
-	public void reset(IDOMNode node, IProgressMonitor progress) {
-
-		// initialize some things on node
-		configure(node, progress);
-		reset();
-		// set the jsp text buffer
-		fJspTextBuffer.append(fStructuredDocument.get());
-	}
-
-	/**
-	 * conservative version (no StructuredDocument/Model)
-	 * 
-	 * @param jspFile
-	 * @param progress
-	 */
-	public void reset(IFile jspFile, IProgressMonitor progress) {
-
-		// initialize some things on node
-		configure(jspFile, progress);
-		reset();
-		// set the jsp text buffer
-		setJspText(jspFile);
-	}
-
-	/**
-	 * Reinitialize some fields
-	 */
-	private void reset() {
-
-		// reset progress monitor
-		if (fProgressMonitor != null)
-			fProgressMonitor.setCanceled(false);
-
-		// reinit fields
-		fSourcePosition = -1;
-		fRelativeOffset = -1;
-		fCursorPosition = -1;
-
-		fIsErrorPage = fCursorInExpression = false;
-
-		fUserCode = new StringBuffer();
-		fUserDeclarations = new StringBuffer();
-		fUserImports = new StringBuffer();
-		fUserELExpressions = new StringBuffer();
-
-		fResult = null;
-		fCursorOwner = null; // the buffer where the cursor is
-
-		fCurrentNode = null;
-		fInCodeRegion = false; // flag for if cursor is in the current region
-		// being translated
-
-		if (fIncludes != null)
-			fIncludes.clear();
-
-		fBlockMarkers = null;
-
-		fOffsetInUserImports = 0;
-		fOffsetInUserDeclarations = 0;
-		fOffsetInUserCode = 0;
-
-		fJava2JspRanges.clear();
-		fImportRanges.clear();
-		fCodeRanges.clear();
-		fUseBeanRanges.clear();
-		fDeclarationRanges.clear();
-		fUserELRanges.clear();
-		fIndirectRanges.clear();
-		fIncludedPaths.clear();
-
-		fJspTextBuffer = new StringBuffer();
-
-		fELProblems = new ArrayList();
-
-	}
-
-	/**
-	 * @return just the "shell" of a servlet, nothing contributed from the JSP
-	 *         doc
-	 */
-	public final StringBuffer getEmptyTranslation() {
-		reset();
-		buildResult();
-		return getTranslation();
-	}
-
-	/**
-	 * put the final java document together
-	 */
-	private final void buildResult() {
-		// to build the java document this is the order:
-		// 
-		// + default imports
-		// + user imports
-		// + class header
-		// [+ error page]
-		// + user declarations
-		// + service method header
-		// + try/catch start
-		// + user code
-		// + try/catch end
-		// + service method footer
-		fResult = new StringBuffer(fImplicitImports.length() + fUserImports.length() + fClassHeader.length() + fUserDeclarations.length() + fServiceHeader.length() + fTryCatchStart.length() // try/catch
-					// start
-					+ fUserCode.length() + fTryCatchEnd.length() // try/catch
-					// end
-					+ fFooter.length());
-
-		int javaOffset = 0;
-
-		fResult.append(fImplicitImports);
-		javaOffset += fImplicitImports.length();
-
-		// updateRanges(fIndirectImports, javaOffset);
-		updateRanges(fImportRanges, javaOffset);
-		// user imports
-		append(fUserImports);
-		javaOffset += fUserImports.length();
-
-		// class header
-		fResult.append(fClassHeader); //$NON-NLS-1$
-		javaOffset += fClassHeader.length();
-		fResult.append(fSuperclass + "{" + ENDL); //$NON-NLS-1$
-		javaOffset += fSuperclass.length() + 2;
-
-		updateRanges(fDeclarationRanges, javaOffset);
-		// user declarations
-		append(fUserDeclarations);
-		javaOffset += fUserDeclarations.length();
-
-		updateRanges(fUserELRanges, javaOffset);
-		append(fUserELExpressions);
-		javaOffset += fUserELExpressions.length();
-
-		fResult.append(fServiceHeader);
-		javaOffset += fServiceHeader.length();
-		// session participant
-		if (fIsInASession) {
-			fResult.append(fSessionVariableDeclaration);
-			javaOffset += fSessionVariableDeclaration.length();
-		}
-		// error page
-		if (fIsErrorPage) {
-			fResult.append(fException);
-			javaOffset += fException.length();
-		}
-
-
-		fResult.append(fTryCatchStart);
-		javaOffset += fTryCatchStart.length();
-
-		updateRanges(fCodeRanges, javaOffset);
-
-		// user code
-		append(fUserCode);
-		javaOffset += fUserCode.length();
-
-
-		fResult.append(fTryCatchEnd);
-		javaOffset += fTryCatchEnd.length();
-
-		// footer
-		fResult.append(fFooter);
-		javaOffset += fFooter.length();
-
-		fJava2JspRanges.putAll(fImportRanges);
-		fJava2JspRanges.putAll(fDeclarationRanges);
-		fJava2JspRanges.putAll(fCodeRanges);
-		fJava2JspRanges.putAll(fUserELRanges);
-
-	}
-
-	/**
-	 * @param javaRanges
-	 * @param offsetInJava
-	 */
-	private void updateRanges(HashMap rangeMap, int offsetInJava) {
-		// just need to update java ranges w/ the offset we now know
-		Iterator it = rangeMap.keySet().iterator();
-		while (it.hasNext())
-			((Position) it.next()).offset += offsetInJava;
-	}
-
-	/**
-	 * map of ranges (positions) in java document to ranges in jsp document
-	 * 
-	 * @return a map of java positions to jsp positions.
-	 */
-	public HashMap getJava2JspRanges() {
-		return fJava2JspRanges;
-	}
-
-	/**
-	 * map of ranges in jsp document to ranges in java document.
-	 * 
-	 * @return a map of jsp positions to java positions, or null if no
-	 *         translation has occured yet (the map hasn't been built).
-	 */
-	public HashMap getJsp2JavaRanges() {
-		if (fJava2JspRanges == null)
-			return null;
-		HashMap flipFlopped = new HashMap();
-		Iterator keys = fJava2JspRanges.keySet().iterator();
-		Object range = null;
-		while (keys.hasNext()) {
-			range = keys.next();
-			flipFlopped.put(fJava2JspRanges.get(range), range);
-		}
-		return flipFlopped;
-	}
-
-	public HashMap getJava2JspImportRanges() {
-		return fImportRanges;
-	}
-
-	public HashMap getJava2JspUseBeanRanges() {
-		return fUseBeanRanges;
-	}
-
-	public HashMap getJava2JspIndirectRanges() {
-		return fIndirectRanges;
-	}
-
-	/**
-	 * Adds to the jsp<->java map by default
-	 * 
-	 * @param value
-	 *            a comma delimited list of imports
-	 */
-	protected void addImports(String value) {
-		addImports(value, true);
-	}
-
-	/**
-	 * Pass in a comma delimited list of import values, appends each to the
-	 * final result buffer
-	 * 
-	 * @param value
-	 *            a comma delimited list of imports
-	 */
-	protected void addImports(String value, boolean addToMap) {
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=81687
-		// added the "addToMap" parameter to exclude imports originating
-		// from included JSP files to be added to the jsp<->java mapping
-		StringTokenizer st = new StringTokenizer(value, ",", false); //$NON-NLS-1$
-		String tok = ""; //$NON-NLS-1$
-		// String appendage = ""; //$NON-NLS-1$
-		while (st.hasMoreTokens()) {
-			tok = st.nextToken();
-			appendImportToBuffer(tok, fCurrentNode, addToMap);
-		}
-	}
-
-	/**
-	 * /* keep track of cursor position inside the buffer /* appends buffer to
-	 * the final result buffer
-	 */
-	protected void append(StringBuffer buf) {
-		if (getCursorOwner() == buf) {
-			fCursorPosition = fResult.length() + getRelativeOffset();
-		}
-		fResult.append(buf.toString());
-	}
-
-	/**
-	 * Only valid after a configure(...), translate(...) or
-	 * translateFromFile(...) call
-	 * 
-	 * @return the current result (java translation) buffer
-	 */
-	public final StringBuffer getTranslation() {
-
-		if (DEBUG) {
-			StringBuffer debugString = new StringBuffer();
-			try {
-				Iterator it = fJava2JspRanges.keySet().iterator();
-				while (it.hasNext()) {
-					debugString.append("--------------------------------------------------------------\n"); //$NON-NLS-1$
-					Position java = (Position) it.next();
-					debugString.append("Java range:[" + java.offset + ":" + java.length + "]\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					debugString.append("[" + fResult.toString().substring(java.offset, java.offset + java.length) + "]\n"); //$NON-NLS-1$ //$NON-NLS-2$
-					debugString.append("--------------------------------------------------------------\n"); //$NON-NLS-1$
-					debugString.append("|maps to...|\n"); //$NON-NLS-1$
-					debugString.append("==============================================================\n"); //$NON-NLS-1$
-					Position jsp = (Position) fJava2JspRanges.get(java);
-					debugString.append("JSP range:[" + jsp.offset + ":" + jsp.length + "]\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					debugString.append("[" + fJspTextBuffer.toString().substring(jsp.offset, jsp.offset + jsp.length) + "]\n"); //$NON-NLS-1$ //$NON-NLS-2$
-					debugString.append("==============================================================\n"); //$NON-NLS-1$
-					debugString.append("\n"); //$NON-NLS-1$
-					debugString.append("\n"); //$NON-NLS-1$
-				}
-			}
-			catch (Exception e) {
-				Logger.logException("JSPTranslation error", e); //$NON-NLS-1$
-			}
-			Logger.log(Logger.INFO_DEBUG, debugString.toString());
-		}
-
-		return fResult;
-	}
-
-	public List getTranslationProblems() {
-		return fTranslationProblems;
-	}
-
-	/**
-	 * Only valid after a configure(...), translate(...) or
-	 * translateFromFile(...) call
-	 * 
-	 * @return the text in the JSP file
-	 */
-	public final String getJspText() {
-		return fJspTextBuffer.toString();
-	}
-
-	/**
-	 * @deprecated
-	 * @param tagToAdd
-	 */
-	protected void addTaglibVariables(String tagToAdd) {
-		addTaglibVariables(tagToAdd, getCurrentNode());
-	}
-
-	protected void addTaglibVariables(String tagToAdd, ITextRegionCollection customTag) {
-		IFile f = getFile();
-
-		if (f == null || !f.exists())
-			return;
-
-		TaglibHelper helper = TaglibHelperManager.getInstance().getTaglibHelper(f);
-		/*
-		 * Variables can declare as available when NESTED, AT_BEGIN, or
-		 * AT_END. For AT_END variables, store the entire list of variables in
-		 * the map field so it can be used on the end tag.
-		 */
-		String decl = ""; //$NON-NLS-1$
-		if (customTag.getFirstRegion().getType().equals(DOMRegionContext.XML_TAG_OPEN)) {
-			TaglibVariable[] taglibVars = helper.getTaglibVariables(tagToAdd, getStructuredDocument(), customTag);
-
-			// Bug 199047
-			/*
-			 * Add AT_BEGIN variables
-			 */
-			for (int i = 0; i < taglibVars.length; i++) {
-				if (taglibVars[i].getScope() == VariableInfo.AT_BEGIN) {
-					decl = taglibVars[i].getDeclarationString();
-					appendToBuffer(decl, fUserCode, false, customTag);
-				}
-			}
-
-			/**
-			 * Add opening curly brace
-			 */
-
-			StringBuffer text = new StringBuffer();
-			text.append("{ // <"); //$NON-NLS-1$
-			text.append(tagToAdd);
-			text.append(">\n"); //$NON-NLS-1$
-			appendToBuffer(text.toString(), fUserCode, false, customTag); //$NON-NLS-1$
-
-			/**
-			 * Add NESTED variables
-			 */
-			for (int i = 0; i < taglibVars.length; i++) {
-				if (taglibVars[i].getScope() == VariableInfo.NESTED) {
-					decl = taglibVars[i].getDeclarationString();
-					appendToBuffer(decl, fUserCode, false, customTag);
-				}
-			}
-
-			/**
-			 * If empty, pop from stack, add ending curly brace and AT_END
-			 * variables
-			 */
-			if (customTag.getLastRegion().getType().equals(DOMRegionContext.XML_EMPTY_TAG_CLOSE)) {
-				text = new StringBuffer();
-				text.append("} // </"); //$NON-NLS-1$
-				text.append(tagToAdd);
-				text.append("/>\n"); //$NON-NLS-1$
-				appendToBuffer(text.toString(), fUserCode, false, customTag); //$NON-NLS-1$
-				for (int i = 0; i < taglibVars.length; i++) {
-					if (taglibVars[i].getScope() == VariableInfo.AT_END) {
-						decl = taglibVars[i].getDeclarationString();
-						appendToBuffer(decl, fUserCode, false, customTag);
-					}
-				}
-			}
-			else {
-				/*
-				 * Store for use at end tag and for accurate pairing even with
-				 * extra end tags (with empty non-null array)
-				 */
-				fTagToVariableMap.push(tagToAdd, taglibVars);
-			}
-		}
-		/**
-		 * Pop from stack, add ending curly brace and AT_END variables
-		 */
-		else if (customTag.getFirstRegion().getType().equals(DOMRegionContext.XML_END_TAG_OPEN)) {
-			// pop the variables
-			TaglibVariable[] taglibVars = (TaglibVariable[]) fTagToVariableMap.pop(tagToAdd);
-			if (taglibVars != null) {
-				// even an empty array will indicate a need for a closing
-				// brace
-				StringBuffer text = new StringBuffer();
-				text.append("} // </"); //$NON-NLS-1$
-				text.append(tagToAdd);
-				text.append(">\n"); //$NON-NLS-1$
-				appendToBuffer(text.toString(), fUserCode, false, customTag); //$NON-NLS-1$
-
-				/*
-				 * Add AT_END variables
-				 */
-				for (int i = 0; i < taglibVars.length; i++) {
-					if (taglibVars[i].getScope() == VariableInfo.AT_END) {
-						decl = taglibVars[i].getDeclarationString();
-						appendToBuffer(decl, fUserCode, false, customTag);
-					}
-				}
-			}
-			else {
-				// report an unmatched end tag in fTranslationProblems ?
-			}
-		}
-	}
-
-	private IFile getFile() {
-		IFile f = null;
-		IStructuredModel sModel = StructuredModelManager.getModelManager().getExistingModelForRead(getStructuredDocument());
-		try {
-			if (sModel != null) {
-				Path path = new Path(sModel.getBaseLocation());
-				if (path.segmentCount() > 1) {
-					f = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-				}
-				if (f != null && f.isAccessible()) {
-					return f;
-				}
-			}
-			return null;
-		}
-		finally {
-			if (sModel != null)
-				sModel.releaseFromRead();
-		}
-	}
-
-	/*
-	 * used by inner helper class (XMLJSPRegionHelper, JSPIncludeRegionHelper)
-	 */
-	public List getBlockMarkers() {
-		if (fBlockMarkers == null)
-			fBlockMarkers = new ArrayList();
-		return fBlockMarkers;
-	}
-
-	/**
-	 * /* the main control loop for translating the document, driven by the
-	 * structuredDocument nodes
-	 */
-	public void translate() {
-		if (fTagToVariableMap == null) {
-			fTagToVariableMap = new StackMap();
-		}
-		fTranslationProblems.clear();
-
-		setCurrentNode(new ZeroStructuredDocumentRegion(fStructuredDocument, 0));
-		translatePreludes();
-
-		setCurrentNode(fStructuredDocument.getFirstStructuredDocumentRegion());
-
-		while (getCurrentNode() != null && !isCanceled()) {
-
-			// intercept HTML comment flat node
-			// also handles UNDEFINED (which is what CDATA comes in as)
-			// basically this part will handle any "embedded" JSP containers
-			if (getCurrentNode().getType() == DOMRegionContext.XML_COMMENT_TEXT || getCurrentNode().getType() == DOMRegionContext.XML_CDATA_TEXT || getCurrentNode().getType() == DOMRegionContext.UNDEFINED) {
-				translateXMLCommentNode(getCurrentNode());
-			}
-			else {
-				// iterate through each region in the flat node
-				translateRegionContainer(getCurrentNode(), STANDARD_JSP);
-			}
-			if (getCurrentNode() != null)
-				advanceNextNode();
-		}
-
-		setCurrentNode(new ZeroStructuredDocumentRegion(fStructuredDocument, fStructuredDocument.getLength()));
-		translateCodas();
-
-		/*
-		 * Make sure any extra custom tag start tags won't cause compiler
-		 * problems, they should instead be reported as unbalanced tags
-		 */
-		for (int i = 0; i < fTagToVariableMap.size(); i++) {
-			appendToBuffer("}", fUserCode, false, fStructuredDocument.getLastStructuredDocumentRegion());
-		}
-		fTagToVariableMap.clear();
-
-		// Now do the same for jsp:useBean tags, whose contents get their own {/}
-		while (!fUseBeansStack.isEmpty()) {
-			appendToBuffer("}", fUserCode, false, fStructuredDocument.getLastStructuredDocumentRegion());
-			fUseBeansStack.pop();
-		}
-
-		buildResult();
-	}
-
- 	/**
-	 * Translates a region container (and XML JSP container, or <% JSP
-	 * container). This method should only be called in this class and for
-	 * containers in the primary structured document as all buffer appends
-	 * will be direct.
-	 */
-	protected void setDocumentContent(IDocument document, InputStream contentStream, String charset) {
-		Reader in = null;
-		try {
-			in = new BufferedReader(new InputStreamReader(contentStream, charset), 2048);
-			StringBuffer buffer = new StringBuffer(2048);
-			char[] readBuffer = new char[2048];
-			int n = in.read(readBuffer);
-			while (n > 0) {
-				buffer.append(readBuffer, 0, n);
-				n = in.read(readBuffer);
-			}
-			document.set(buffer.toString());
-		}
-		catch (IOException x) {
-			// ignore
-		}
-		finally {
-			if (in != null) {
-				try {
-					in.close();
-				}
-				catch (IOException x) {
-					// ignore
-				}
-			}
-		}
-	}
-
-	protected void init() {
-		fClassHeader = "public class _JSPServlet extends "; //$NON-NLS-1$
-		fClassname = "_JSPServlet"; //$NON-NLS-1$
-
-		fImplicitImports = "import javax.servlet.*;" + ENDL + //$NON-NLS-1$
-					"import javax.servlet.http.*;" + ENDL + //$NON-NLS-1$
-					"import javax.servlet.jsp.*;" + ENDL + ENDL; //$NON-NLS-1$
-
-		fServiceHeader = "public void _jspService(javax.servlet.http.HttpServletRequest request," + //$NON-NLS-1$
-					" javax.servlet.http.HttpServletResponse response)" + ENDL + //$NON-NLS-1$
-					"\t\tthrows java.io.IOException, javax.servlet.ServletException {" + ENDL + //$NON-NLS-1$
-					"javax.servlet.jsp.PageContext pageContext = null;" + ENDL + //$NON-NLS-1$
-					"javax.servlet.ServletContext application = null;" + ENDL + //$NON-NLS-1$
-					"javax.servlet.ServletConfig config = null;" + ENDL + //$NON-NLS-1$ 
-					"javax.servlet.jsp.JspWriter out = null;" + ENDL + //$NON-NLS-1$
-					"Object page = null;" + ENDL; //$NON-NLS-1$
-		fSuperclass = "javax.servlet.http.HttpServlet"; //$NON-NLS-1$
-	}
-
-	/**
-	 * 
-	 * @return the status of the translator's progrss monitor, false if the
-	 *         monitor is null
-	 */
-	private boolean isCanceled() {
-		return (fProgressMonitor == null) ? false : fProgressMonitor.isCanceled();
-	}
-
-	private void advanceNextNode() {
-		setCurrentNode(getCurrentNode().getNext());
-		if (getCurrentNode() != null)
-			setSourceReferencePoint();
-	}
-
-	private void setSourceReferencePoint() {
-		if (isJSP(getCurrentNode().getFirstRegion().getType())) {
-			Iterator it = getCurrentNode().getRegions().iterator();
-			ITextRegion r = null;
-			while (it.hasNext()) {
-				r = (ITextRegion) it.next();
-				if (r.getType() == DOMJSPRegionContexts.JSP_CONTENT || r.getType() == DOMRegionContext.XML_CONTENT)
-					break;
-				else if (r.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME)
-					break;
-				else if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE && getCurrentNode().getFullText(r).trim().equals("import")) //$NON-NLS-1$
-					break;
-			}
-		}
-	}
-
-	/**
-	 * translates a region container (and XML JSP container, or <% JSP
-	 * container)
-	 * 
-	 * This method should only be called in this class and for containers in
-	 * the primary structured document as all buffer appends will be direct
-	 */
-	protected void translateRegionContainer(ITextRegionCollection container, int JSPType) {
-
-		ITextRegionCollection containerRegion = container;
-
-		Iterator regions = containerRegion.getRegions().iterator();
-		ITextRegion region = null;
-		while (regions.hasNext()) {
-
-			region = (ITextRegion) regions.next();
-
-			String type = region.getType();
-
-			// content assist was not showing up in JSP inside a javascript
-			// region
-			if (DOMRegionContext.BLOCK_TEXT.equals(type)) {
-				// check if it's nested jsp in a script tag...
-				if (region instanceof ITextRegionContainer) {
-					// pass in block text's container & iterator
-					Iterator regionIterator = ((ITextRegionCollection) region).getRegions().iterator();
-					translateJSPNode(region, regionIterator, type, EMBEDDED_JSP);
-				}
-				else {
-					/**
-					 * LIMITATION - Normally the script content within a
-					 * script tag is a single document region with a single
-					 * BLOCK_TEXT text region within it. Any JSP scripting
-					 * will be within its own region container (for the sake
-					 * of keeping the scripting open/content/end as a group)
-					 * also of BLOCK_TEXT. That ignores custom tags that might
-					 * be in there, though, as they require proper scoping and
-					 * variable declaration to be performed even though
-					 * they're not proper nodes in the DOM. The only way to
-					 * really do this is to treat the entire script content as
-					 * JSP content on its own, akin to an included segment.
-					 * Further complicating this solution is that tagdependent
-					 * custom tags have their comment marked as BLOCK_TEXT as
-					 * well, so there's no clear way to tell the two cases
-					 * apart.
-					 */
-
-					// ////////////////////////////////////////////////////////////////////////////////
-					// THIS EMBEDDED JSP TEXT WILL COME OUT LATER WHEN
-					// PARTITIONING HAS
-					// SUPPORT FOR NESTED XML-JSP
-					// CMVC 241882
-					decodeScriptBlock(containerRegion.getFullText(region), containerRegion.getStartOffset());
-					// ////////////////////////////////////////////////////////////////////////////////
-				}
-			}
-			// if (region instanceof ITextRegionCollection &&
-			// ((ITextRegionCollection) region).getNumberOfRegions() > 0) {
-			// translateRegionContainer((ITextRegionCollection) region,
-			// EMBEDDED_JSP);
-			// }
-			if (type != null && isJSP(type)) // <%, <%=, <%!, <%@
-			{
-				// translateJSPNode(region, regions, type, JSPType);
-				translateJSPNode(containerRegion, regions, type, JSPType);
-			}
-			else if (type != null && (type == DOMRegionContext.XML_TAG_OPEN || type == DOMRegionContext.XML_END_TAG_OPEN)) {
-				translateXMLNode(containerRegion, regions);
-			}
-		}
-		// }
-	}
-
-	/*
-	 * ////////////////////////////////////////////////////////////////////////////////// **
-	 * TEMP WORKAROUND FOR CMVC 241882 Takes a String and blocks out
-	 * jsp:scriptlet, jsp:expression, and jsp:declaration @param blockText
-	 * @return
-	 */
-	void decodeScriptBlock(String blockText, int startOfBlock) {
-		XMLJSPRegionHelper helper = new XMLJSPRegionHelper(this, false);
-		helper.addBlockMarker(new BlockMarker("jsp:scriptlet", null, DOMJSPRegionContexts.JSP_CONTENT, false)); //$NON-NLS-1$
-		helper.addBlockMarker(new BlockMarker("jsp:expression", null, DOMJSPRegionContexts.JSP_CONTENT, false)); //$NON-NLS-1$
-		helper.addBlockMarker(new BlockMarker("jsp:declaration", null, DOMJSPRegionContexts.JSP_CONTENT, false)); //$NON-NLS-1$
-		helper.addBlockMarker(new BlockMarker("jsp:directive.include", null, DOMJSPRegionContexts.JSP_CONTENT, false)); //$NON-NLS-1$
-		helper.addBlockMarker(new BlockMarker("jsp:directive.taglib", null, DOMJSPRegionContexts.JSP_CONTENT, false)); //$NON-NLS-1$
-		helper.reset(blockText, startOfBlock);
-		// force parse
-		helper.forceParse();
-	}
-
-	/*
-	 * returns string minus CDATA open and close text
-	 */
-	final public String stripCDATA(String text) {
-		String resultText = ""; //$NON-NLS-1$
-		String CDATA_OPEN = "<![CDATA["; //$NON-NLS-1$
-		String CDATA_CLOSE = "]]>"; //$NON-NLS-1$
-		int start = 0;
-		int end = text.length();
-		while (start < text.length()) {
-			if (text.indexOf(CDATA_OPEN, start) > -1) {
-				end = text.indexOf(CDATA_OPEN, start);
-				resultText += text.substring(start, end);
-				start = end + CDATA_OPEN.length();
-			}
-			else if (text.indexOf(CDATA_CLOSE, start) > -1) {
-				end = text.indexOf(CDATA_CLOSE, start);
-				resultText += text.substring(start, end);
-				start = end + CDATA_CLOSE.length();
-			}
-			else {
-				end = text.length();
-				resultText += text.substring(start, end);
-				break;
-			}
-		}
-		return resultText;
-	}
-
-	// END OF WORKAROUND CODE...
-	// /////////////////////////////////////////////////////////////////////////////////////
-	/**
-	 * determines if the type is a pure JSP type (not XML)
-	 */
-	protected boolean isJSP(String type) {
-		return ((type == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN || type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN || type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN || type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || type == DOMJSPRegionContexts.JSP_CONTENT || type == DOMJSPRegionContexts.JSP_EL_OPEN) && type != DOMRegionContext.XML_TAG_OPEN);
-		// checking XML_TAG_OPEN so <jsp:directive.xxx/> gets treated like
-		// other XML jsp tags
-	}
-
-	/**
-	 * translates the various XMLJSP type nodes
-	 * 
-	 * @param regions
-	 *            the regions of the XMLNode
-	 */
-	protected void translateXMLNode(ITextRegionCollection container, Iterator regions) {
-		// contents must be valid XHTML, translate escaped CDATA into what it
-		// really is...
-		ITextRegion r = null;
-		if (regions.hasNext()) {
-			r = (ITextRegion) regions.next();
-			// <jsp:directive.xxx > comes in as this
-			if (r.getType() == DOMRegionContext.XML_TAG_NAME || r.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME)
-
-			{
-				String fullTagName = container.getText(r);
-				if (fullTagName.indexOf(':') > -1 && !fullTagName.startsWith("jsp:")) {
-					addTaglibVariables(fullTagName, container); // it
-					// may
-					// be a
-					// custom
-					// tag
-				}
-				StringTokenizer st = new StringTokenizer(fullTagName, ":.", false); //$NON-NLS-1$
-				if (st.hasMoreTokens() && st.nextToken().equals("jsp")) //$NON-NLS-1$
-				{
-					if (st.hasMoreTokens()) {
-						String jspTagName = st.nextToken();
-
-						if (jspTagName.equals("scriptlet")) //$NON-NLS-1$
-						{
-							translateXMLJSPContent(SCRIPTLET);
-						}
-						else if (jspTagName.equals("expression")) //$NON-NLS-1$
-						{
-							translateXMLJSPContent(EXPRESSION);
-						}
-						else if (jspTagName.equals("declaration")) //$NON-NLS-1$
-						{
-							translateXMLJSPContent(DECLARATION);
-						}
-						else if (jspTagName.equals("directive")) //$NON-NLS-1$
-						{
-							if (st.hasMoreTokens()) {
-								String directiveName = st.nextToken();
-								if (directiveName.equals("taglib")) { //$NON-NLS-1$
-									while (r != null && regions.hasNext()) {
-										r = (ITextRegion) regions.next();
-										if (r.getType().equals(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) && container.getText(r).equals(JSP11Namespace.ATTR_NAME_PREFIX)) {
-											String prefix = getAttributeValue(r, regions);
-											if (prefix != null) {
-												handleTaglib(prefix);
-												break;
-											}
-										}
-										if (r.getType().equals(DOMRegionContext.XML_TAG_CLOSE) || r.getType().equals(DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE)) {
-										    break;
-										}
-									}
-									return;
-								}
-								else if (directiveName.equals("include")) { //$NON-NLS-1$
-
-									String fileLocation = ""; //$NON-NLS-1$
-
-									// skip to required "file" attribute,
-									// should be safe because
-									// "file" is the only attribute for the
-									// include directive
-									while (r != null && regions.hasNext() && !r.getType().equals(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME)) {
-										r = (ITextRegion) regions.next();
-									}
-									fileLocation = getAttributeValue(r, regions);
-									if (fileLocation != null)
-										handleIncludeFile(fileLocation);
-								}
-								else if (directiveName.equals("page")) { //$NON-NLS-1$
-
-									// bad if currentNode is referenced after
-									// here w/ the current list
-									// see:
-									// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3035
-									// setCurrentNode(getCurrentNode().getNext());
-									if (getCurrentNode() != null) {
-										// 'regions' contain the attrs
-										translatePageDirectiveAttributes(regions, getCurrentNode());
-									}
-								}
-								else if (directiveName.equals("tag")) { //$NON-NLS-1$
-									translatePageDirectiveAttributes(regions, getCurrentNode());
-								}
-								else if (directiveName.equals("variable")) { //$NON-NLS-1$
-									translateVariableDirectiveAttributes(regions);
-								}
-							}
-						}
-						else if (jspTagName.equals("include")) { //$NON-NLS-1$
-							// <jsp:include page="filename") />
-							checkAttributeValueContainer(regions, "page"); //$NON-NLS-1$
-						}
-						else if (jspTagName.equals("forward")) { //$NON-NLS-1$
-							checkAttributeValueContainer(regions, "page"); //$NON-NLS-1$
-						}
-						else if (jspTagName.equals("param")) { //$NON-NLS-1$
-							checkAttributeValueContainer(regions, "value"); //$NON-NLS-1$
-						}
-						else if (jspTagName.equals("setProperty")) { //$NON-NLS-1$
-							checkAttributeValueContainer(regions, "value"); //$NON-NLS-1$
-						}
-						else if (jspTagName.equals("useBean")) //$NON-NLS-1$
-						{
-							checkAttributeValueContainer(regions, "name"); //$NON-NLS-1$
-							// https://bugs.eclipse.org/bugs/show_bug.cgi?id=103004
-							// advanceNextNode(); // get the content
-							if (getCurrentNode() != null) {
-								translateUseBean(container); // 'regions'
-							}
-						}
-
-					}
-				}
-				else {
-					checkAllAttributeValueContainers(regions);
-				}
-			}
-		}
-	}
-
-	/**
-	 * translates embedded containers for ALL attribute values
-	 * 
-	 * @param regions
-	 */
-	private void checkAllAttributeValueContainers(Iterator regions) {
-		// tag name is not jsp
-		// handle embedded jsp attributes...
-		ITextRegion embedded = null;
-		// Iterator attrRegions = null;
-		// ITextRegion attrChunk = null;
-		while (regions.hasNext()) {
-			embedded = (ITextRegion) regions.next();
-			if (embedded instanceof ITextRegionContainer) {
-				// parse out container
-
-				// https://bugs.eclipse.org/bugs/show_bug.cgi?id=130606
-				// fix exponential iteration problem w/ embedded expressions
-				translateEmbeddedJSPInAttribute((ITextRegionContainer) embedded);
-				// attrRegions = ((ITextRegionContainer)
-				// embedded).getRegions().iterator();
-				// while (attrRegions.hasNext()) {
-				// attrChunk = (ITextRegion) attrRegions.next();
-				// String type = attrChunk.getType();
-				// // embedded JSP in attribute support only want to
-				// // translate one time per
-				// // embedded region so we only translate on the JSP open
-				// // tags (not content)
-				// if (type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN ||
-				// type ==
-				// DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || type ==
-				// DOMJSPRegionContexts.JSP_DECLARATION_OPEN || type ==
-				// DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN || type ==
-				// DOMJSPRegionContexts.JSP_EL_OPEN) {
-				// // now call jsptranslate
-				// translateEmbeddedJSPInAttribute((ITextRegionContainer)
-				// embedded);
-				// break;
-				// }
-				// }
-			}
-		}
-	}
-
-	/**
-	 * translates embedded container for specified attribute
-	 * 
-	 * @param regions
-	 * @param attrName
-	 */
-	private void checkAttributeValueContainer(Iterator regions, String attrName) {
-		ITextRegion r = null;
-		while (regions.hasNext()) {
-			r = (ITextRegion) regions.next();
-			if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME && getCurrentNode().getText(r).equals(attrName)) { //$NON-NLS-1$
-				// skip to attribute value
-				while (regions.hasNext() && (r = (ITextRegion) regions.next()) != null) {
-					if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)
-						break;
-				}
-				// forces embedded region to be translated
-				if (r instanceof ContextRegionContainer) {
-					translateEmbeddedJSPInAttribute((ContextRegionContainer) r);
-				}
-				break;
-			}
-		}
-	}
-
-	/*
-	 * example:
-	 * 
-	 * <jsp:scriptlet>scriptlet jsp-java content <![CDATA[ more jsp java ]]>
-	 * jsp-java content... <![CDATA[ more jsp java ]]> </jsp:scriptlet>
-	 * 
-	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=93366
-	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=88590 translate
-	 * everything inbetween <scriptlet> tags, which may be more than one
-	 * region (esp. CDATA)
-	 * 
-	 */
-	private void translateXMLJSPContent(int type) {
-
-		IStructuredDocumentRegion sdr = getCurrentNode().getNext();
-		int start = sdr.getStartOffset();
-		int end = sdr.getEndOffset();
-		String sdrText = ""; //$NON-NLS-1$
-
-		// read structured document regions until
-		// </jsp:scriptlet> or EOF
-		while (sdr != null && sdr.getType() != DOMRegionContext.XML_TAG_NAME) {
-
-			// setup for next region
-			start = sdr.getStartOffset();
-			sdrText = sdr.getText();
-
-			if (sdr.getType() == DOMRegionContext.XML_CDATA_TEXT) {
-
-				// just to be safe, make sure CDATA start & end are there
-				if (sdrText.startsWith("<![CDATA[") && sdrText.endsWith("]]>")) { //$NON-NLS-1$ //$NON-NLS-2$
-
-					start = sdr.getStartOffset() + 9; // <![CDATA[
-					end = sdr.getEndOffset() - 3; // ]]>
-					sdrText = sdrText.substring(9, sdrText.length() - 3);
-					writeToBuffer(type, sdrText, start, end);
-				}
-			}
-			else {
-
-				// handle entity references
-				sdrText = EscapedTextUtil.getUnescapedText(sdrText);
-				end = sdr.getEndOffset();
-				writeToBuffer(type, sdrText, start, end);
-			}
-			sdr = sdr.getNext();
-		}
-		setCurrentNode(sdr);
-		setSourceReferencePoint();
-	}
-
-	private void writeToBuffer(int type, String content, int jspStart, int jspEnd) {
-		switch (type) {
-			case SCRIPTLET :
-				translateScriptletString(content, getCurrentNode(), jspStart, jspEnd - jspStart, false);
-				break;
-			case EXPRESSION :
-				translateExpressionString(content, getCurrentNode(), jspStart, jspEnd - jspStart, false);
-				break;
-			case DECLARATION :
-				translateDeclarationString(content, getCurrentNode(), jspStart, jspEnd - jspStart, false);
-				break;
-		}
-	}
-
-	/**
-	 * goes through comment regions, checks if any are an embedded JSP
-	 * container if it finds one, it's sends the container into the
-	 * translation routine
-	 */
-	protected void translateXMLCommentNode(IStructuredDocumentRegion node) {
-		Iterator it = node.getRegions().iterator();
-		ITextRegion commentRegion = null;
-		while (it != null && it.hasNext()) {
-			commentRegion = (ITextRegion) it.next();
-			if (commentRegion instanceof ITextRegionContainer) {
-				translateRegionContainer((ITextRegionContainer) commentRegion, EMBEDDED_JSP); // it's
-				// embedded
-				// jsp...iterate
-				// regions...
-			}
-			else if (DOMRegionContext.XML_COMMENT_TEXT.equals(commentRegion.getType())) {
-				// https://bugs.eclipse.org/bugs/show_bug.cgi?id=222215
-				// support custom tags hidden in a comment
-				decodeScriptBlock(node.getFullText(commentRegion), node.getStartOffset(commentRegion));
-			}
-		}
-	}
-
-	/**
-	 * determines which type of JSP node to translate
-	 */
-	protected void translateJSPNode(ITextRegion region, Iterator regions, String type, int JSPType) {
-		if (type == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN && regions != null) {
-			translateDirective(regions);
-		}
-		else {
-			ITextRegionCollection contentRegion = null;
-			if (JSPType == STANDARD_JSP && (setCurrentNode(getCurrentNode().getNext())) != null) {
-				contentRegion = getCurrentNode();
-			}
-			else if (JSPType == EMBEDDED_JSP && region instanceof ITextRegionCollection) {
-				translateEmbeddedJSPInBlock((ITextRegionCollection) region, regions);
-				// ensure the rest of this method won't be called
-			}
-			if (contentRegion != null) {
-				if (type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) {
-					translateExpression(contentRegion);
-				}
-				else if (type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN) {
-					translateDeclaration(contentRegion);
-				}
-				else if (type == DOMJSPRegionContexts.JSP_CONTENT || type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) {
-					translateScriptlet(contentRegion);
-				}
-			}
-			else {
-				// this is the case of an attribute w/ no region <p
-				// align="<%%>">
-				setCursorOwner(getJSPTypeForRegion(region));
-			}
-		}
-	}
-
-
-	private void translateEL(String elText, String delim, IStructuredDocumentRegion currentNode, int contentStart, int contentLength) {
-		IJSPELTranslator translator = getELTranslator();
-		if (null != translator) {
-			translator.translateEL(elText, delim, currentNode, contentStart, contentLength, fUserELExpressions, fUserELRanges, fStructuredDocument);
-		}
-	}
-
-	/**
-	 * Discover and instantiate an EL translator.
-	 */
-	public IJSPELTranslator getELTranslator() {
-		if (fELTranslator == null) {
-
-			/*
-			 * name of plugin that exposes this extension point
-			 */
-			IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(JSP_CORE_PLUGIN_ID, EL_TRANSLATOR_EXTENSION_NAME); // -
-			// extension
-			// id
-
-			// Iterate over all declared extensions of this extension point.
-			// A single plugin may extend the extension point more than once,
-			// although it's not recommended.
-			IConfigurationElement bestTranslator = null;
-			IExtension[] extensions = extensionPoint.getExtensions();
-			for (int curExtension = 0; curExtension < extensions.length; curExtension++) {
-				IExtension extension = extensions[curExtension];
-
-				IConfigurationElement[] translators = extension.getConfigurationElements();
-				for (int curTranslator = 0; curTranslator < translators.length; curTranslator++) {
-
-					IConfigurationElement elTranslator = translators[curTranslator];
-
-					if (!EL_TRANSLATOR_EXTENSION_NAME.equals(elTranslator.getName())) { // -
-						// name
-						// of
-						// configElement
-						continue;
-					}
-
-					String idString = elTranslator.getAttribute("id"); //$NON-NLS-1$
-					if (null != idString && idString.equals(fELTranslatorID) || (null == bestTranslator && DEFAULT_JSP_EL_TRANSLATOR_ID.equals(idString))) {
-						bestTranslator = elTranslator;
-					}
-				}
-			}
-
-			if (null != bestTranslator) {
-				try {
-					Object execExt = bestTranslator.createExecutableExtension("class"); //$NON-NLS-1$
-					if (execExt instanceof IJSPELTranslator) {
-						return fELTranslator = (IJSPELTranslator) execExt;
-					}
-				}
-				catch (CoreException e) {
-					Logger.logException(e);
-				}
-			}
-		}
-		return fELTranslator;
-	}
-
-	/**
-	 * Pass the ITextRegionCollection which is the embedded region
-	 * 
-	 * @param regions
-	 *            iterator for collection
-	 */
-	private void translateEmbeddedJSPInBlock(ITextRegionCollection collection, Iterator regions) {
-		ITextRegion region = null;
-		while (regions.hasNext()) {
-			region = (ITextRegion) regions.next();
-			if (isJSP(region.getType()))
-				break;
-			region = null;
-		}
-		if (region != null) {
-			translateEmbeddedJSPInAttribute(collection);
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=126377
-			// all of collection was translated so just finish off iterator
-			while (regions.hasNext())
-				regions.next();
-		}
-	}
-
-	/*
-	 * Translates all embedded jsp regions in embeddedContainer for example:
-	 * <a href="index.jsp?p=<%=abc%>b=<%=xyz%>">abc</a>
-	 */
-	private void translateEmbeddedJSPInAttribute(ITextRegionCollection embeddedContainer) {
-		// THIS METHOD IS A FIX FOR
-		// jsp embedded in attribute regions
-		// loop all regions
-		ITextRegionList embeddedRegions = embeddedContainer.getRegions();
-		ITextRegion delim = null;
-		ITextRegion content = null;
-		String type = null;
-		String quotetype = null;
-		for (int i = 0; i < embeddedRegions.size(); i++) {
-
-			// possible delimiter, check later
-			delim = embeddedRegions.get(i);
-			type = delim.getType();
-			if(type == DOMJSPRegionContexts.XML_TAG_ATTRIBUTE_VALUE_DQUOTE || type == DOMJSPRegionContexts.XML_TAG_ATTRIBUTE_VALUE_SQUOTE
-				|| type == DOMJSPRegionContexts.JSP_TAG_ATTRIBUTE_VALUE_DQUOTE || type == DOMJSPRegionContexts.JSP_TAG_ATTRIBUTE_VALUE_SQUOTE)
-				quotetype = type;
-
-			// check next region to see if it's content
-			if (i + 1 < embeddedRegions.size()) {
-				String regionType = embeddedRegions.get(i + 1).getType();
-				if (regionType == DOMJSPRegionContexts.JSP_CONTENT || regionType == DOMJSPRegionContexts.JSP_EL_CONTENT)
-					content = embeddedRegions.get(i + 1);
-			}
-
-			if (content != null) {
-				int contentStart = embeddedContainer.getStartOffset(content);
-				int rStart = fCurrentNode.getStartOffset() + contentStart;
-				int rEnd = fCurrentNode.getStartOffset() + embeddedContainer.getEndOffset(content);
-
-				boolean inThisRegion = rStart <= fSourcePosition && rEnd >= fSourcePosition;
-				// int jspPositionStart = fCurrentNode.getStartOffset() +
-				// contentStart;
-
-				if (type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) {
-					fLastJSPType = EXPRESSION;
-					// translateExpressionString(embeddedContainer.getText(content),
-					// fCurrentNode, contentStart, content.getLength());
-					translateExpressionString(embeddedContainer.getText(content), embeddedContainer, contentStart, content.getLength(), quotetype);
-				}
-				else if (type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) {
-					fLastJSPType = SCRIPTLET;
-					// translateScriptletString(embeddedContainer.getText(content),
-					// fCurrentNode, contentStart, content.getLength());
-					translateScriptletString(embeddedContainer.getText(content), embeddedContainer, contentStart, content.getLength(), false);
-				}
-				else if (type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN) {
-					fLastJSPType = DECLARATION;
-					// translateDeclarationString(embeddedContainer.getText(content),
-					// fCurrentNode, contentStart, content.getLength());
-					translateDeclarationString(embeddedContainer.getText(content), embeddedContainer, contentStart, content.getLength(), false);
-				}
-				else if (type == DOMJSPRegionContexts.JSP_EL_OPEN) {
-					fLastJSPType = EXPRESSION;
-					translateEL(embeddedContainer.getText(content), embeddedContainer.getText(delim), fCurrentNode, contentStart, content.getLength());
-				}
-
-				// calculate relative offset in buffer
-				if (inThisRegion) {
-					setCursorOwner(fLastJSPType);
-					int currentBufferLength = getCursorOwner().length();
-					setRelativeOffset((fSourcePosition - contentStart) + currentBufferLength);
-					if (fLastJSPType == EXPRESSION) {
-						// if an expression, add then length of the enclosing
-						// paren..
-						setCursorInExpression(true);
-						setRelativeOffset(getRelativeOffset() + EXPRESSION_PREFIX.length());
-					}
-				}
-			}
-			else {
-				type = null;
-			}
-		}
-	}
-
-	private int fLastJSPType = SCRIPTLET;
-
-	/**
-	 * JSPType is only used internally in this class to describe tye type of
-	 * region to be translated
-	 * 
-	 * @param region
-	 * @return int
-	 */
-	private int getJSPTypeForRegion(ITextRegion region) {
-		String regionType = region.getType();
-		int type = SCRIPTLET;
-		if (regionType == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN)
-			type = SCRIPTLET;
-		else if (regionType == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN)
-			type = EXPRESSION;
-		else if (regionType == DOMJSPRegionContexts.JSP_DECLARATION_OPEN)
-			type = DECLARATION;
-		else if (regionType == DOMJSPRegionContexts.JSP_CONTENT)
-			type = fLastJSPType;
-		// remember the last type, in case the next type that comes in is
-		// JSP_CONTENT
-		fLastJSPType = type;
-		return type;
-	}
-
-	/**
-	 * /* <%@ %> /* need to pass in the directive tag region
-	 */
-	protected void translateDirective(Iterator regions) {
-		ITextRegion r = null;
-		String regionText, attrValue = ""; //$NON-NLS-1$
-		while (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) { // could
-			// be
-			// XML_CONTENT
-			// =
-			// "",
-			// skips
-			// attrs?
-			regionText = getCurrentNode().getText(r);
-			if (regionText.equals("taglib")) { //$NON-NLS-1$
-				// add custom tag block markers here
-                while (r != null && regions.hasNext()) {
-                    r = (ITextRegion) regions.next();
-                    if (r.getType().equals(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) && getCurrentNode().getText(r).equals(JSP11Namespace.ATTR_NAME_PREFIX)) {
-                        String prefix = getAttributeValue(r, regions);
-                        if (prefix != null) {
-                            handleTaglib(prefix);
-                            break;
-                        }
-                    }
-                    if (r.getType().equals(DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE)) {
-                        break;
-                    }
-                }
-				return;
-			}
-			else if (regionText.equals("include")) { //$NON-NLS-1$
-				String fileLocation = ""; //$NON-NLS-1$
-				// CMVC 258311
-				// PMR 18368, B663
-				// skip to required "file" attribute, should be safe because
-				// "file" is the only attribute for the include directive
-				while (r != null && regions.hasNext() && !r.getType().equals(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME)) {
-					r = (ITextRegion) regions.next();
-				}
-				fileLocation = getAttributeValue(r, regions);
-				if (attrValue != null)
-					handleIncludeFile(fileLocation);
-			}
-			else if (regionText.equals("page")) { //$NON-NLS-1$
-				translatePageDirectiveAttributes(regions, getCurrentNode());
-			}
-			else if (regionText.equals("tag")) { //$NON-NLS-1$
-				// some attributes overlap, so both are handled in this method
-				translatePageDirectiveAttributes(regions, getCurrentNode());
-			}
-			else if (regionText.equals("variable")) { //$NON-NLS-1$
-				translateVariableDirectiveAttributes(regions);
-			}
-			else if (regionText.equals("attribute")) { //$NON-NLS-1$
-				translateAttributeDirectiveAttributes(regions);
-			}
-		}
-	}
-
-	private void translateAttributeDirectiveAttributes(Iterator regions) {
-		ITextRegion r = null;
-		String attrName, attrValue;
-
-		String varType = "java.lang.String"; //$NON-NLS-1$ // the default class...
-		String varName = null;
-		String description = "";//$NON-NLS-1$ 
-		boolean isFragment = false;
-
-		// iterate all attributes
-		while (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() != DOMJSPRegionContexts.JSP_CLOSE) {
-			attrName = attrValue = null;
-			if (r.getType().equals(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME)) {
-				attrName = getCurrentNode().getText(r).trim();
-				if (attrName.length() > 0) {
-					if (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
-						if (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-							attrValue = StringUtils.strip(getCurrentNode().getText(r));
-						}
-						// has equals, but no value?
-					}
-					if (attrName.equals(JSP11Namespace.ATTR_NAME_TYPE)) {
-						varType = attrValue;
-					}
-					else if (attrName.equals(JSP20Namespace.ATTR_NAME_FRAGMENT)) {
-						isFragment = Boolean.valueOf(attrValue).booleanValue();
-					}
-					else if (attrName.equals(JSP11Namespace.ATTR_NAME_NAME)) {
-						varName = attrValue;
-					}
-					else if (attrName.equals(JSP20Namespace.ATTR_NAME_DESCRIPTION)) {
-						description = attrValue;
-					}
-				}
-			}
-		}
-		if (varName != null) {
-			if (isFragment) {
-				// 2.0:JSP.8.5.2
-				varType = "javax.servlet.jsp.tagext.JspFragment";
-			}
-			String declaration = new TaglibVariable(varType, varName, "", description).getDeclarationString(true, TaglibVariable.M_PRIVATE);
-			appendToBuffer(declaration, fUserDeclarations, false, fCurrentNode);
-		}
-	}
-
-	private void translateVariableDirectiveAttributes(Iterator regions) {
-		/*
-		 * Shouldn't create a scripting variable in *this* tag file's
-		 * translation, only in JSP files that use it -
-		 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=188780
-		 */
-	}
-
-	/**
-	 * This method should ideally only be called once per run through
-	 * JSPTranslator This is intended for use by inner helper classes that
-	 * need to add block markers to their own parsers. This method only adds
-	 * markers that came from <@taglib> directives, (not <@include>), since
-	 * include file taglibs are handled on the fly when they are encountered. *
-	 * @param regions
-	 * 
-	 * @deprecated - does not properly handle prefixes
-	 */
-	protected void handleTaglib() {
-		// get/create TLDCMDocument
-		TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(fStructuredDocument);
-		if (mgr != null) {
-			List trackers = mgr.getCMDocumentTrackers(getCurrentNode().getEnd());
-			Iterator it = trackers.iterator();
-			CMDocumentTracker tracker = null;
-			Iterator taglibRegions = null;
-			IStructuredDocumentRegion sdRegion = null;
-			ITextRegion r = null;
-			while (it.hasNext()) {
-				tracker = (CMDocumentTracker) it.next();
-				sdRegion = tracker.getStructuredDocumentRegion();
-				// since may be call from another thread (like a background
-				// job)
-				// this check is to be safer
-				if (sdRegion != null && !sdRegion.isDeleted()) {
-					taglibRegions = sdRegion.getRegions().iterator();
-					while (!sdRegion.isDeleted() && taglibRegions.hasNext()) {
-						r = (ITextRegion) taglibRegions.next();
-						if (r.getType().equals(DOMJSPRegionContexts.JSP_DIRECTIVE_NAME)) {
-							String text = sdRegion.getText(r);
-							if (JSP12TLDNames.TAGLIB.equals(text) || JSP12Namespace.ElementName.DIRECTIVE_TAGLIB.equals(text)) {
-								addBlockMarkers(tracker.getDocument());
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-
-	/*
-	 * This method should ideally only be called once per run through
-	 * JSPTranslator This is intended for use by inner helper classes that
-	 * need to add block markers to their own parsers. This method only adds
-	 * markers that came from <@taglib> directives, (not <@include>), since
-	 * include file taglibs are handled on the fly when they are encountered. *
-	 * @param regions
-	 */
-	private void handleTaglib(String prefix) {
-		// get/create TLDCMDocument
-		TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(fStructuredDocument);
-		if (mgr != null) {
-			// get trackers for the CMDocuments enabled at this offset
-			List trackers = mgr.getCMDocumentTrackers(getCurrentNode().getEnd());
-			Iterator it = trackers.iterator();
-			CMDocumentTracker tracker = null;
-			while (it.hasNext()) {
-				tracker = (CMDocumentTracker) it.next();
-				addBlockMarkers(prefix + ":", tracker.getDocument());
-			}
-		}
-	}
-
-	/*
-	 * adds block markers to JSPTranslator's block marker list for all
-	 * elements in doc @param doc
-	 */
-	protected void addBlockMarkers(CMDocument doc) {
-		if (doc.getElements().getLength() > 0) {
-			Iterator elements = doc.getElements().iterator();
-			CMNode node = null;
-			while (elements.hasNext()) {
-				node = (CMNode) elements.next();
-				getBlockMarkers().add(new BlockMarker(node.getNodeName(), null, DOMJSPRegionContexts.JSP_CONTENT, true));
-			}
-		}
-	}
-
-	/*
-	 * adds block markers to JSPTranslator's block marker list for all
-	 * elements in doc @param doc
-	 */
-	protected void addBlockMarkers(String prefix, CMDocument doc) {
-		if (doc.getElements().getLength() > 0) {
-			Iterator elements = doc.getElements().iterator();
-			CMNode node = null;
-			while (elements.hasNext()) {
-				node = (CMNode) elements.next();
-				if (node instanceof TLDElementDeclaration && ((TLDElementDeclaration) node).getBodycontent().equals(JSP12TLDNames.CONTENT_TAGDEPENDENT))
-					getBlockMarkers().add(new BlockMarker(prefix + node.getNodeName(), null, DOMRegionContext.BLOCK_TEXT, true));
-				else
-					getBlockMarkers().add(new BlockMarker(prefix + node.getNodeName(), null, DOMJSPRegionContexts.JSP_CONTENT, true));
-			}
-		}
-	}
-
-	/**
-	 * If r is an attribute name region, this method will safely return the
-	 * value for that attribute.
-	 * 
-	 * @param r
-	 * @param remainingRegions
-	 * @return the value for the attribute name (r), or null if isn't one
-	 */
-	protected String getAttributeValue(ITextRegion r, Iterator remainingRegions) {
-		if (r.getType().equals(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME)) {
-			if (remainingRegions.hasNext() && (r = (ITextRegion) remainingRegions.next()) != null && r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
-				if (remainingRegions.hasNext() && (r = (ITextRegion) remainingRegions.next()) != null && r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-					return StringUtils.stripQuotes(getCurrentNode().getText(r));
-				}
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * takes an iterator of the attributes of a page directive and the
-	 * directive itself. The iterator is used in case it can be optimized, but
-	 * the documentRegion is still required to ensure that the values are
-	 * extracted from the correct text.
-	 */
-	protected void translatePageDirectiveAttributes(Iterator regions, IStructuredDocumentRegion documentRegion) {
-		ITextRegion r = null;
-		String attrName, attrValue;
-		// iterate all attributes
-		while (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() != DOMJSPRegionContexts.JSP_CLOSE) {
-			attrName = attrValue = null;
-			if (r.getType().equals(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME)) {
-
-				attrName = documentRegion.getText(r).trim();
-				if (attrName.length() > 0) {
-					if (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
-						if (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-
-							attrValue = StringUtils.strip(documentRegion.getText(r));
-						}
-						// has equals, but no value?
-					}
-					setDirectiveAttribute(attrName, attrValue);
-				}
-			}
-		}
-	}
-
-	/**
-	 * sets the appropriate page/tag directive attribute
-	 */
-	protected void setDirectiveAttribute(String attrName, String attrValue) {
-		if (attrValue == null)
-			return; // uses default (if there was one)
-		if (attrName.equals("extends")) //$NON-NLS-1$
-		{
-			fSuperclass = attrValue;
-		}
-		else if (attrName.equals("import")) //$NON-NLS-1$
-		{
-			addImports(attrValue);
-		}
-		else if (attrName.equals("session")) //$NON-NLS-1$
-		{
-			fIsInASession = "true".equalsIgnoreCase(attrValue);
-		}
-		else if (attrName.equals("buffer")) //$NON-NLS-1$
-		{
-			// ignore for now
-		}
-		else if (attrName.equals("autoFlush")) //$NON-NLS-1$
-		{
-			// ignore for now
-		}
-		else if (attrName.equals("isThreadSafe")) //$NON-NLS-1$
-		{
-			// fThreadSafe = "true".equalsIgnoreCase(attrValue); //$NON-NLS-1$
-		}
-		else if (attrName.equals("isErrorPage")) //$NON-NLS-1$
-		{
-			fIsErrorPage = "true".equalsIgnoreCase(attrValue);
-		}
-	}
-
-	protected void handleIncludeFile(String filename) {
-		if (filename != null && fProcessIncludes) {
-			IPath modelPath = getModelPath();
-			IPath basePath = modelPath;
-			if (basePath != null) {
-				/*
-				 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=227576
-				 * 
-				 * The resolution of the included fragment should use the file
-				 * containing the directive as the base reference, not always
-				 * the main JSP being invoked. Verified behavior with Apache
-				 * Tomcat 5.5.20.
-				 */
-				if (!getIncludes().isEmpty()) {
-					basePath = new Path((String) getIncludes().peek());
-				}
-				String filePathString = FacetModuleCoreSupport.resolve(basePath, filename).toString();
-				fIncludedPaths.add(filePathString);
-
-				if (!getIncludes().contains(filePathString) && !filePathString.equals(modelPath.toString())) {
-					getIncludes().push(filePathString);
-					JSPIncludeRegionHelper helper = new JSPIncludeRegionHelper(this, true);
-					// Should we consider preludes on this segment?
-					helper.parse(filePathString);
-					getIncludes().pop();
-				}
-			}
-		}
-	}
-
-	private Stack getIncludes() {
-		if (fIncludes == null)
-			fIncludes = new Stack();
-		return fIncludes;
-	}
-
-	public Collection getIncludedPaths() {
-		return fIncludedPaths;
-	}
-
-	protected void translateExpressionString(String newText, ITextRegionCollection embeddedContainer, int jspPositionStart, int jspPositionLength, boolean isIndirect) {
-		appendToBuffer(EXPRESSION_PREFIX, fUserCode, false, embeddedContainer);
-		appendToBuffer(newText, fUserCode, true, embeddedContainer, jspPositionStart, jspPositionLength, isIndirect);
-		appendToBuffer(EXPRESSION_SUFFIX, fUserCode, false, embeddedContainer);
-	}
-	
-	protected void translateExpressionString(String newText, ITextRegionCollection embeddedContainer, int jspPositionStart, int jspPositionLength, String quotetype) {
-		if(quotetype == null || quotetype == DOMJSPRegionContexts.XML_TAG_ATTRIBUTE_VALUE_DQUOTE ||quotetype == DOMJSPRegionContexts.XML_TAG_ATTRIBUTE_VALUE_SQUOTE ) {
-			translateExpressionString(newText, embeddedContainer, jspPositionStart, jspPositionLength, false);
-			return;
-		}
-
-		//-- This is a quoted attribute. We need to unquote as per the JSP spec: JSP 2.0 page 1-36
-		appendToBuffer(EXPRESSION_PREFIX, fUserCode, false, embeddedContainer);
-
-		int length = newText.length();
-		int runStart = 0;
-		int i = 0;
-		for ( ; i < length; i++) {
-			//-- collect a new run
-			char c = newText.charAt(i);
-			if (c == '\\') {
-				//-- Escaped value. Add the run, then unescape
-				int runLength = i-runStart;
-				if (runLength > 0) {
-					appendToBuffer(newText.substring(runStart, i), fUserCode, true, embeddedContainer, jspPositionStart, runLength, true, true);
-					jspPositionStart += runLength + 1;
-					jspPositionLength -= runLength + 1;
-				}
-				runStart = ++i;
-				if (i >= length) { // Escape but no data follows?!
-					//- error.
-					break;
-				}
-				c = newText.charAt(i);				// The escaped character, copied verbatim
-			}
-		}
-		//-- Copy last-run
-		int runLength = i - runStart;
-		if (runLength > 0)
-			appendToBuffer(newText.substring(runStart, i), fUserCode, true, embeddedContainer, jspPositionStart, runLength, true, false);
-		appendToBuffer(EXPRESSION_SUFFIX, fUserCode, false, embeddedContainer);
-	}
-
-	protected void translateDeclarationString(String newText, ITextRegionCollection embeddedContainer, int jspPositionStart, int jspPositionLength, boolean isIndirect) {
-		appendToBuffer(newText, fUserDeclarations, true, embeddedContainer, jspPositionStart, jspPositionLength, isIndirect);
-		appendToBuffer(ENDL, fUserDeclarations, false, embeddedContainer);
-	}
-
-	/**
-	 * used by XMLJSPRegionHelper for included JSP files
-	 * 
-	 * @param newText
-	 * @param embeddedContainer
-	 * @param jspPositionStart
-	 * @param jspPositionLength
-	 */
-	protected void translateScriptletString(String newText, ITextRegionCollection embeddedContainer, int jspPositionStart, int jspPositionLength, boolean isIndirect) {
-		appendToBuffer(newText, fUserCode, true, embeddedContainer, jspPositionStart, jspPositionLength, isIndirect);
-	}
-
-	// the following 3 methods determine the cursor position
-	// <%= %>
-	protected void translateExpression(ITextRegionCollection region) {
-		String newText = getUnescapedRegionText(region, EXPRESSION);
-		appendToBuffer(EXPRESSION_PREFIX, fUserCode, false, region);
-		appendToBuffer(newText, fUserCode, true, region);
-		appendToBuffer(EXPRESSION_SUFFIX, fUserCode, false, region);
-	}
-
-	//
-	// <%! %>
-	protected void translateDeclaration(ITextRegionCollection region) {
-		String newText = getUnescapedRegionText(region, DECLARATION);
-		appendToBuffer(newText, fUserDeclarations, true, region);
-		appendToBuffer(ENDL, fUserDeclarations, false, region);
-	}
-
-	//
-	// <% %>
-	protected void translateScriptlet(ITextRegionCollection region) {
-		String newText = getUnescapedRegionText(region, SCRIPTLET);
-		appendToBuffer(newText, fUserCode, true, region);
-	}
-
-	/**
-	 * Append using a region, probably indirect mapping (eg. <%@page
-	 * include=""%>)
-	 * 
-	 * @param newText
-	 * @param buffer
-	 * @param addToMap
-	 * @param jspReferenceRegion
-	 */
-	private void appendToBuffer(String newText, StringBuffer buffer, boolean addToMap, ITextRegionCollection jspReferenceRegion) {
-		int start = 0, length = 0;
-		if (jspReferenceRegion != null) {
-			start = jspReferenceRegion.getStartOffset();
-			length = jspReferenceRegion.getLength();
-		}
-		appendToBuffer(newText, buffer, addToMap, jspReferenceRegion, start, length, false);
-	}
-	
-	private void appendToBuffer(String newText, StringBuffer buffer, boolean addToMap, ITextRegionCollection jspReferenceRegion, int jspPositionStart, int jspPositionLength, boolean isIndirect) {
-		appendToBuffer(newText, buffer, addToMap, jspReferenceRegion, jspPositionStart, jspPositionLength, isIndirect, false);
-	}
-
-
-	/**
-	 * Adds newText to the buffer passed in, and adds to translation mapping
-	 * as specified by the addToMap flag. some special cases to consider (that
-	 * may be affected by changes to this method): included files scriplets in
-	 * an attribute value refactoring
-	 * 
-	 * @param newText
-	 * @param buffer
-	 * @param addToMap
-	 */
-	private void appendToBuffer(String newText, StringBuffer buffer, boolean addToMap, ITextRegionCollection jspReferenceRegion, int jspPositionStart, int jspPositionLength, boolean isIndirect, boolean nonl) {
-
-		int origNewTextLength = newText.length();
-
-		// nothing to append
-		if (jspReferenceRegion == null)
-			return;
-
-		// add a newline so translation looks cleaner
-		if (! nonl && !newText.endsWith(ENDL))
-			newText += ENDL;
-
-		if (buffer == fUserCode) {
-			buffer.append(newText);
-			if (addToMap) {
-				if (isUsebeanTag(jspReferenceRegion)) {
-					try {
-						// requires special mapping
-						appendUseBeanToBuffer(newText, jspReferenceRegion, isIndirect);
-					}
-					catch (Exception e) {
-						// still working out kinks
-						Logger.logException(e);
-					}
-				}
-				else {
-					// all other cases
-					Position javaRange = new Position(fOffsetInUserCode, origNewTextLength);
-					Position jspRange = new Position(jspPositionStart, jspPositionLength);
-
-					fCodeRanges.put(javaRange, jspRange);
-					if (isIndirect)
-						fIndirectRanges.put(javaRange, jspRange);
-				}
-			}
-			fOffsetInUserCode += newText.length();
-		}
-		else if (buffer == fUserDeclarations) {
-			buffer.append(newText);
-			if (addToMap) {
-				Position javaRange = new Position(fOffsetInUserDeclarations, newText.length());
-				Position jspRange = new Position(jspPositionStart, jspPositionLength);
-
-				fDeclarationRanges.put(javaRange, jspRange);
-				if (isIndirect)
-					fIndirectRanges.put(javaRange, jspRange);
-			}
-			fOffsetInUserDeclarations += newText.length();
-		}
-	}
-
-	/**
-	 * 
-	 * @param jspReferenceRegion
-	 * @return
-	 */
-	private boolean isUsebeanTag(ITextRegionCollection jspReferenceRegion) {
-		ITextRegionList regions = jspReferenceRegion.getRegions();
-		ITextRegion r = null;
-		boolean isUseBean = false;
-		for (int i = 0; i < regions.size(); i++) {
-			r = regions.get(i);
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=128490
-			// length of 11 is the length of jsp:useBean
-			// and saves the expensive getText.equals call
-			if (r.getType() == DOMRegionContext.XML_TAG_NAME) {
-				if (r.getTextLength() == 11 && jspReferenceRegion.getText(r).equals("jsp:useBean")) { //$NON-NLS-1$
-					isUseBean = true;
-				}
-				// break no matter what if you hit tagname
-				break;
-			}
-		}
-		return isUseBean;
-	}
-
-	/**
-	 * @param importName
-	 *            should be just the package plus the type eg. java.util.List
-	 *            or java.util.*
-	 * @param jspReferenceRegion
-	 *            should be the <%@ page import = "java.util.List"%> region
-	 * @param addToMap
-	 */
-	private void appendImportToBuffer(String importName, ITextRegionCollection jspReferenceRegion, boolean addToMap) {
-		String javaImportString = "import " + importName + ";" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$
-		fUserImports.append(javaImportString);
-		if (addToMap) {
-			addImportToMap(importName, jspReferenceRegion);
-		}
-		fOffsetInUserImports += javaImportString.length();
-	}
-
-	/**
-	 * new text can be something like: "import java.lang.Object;\n"
-	 * 
-	 * but the reference region could have been something like: <%@page
-	 * import="java.lang.Object, java.io.*, java.util.List"%>
-	 * 
-	 * so the exact mapping has to be calculated carefully.
-	 * 
-	 * isIndirect means that the import came from an included file (if true)
-	 * 
-	 * @param importName
-	 * @param jspReferenceRegion
-	 */
-	private void addImportToMap(String importName, ITextRegionCollection jspReferenceRegion) {
-
-		// massage text
-		// String jspText = importName.substring(importName.indexOf("import ")
-		// + 7, importName.indexOf(';'));
-		// String jspText = importName.trim();
-
-		// these positions will be updated below
-		Position javaRange = new Position(fOffsetInUserImports + 7, 1);
-		Position jspRange = new Position(jspReferenceRegion.getStart(), jspReferenceRegion.getLength());
-
-		// calculate JSP range by finding "import" attribute
-		ITextRegionList regions = jspReferenceRegion.getRegions();
-		int size = regions.size();
-
-		int start = -1;
-		int length = -1;
-
-		ITextRegion r = null;
-		for (int i = 0; i < size; i++) {
-			r = regions.get(i);
-			if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME)
-				if (jspReferenceRegion.getText(r).trim().equals("import")) { //$NON-NLS-1$
-					// get the attr value region
-					if (size > i + 2) {
-						r = regions.get(i + 2);
-						if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-
-							String jspImportText = jspReferenceRegion.getText(r);
-
-							// the position in question (in the JSP) is what
-							// is bracketed below
-							// includes whitespace
-							// <%@page import="java.lang.Object,[ java.io.* ],
-							// java.util.List"%>
-
-							// in the java file
-							// import [ java.io.* ];
-
-							start = jspImportText.indexOf(importName);
-							length = importName.length();
-
-							// safety, don't add to map if bad positioning
-							if (start == -1 || length < 1)
-								break;
-
-							// update jsp range
-							jspRange.setOffset(jspReferenceRegion.getStartOffset(r) + start);
-							jspRange.setLength(length);
-
-							// update java range
-							javaRange.setLength(length);
-
-							break;
-						}
-					}
-				}
-		}
-
-		// safety for bad ranges
-		if (start != -1 && length > 1) {
-			// put ranges in java -> jsp range map
-			fImportRanges.put(javaRange, jspRange);
-		}
-	}
-
-	/**
-	 * temp fix for 282295 until better mapping is in place
-	 * 
-	 * @param newText
-	 * @param jspReferenceRegion
-	 */
-	private void appendUseBeanToBuffer(String newText, ITextRegionCollection jspReferenceRegion, boolean isIndirect) throws Exception {
-		// java string looks like this (tokenized)
-		// Type id = new Classname();\n
-		// 0 1 2 3 4
-		// or
-		// Type id = null;\n // if there is no classname
-		// 0 1 2 3
-
-		// ----------------------
-		// calculate java ranges
-		// ----------------------
-		StringTokenizer st = new StringTokenizer(newText, " ", false); //$NON-NLS-1$
-		int i = 0;
-		String[] parsedJava = new String[st.countTokens()];
-		while (st.hasMoreTokens())
-			parsedJava[i++] = st.nextToken();
-
-		String type = parsedJava[0] != null ? parsedJava[0] : ""; //$NON-NLS-1$
-		String id = parsedJava[1] != null ? parsedJava[1] : ""; //$NON-NLS-1$
-		String className = parsedJava.length > 4 ? parsedJava[4] : ""; //$NON-NLS-1$
-
-		Position javaTypeRange = new Position(fOffsetInUserCode, type.length());
-		Position javaIdRange = new Position(fOffsetInUserCode + type.length() + 1, id.length());
-		Position javaClassRange = new Position(fOffsetInUserCode + type.length() + 1 + id.length() + 7, 0);
-		/*
-		 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=212242 - Check for
-		 * the existence of '(' first.
-		 */
-		int parenPos = -1;
-		if (className.length() >= 4 && (parenPos = className.indexOf('(')) >= 0) {
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=86132
-			int classNameLength = className.substring(0, parenPos).length();
-			javaClassRange = new Position(fOffsetInUserCode + type.length() + 1 + id.length() + 7, classNameLength);
-		}
-
-		// ---------------------
-		// calculate jsp ranges
-		// ---------------------
-		ITextRegionList regions = jspReferenceRegion.getRegions();
-		ITextRegion r = null;
-		String attrName = "", attrValue = ""; //$NON-NLS-1$ //$NON-NLS-2$
-		int quoteOffset = 0;
-		Position jspTypeRange = null;
-		Position jspIdRange = null;
-		Position jspClassRange = null;
-
-		for (int j = 0; j < regions.size(); j++) {
-			r = regions.get(j);
-			if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-				attrName = jspReferenceRegion.getText(r);
-				if (regions.size() > j + 2 && regions.get(j + 2).getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-					// get attr value
-					r = regions.get(j + 2);
-					attrValue = jspReferenceRegion.getText(r);
-
-					// may have quotes
-					quoteOffset = (attrValue.startsWith("\"") || attrValue.startsWith("'")) ? 1 : 0; //$NON-NLS-1$ //$NON-NLS-2$
-
-					if (attrName.equals("type")) //$NON-NLS-1$
-						jspTypeRange = new Position(jspReferenceRegion.getStartOffset(r) + quoteOffset, StringUtils.stripQuotesLeaveInsideSpace(attrValue).length());
-					else if (attrName.equals("id")) //$NON-NLS-1$
-						jspIdRange = new Position(jspReferenceRegion.getStartOffset(r) + quoteOffset, StringUtils.stripQuotesLeaveInsideSpace(attrValue).length());
-					else if (attrName.equals("class")) //$NON-NLS-1$
-						jspClassRange = new Position(jspReferenceRegion.getStartOffset(r) + quoteOffset, StringUtils.stripQuotesLeaveInsideSpace(attrValue).length());
-				}
-			}
-		}
-
-		// put ranges in java -> jsp range map
-		if (!type.equals("") && jspTypeRange != null) { //$NON-NLS-1$
-			fCodeRanges.put(javaTypeRange, jspTypeRange);
-			// note: don't update offsets for this map when result is built
-			// they'll be updated when code ranges offsets are updated
-			fUseBeanRanges.put(javaTypeRange, jspTypeRange);
-			if (isIndirect)
-				fIndirectRanges.put(javaTypeRange, jspTypeRange);
-		}
-		if (!id.equals("") && jspIdRange != null) { //$NON-NLS-1$
-			fCodeRanges.put(javaIdRange, jspIdRange);
-			// note: don't update offsets for this map when result is built
-			// they'll be updated when code ranges offsets are updated
-			fUseBeanRanges.put(javaIdRange, jspTypeRange);
-			if (isIndirect)
-				fIndirectRanges.put(javaIdRange, jspTypeRange);
-		}
-		if (!className.equals("") && jspClassRange != null) { //$NON-NLS-1$
-			fCodeRanges.put(javaClassRange, jspClassRange);
-			// note: don't update offsets for this map when result is built
-			// they'll be updated when code ranges offsets are updated
-			fUseBeanRanges.put(javaClassRange, jspTypeRange);
-			if (isIndirect)
-				fIndirectRanges.put(javaClassRange, jspTypeRange);
-		}
-	}
-
-	/**
-	 * Set the buffer to the current JSPType: STANDARD_JSP, EMBEDDED_JSP,
-	 * DECLARATION, EXPRESSION, SCRIPTLET (for keepting track of cursor
-	 * position when the final document is built)
-	 * 
-	 * @param JSPType
-	 *            the JSP type that the cursor is in
-	 */
-	protected void setCursorOwner(int JSPType) {
-		switch (JSPType) {
-			case DECLARATION :
-				setCursorOwner(fUserDeclarations);
-				break;
-			case EXPRESSION :
-			case SCRIPTLET :
-				setCursorOwner(fUserCode);
-				break;
-			default :
-				setCursorOwner(fUserCode);
-		}
-	}
-
-	/**
-	 * this piece of code iterates through fCurrentNodes and clumps them
-	 * together in a big text string - unescaping characters if they are not
-	 * CDATA - simply appending if they are CDATA it stops iteration when it
-	 * hits a node that is an XML_TAG_NAME (which should be the region closing
-	 * tag)
-	 */
-	protected String getUnescapedRegionText(ITextRegionCollection stRegion, int JSPType) {
-		StringBuffer buffer = new StringBuffer();
-		int start = stRegion.getStartOffset();
-		int end = stRegion.getEndOffset();
-		// adjustment necessary for embedded region containers
-		if (stRegion instanceof ITextRegionContainer && stRegion.getType() == DOMRegionContext.BLOCK_TEXT) {
-			if (stRegion.getRegions() != null && stRegion.getRegions().size() > 1) {
-				ITextRegion jspContent = stRegion.getRegions().get(1); // should
-				// be
-				// jspContent
-				// region
-				start = stRegion.getStartOffset(jspContent);
-				end = stRegion.getEndOffset(jspContent);
-			}
-		}
-		int CDATAOffset = 0; // number of characters lost in conversion
-		int bufferSize = 0;
-		if (stRegion.getType() == DOMJSPRegionContexts.JSP_CONTENT || stRegion.getType() == DOMRegionContext.BLOCK_TEXT // need
-					// this
-					// for
-					// embedded
-					// JSP
-					// regions
-					|| stRegion.getType() == DOMRegionContext.XML_TAG_NAME) // need
-		// this
-		// in
-		// case
-		// there's
-		// no
-		// region...
-		{
-			fInCodeRegion = (start <= fSourcePosition && fSourcePosition <= end);
-			if (fInCodeRegion) {
-				setCursorOwner(JSPType);
-				setRelativeOffset((fSourcePosition - start) + getCursorOwner().length());
-				if (JSPType == EXPRESSION) {
-					// if an expression, add then length of the enclosing
-					// paren..
-					setCursorInExpression(true);
-					setRelativeOffset(getRelativeOffset() + EXPRESSION_PREFIX.length());
-				}
-			}
-			ITextRegion jspContent = null;
-			if (stRegion.getRegions() != null && stRegion.getRegions().size() > 1)
-				jspContent = stRegion.getRegions().get(1);
-			return (jspContent != null) ? stRegion.getFullText(jspContent) : stRegion.getFullText(); // don't
-			// unescape
-			// if
-			// it's
-			// not
-			// an
-			// XMLJSP
-			// tag
-		}
-		else if (stRegion.getType() == DOMJSPRegionContexts.JSP_CLOSE) {
-			// need to determine cursor owner so that the fCurosorPosition
-			// will be
-			// correct even if there is no region after the cursor in the JSP
-			// file
-			setCursorOwner(JSPType);
-		}
-		// iterate XMLCONTENT and CDATA regions
-		// loop fCurrentNode until you hit </jsp:scriptlet> (or other closing
-		// tag name)
-		while (getCurrentNode() != null && getCurrentNode().getType() != DOMRegionContext.XML_TAG_NAME) // need
-		// to
-		// stop
-		// on
-		// the
-		// ending
-		// tag
-		// name...
-		{
-			start = getCurrentNode().getStartOffset();
-			end = getCurrentNode().getEndOffset();
-			bufferSize = buffer.length();
-			CDATAOffset = unescapeRegion(getCurrentNode(), buffer);
-			fInCodeRegion = (start <= fSourcePosition && fSourcePosition <= end);
-			if (fInCodeRegion) {
-				setCursorOwner(JSPType);
-				// this offset is sort of complicated...
-				// it's composed of:
-				// 1. the length of the start of the current region up till
-				// where the cursor is
-				// 2. minus the number of characters lost in CDATA translation
-				// 3. plus the length of the escaped buffer before the current
-				// region, but
-				// is still within the jsp tag
-				setRelativeOffset((fSourcePosition - getCurrentNode().getStartOffset()) + getCursorOwner().length() - CDATAOffset + bufferSize);
-				if (JSPType == EXPRESSION) {
-					setCursorInExpression(true);
-					// if an expression, add then length of the enclosing
-					// paren..
-					setRelativeOffset(getRelativeOffset() + EXPRESSION_PREFIX.length());
-				}
-			}
-			if (getCurrentNode() != null)
-				advanceNextNode();
-		}
-		return buffer.toString();
-	}
-
-	/**
-	 * @param r
-	 *            the region to be unescaped (XMLContent, XML ENTITY
-	 *            REFERENCE, or CDATA)
-	 * @param sb
-	 *            the stringbuffer to append the text to
-	 * @return the number of characters removed in unescaping this text
-	 */
-	protected int unescapeRegion(ITextRegion r, StringBuffer sb) {
-		String s = ""; //$NON-NLS-1$
-		int lengthBefore = 0, lengthAfter = 0, cdata_tags_length = 0;
-		if (r != null && (r.getType() == DOMRegionContext.XML_CONTENT || r.getType() == DOMRegionContext.XML_ENTITY_REFERENCE)) {
-			lengthBefore = (getCurrentNode() != r) ? getCurrentNode().getFullText(r).length() : getCurrentNode().getFullText().length();
-			s = EscapedTextUtil.getUnescapedText(getCurrentNode(), r);
-			lengthAfter = s.length();
-			sb.append(s);
-		}
-		else if (r != null && r.getType() == DOMRegionContext.XML_CDATA_TEXT) {
-			if (r instanceof ITextRegionContainer) // only interested in
-			// contents
-			{
-				// navigate to next region container (which should be a JSP
-				// region)
-				Iterator it = ((ITextRegionContainer) r).getRegions().iterator();
-				ITextRegion temp = null;
-				while (it.hasNext()) {
-					temp = (ITextRegion) it.next();
-					if (temp instanceof ITextRegionContainer || temp.getType() == DOMRegionContext.XML_CDATA_TEXT) {
-						sb.append(getCurrentNode().getFullText(temp));
-					}
-					else if (temp.getType() == DOMRegionContext.XML_CDATA_OPEN || temp.getType() == DOMRegionContext.XML_CDATA_CLOSE) {
-						cdata_tags_length += temp.getLength();
-					}
-				}
-			}
-		}
-		return (lengthBefore - lengthAfter + cdata_tags_length);
-	}
-
-	//
-	// <jsp:useBean>
-	protected void translateUseBean(ITextRegionCollection container) {
-		ITextRegion r = null;
-		String attrName = null;
-		String attrValue = null;
-		String id = null;
-		ITextRegion idRegion = null;
-		String type = null;
-		ITextRegion typeRegion = null;
-		String className = null;
-		ITextRegion classnameRegion = null;
-		String beanName = null;
-		ITextRegion beanNameRegion = null;
-		
-		if (DOMRegionContext.XML_END_TAG_OPEN.equals(container.getFirstRegion().getType())) {
-			if (!fUseBeansStack.isEmpty()) {
-				fUseBeansStack.pop();
-				appendToBuffer("}", fUserCode, false, fCurrentNode); //$NON-NLS-1$ 
-			}
-			return;
-		}
-
-		Iterator regions = container.getRegions().iterator();
-		while (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && (r.getType() != DOMRegionContext.XML_TAG_CLOSE || r.getType() != DOMRegionContext.XML_EMPTY_TAG_CLOSE)) {
-			attrName = attrValue = null;
-			if (r.getType().equals(DOMRegionContext.XML_TAG_ATTRIBUTE_NAME)) {
-				attrName = container.getText(r).trim();
-				if (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) {
-					if (regions.hasNext() && (r = (ITextRegion) regions.next()) != null && r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-						attrValue = StringUtils.stripQuotes(container.getText(r));
-					}
-					// has equals, but no value?
-				}
-				// an attribute with no equals?
-			}
-			// (pa) might need different logic here if we wanna support more
-			if (attrName != null && attrValue != null) {
-				if (attrName.equals("id")) {//$NON-NLS-1$
-					id = attrValue;
-					idRegion = r;
-				}
-				else if (attrName.equals("class")) {//$NON-NLS-1$
-					className = attrValue;
-					classnameRegion = r;
-				}
-				else if (attrName.equals("type")) {//$NON-NLS-1$
-					type = attrValue;
-					typeRegion = r;
-				}
-				else if (attrName.equals("beanName")) { //$NON-NLS-1$
-					beanName = attrValue;
-					beanNameRegion = r;
-				}
-			}
-		}
-
-		if (id != null) {
-			// The id is not a valid Java identifier
-			if (!isValidJavaIdentifier(id) && idRegion != null) {
-				Object problem = createJSPProblem(IJSPProblem.UseBeanInvalidID, IProblem.ParsingErrorInvalidToken, MessageFormat.format(JSPCoreMessages.JSPTranslator_0, new String[]{id}), container.getStartOffset(idRegion), container.getTextEndOffset(idRegion) - 1);
-				fTranslationProblems.add(problem);
-			}
-			// No Type information is provided
-			if (((type == null && className == null) || (type == null && beanName != null)) && idRegion != null) {
-				Object problem = createJSPProblem(IJSPProblem.UseBeanMissingTypeInfo, IProblem.UndefinedType, NLS.bind(JSPCoreMessages.JSPTranslator_3, new String[]{id}), container.getStartOffset(idRegion), container.getTextEndOffset(idRegion) - 1);
-				fTranslationProblems.add(problem);
-			}
-			// Cannot specify both a class and a beanName
-			if (className != null && beanName != null && beanNameRegion != null) {
-				ITextRegion nameRegion = container.getRegions().get(1);
-				Object problem = createJSPProblem(IJSPProblem.UseBeanAmbiguousType, IProblem.AmbiguousType, JSPCoreMessages.JSPTranslator_2, container.getStartOffset(nameRegion), container.getTextEndOffset(nameRegion) - 1);
-				fTranslationProblems.add(problem);
-			}
-			/*
-			 * Only have a class or a beanName at this point, and potentially
-			 * a type has id w/ type and/or classname/beanName
-			 */
-			// Type id = new Classname/Beanname();
-			// or
-			// Type id = null; // if there is no classname or beanname
-			if ((type != null || className != null)) {
-				if (type == null) {
-					type = className;
-					typeRegion = classnameRegion;
-				}
-
-				/* Now check the types (multiple of generics may be involved) */
-				List errorTypeNames = new ArrayList(2);
-				if (!isTypeFound(type, errorTypeNames)) {
-					for (int i = 0; i < errorTypeNames.size(); i++) {
-						Object problem = createJSPProblem(IJSPProblem.F_PROBLEM_ID_LITERAL, IProblem.UndefinedType, MessageFormat.format(JSPCoreMessages.JSPTranslator_1, new String[]{errorTypeNames.get(i).toString()}), container.getStartOffset(typeRegion), container.getTextEndOffset(typeRegion) - 1);
-						fTranslationProblems.add(problem);
-					}
-				}
-				else {
-					String prefix = type + " " + id + " = "; //$NON-NLS-1$ //$NON-NLS-2$
-					String suffix = "null;" + ENDL; //$NON-NLS-1$
-					if (className != null)
-						suffix = "new " + className + "();" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$
-					else if (beanName != null)
-						suffix = "(" + type + ") java.beans.Beans.instantiate(getClass().getClassLoader(), \"" + beanName + "\");" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					
-					appendToBuffer(prefix + suffix, fUserCode, true, fCurrentNode);
-				}
-			}
-		}
-		/*
-		 * Add a brace and remember the start tag regardless of whether a
-		 * variable was correctly created
-		 */
-		if (!DOMRegionContext.XML_EMPTY_TAG_CLOSE.equals(container.getLastRegion().getType())) {
-			fUseBeansStack.push(container);
-			appendToBuffer("{", fUserCode, false, fCurrentNode); //$NON-NLS-1$ 
-		}
-	}
-
-	/**
-	 * @param type
-	 * @return
-	 */
-	private boolean isTypeFound(String typeName, List errorTypes) {
-		IProject project = getFile().getProject();
-		IJavaProject p = JavaCore.create(project);
-		if (p.exists()) {
-			String types[] = new String[3];
-			if (typeName.indexOf('<') > 0) {
-				// JSR 14 : Generics are being used, parse them out
-				try {
-					StringTokenizer toker = new StringTokenizer(typeName);
-					// generic
-					types[0] = toker.nextToken("<"); //$NON-NLS-1$
-					// type 1 or key
-					types[1] = toker.nextToken(",>"); //$NON-NLS-1$
-					// type 2 or value
-					types[2] = toker.nextToken(",>"); //$NON-NLS-1$
-				}
-				catch (NoSuchElementException e) {
-					// StringTokenizer failure with unsupported syntax
-				}
-			}
-			else {
-				types[0] = typeName;
-			}
-
-			for (int i = 0; i < types.length; i++) {
-				if (types[i] != null) {
-					// remove any array suffixes 
-					if (types[i].indexOf('[') > 0) {
-						types[i] = types[i].substring(0, types[i].indexOf('[')); //$NON-NLS-1$
-					}
-					// remove any "extends" prefixes 
-					if (types[i].indexOf("extends") > 0) {
-						types[i] = StringUtils.strip(types[i].substring(types[i].indexOf("extends"))); //$NON-NLS-1$
-					}
-
-					addNameToListIfTypeNotFound(p, types[i], errorTypes);
-				}
-			}
-		}
-		return errorTypes.isEmpty();
-	}
-	
-	private void addNameToListIfTypeNotFound(IJavaProject p, String typeName, List names) {
-		try {
-			if (typeName != null) {
-				IType type = p.findType(typeName);
-				if (type == null || !type.exists()) {
-					names.add(typeName);
-				}
-			}
-		}
-		catch (JavaModelException e) {
-			// Not a Java Project
-		}
-	}
-
-	private boolean isValidJavaIdentifier(String id) {
-		char[] idChars = id.toCharArray();
-		if (idChars.length < 1)
-			return false;
-		boolean isValid = Character.isJavaIdentifierStart(idChars[0]);
-		for (int i = 1; i < idChars.length; i++) {
-			isValid = isValid && Character.isJavaIdentifierPart(idChars[i]);
-		}
-		return isValid;
-	}
-
-	final public int getCursorPosition() {
-		return fCursorPosition;
-	}
-
-	protected boolean isCursorInExpression() {
-		return fCursorInExpression;
-	}
-
-	protected void setCursorInExpression(boolean in) {
-		fCursorInExpression = in;
-	}
-
-	final public void setSourceCursor(int i) {
-		fSourcePosition = i;
-	}
-
-	final public int getSourcePosition() {
-		return fSourcePosition;
-	}
-
-	final public TLDCMDocumentManager getTLDCMDocumentManager() {
-		return TaglibController.getTLDCMDocumentManager(fStructuredDocument);
-	}
-
-	final public void setRelativeOffset(int relativeOffset) {
-		this.fRelativeOffset = relativeOffset;
-	}
-
-	final public int getRelativeOffset() {
-		return fRelativeOffset;
-	}
-
-	private void setCursorOwner(StringBuffer cursorOwner) {
-		this.fCursorOwner = cursorOwner;
-	}
-
-	final public StringBuffer getCursorOwner() {
-		return fCursorOwner;
-	}
-
-	private IStructuredDocumentRegion setCurrentNode(IStructuredDocumentRegion currentNode) {
-		return this.fCurrentNode = currentNode;
-	}
-
-	final public IStructuredDocumentRegion getCurrentNode() {
-		return fCurrentNode;
-	}
-
-	public ArrayList getELProblems() {
-		return fELProblems;
-	}
-
-	public IStructuredDocument getStructuredDocument() {
-		return fStructuredDocument;
-	}
-
-	private IPath getModelPath() {
-		IPath path = null;
-		IStructuredModel sModel = StructuredModelManager.getModelManager().getExistingModelForRead(getStructuredDocument());
-		try {
-			if (sModel != null)
-				path = new Path(sModel.getBaseLocation());
-		}
-		finally {
-			if (sModel != null)
-				sModel.releaseFromRead();
-		}
-		return path;
-	}
-
-	private void translateCodas() {
-		fProcessIncludes = false;
-		IPath modelpath = getModelPath();
-		if (modelpath != null) {
-			PropertyGroup[] propertyGroups = DeploymentDescriptorPropertyCache.getInstance().getPropertyGroups(modelpath);
-			for (int j = 0; j < propertyGroups.length; j++) {
-				IPath[] codas = propertyGroups[j].getIncludeCoda();
-				for (int i = 0; i < codas.length; i++) {
-					if (!getIncludes().contains(codas[i].toString()) && !codas[i].equals(modelpath)) {
-						getIncludes().push(codas[i]);
-						JSPIncludeRegionHelper helper = new JSPIncludeRegionHelper(this, true);
-						helper.parse(codas[i].toString());
-						getIncludes().pop();
-					}
-				}
-			}
-		}
-		fProcessIncludes = true;
-	}
-
-	private void translatePreludes() {
-		fProcessIncludes = false;
-		IPath modelpath = getModelPath();
-		if (modelpath != null) {
-			PropertyGroup[] propertyGroups = DeploymentDescriptorPropertyCache.getInstance().getPropertyGroups(modelpath);
-			for (int j = 0; j < propertyGroups.length; j++) {
-				IPath[] preludes = propertyGroups[j].getIncludePrelude();
-				for (int i = 0; i < preludes.length; i++) {
-					if (!getIncludes().contains(preludes[i].toString()) && !preludes[i].equals(modelpath)) {
-						getIncludes().push(preludes[i]);
-						JSPIncludeRegionHelper helper = new JSPIncludeRegionHelper(this, true);
-						helper.parse(preludes[i].toString());
-						getIncludes().pop();
-					}
-				}
-			}
-		}
-		fProcessIncludes = true;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/StackMap.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/StackMap.java
deleted file mode 100644
index 3ec0b34..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/StackMap.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Stack;
-
-/**
- * @author nitin
- * 
- */
-class StackMap {
-
-	private Map fInternalMap = null;
-
-	public StackMap() {
-		fInternalMap = new HashMap();
-	}
-
-	/**
-	 * Removes all mappings from this StackMap
-	 */
-	public void clear() {
-		fInternalMap.clear();
-	}
-
-	/**
-	 * Returns the most recently pushed value to which this map maps the
-	 * specified key. Returns <tt>null</tt> if the map contains no mapping
-	 * for this key.
-	 * 
-	 * @param key
-	 *            key whose associated value is to be returned.
-	 * @return the most recently put value to which this map maps the
-	 *         specified key, or <tt>null</tt> if the map contains no
-	 *         mapping for this key.
-	 */
-	public Object peek(Object key) {
-		Stack stack = (Stack) fInternalMap.get(key);
-		if (stack != null) {
-			Object o = stack.peek();
-			if (stack.isEmpty()) {
-				fInternalMap.remove(key);
-			}
-			return o;
-		}
-		return null;
-	}
-
-	/**
-	 * Associates the specified value with the specified key in this map. If
-	 * the map previously contained a mapping for this key, the old value is
-	 * pushed onto the top of this key's private stack.
-	 * 
-	 * @param key
-	 *            key with which the specified value is to be associated.
-	 * @param value
-	 *            value to be associated with the specified key.
-	 * @return newest value associated with specified key
-	 * 
-	 * @throws UnsupportedOperationException
-	 *             if the <tt>put</tt> operation is not supported by this
-	 *             StackMap.
-	 * @throws ClassCastException
-	 *             if the class of the specified key or value prevents it from
-	 *             being stored in this StackMap.
-	 * @throws IllegalArgumentException
-	 *             if some aspect of this key or value prevents it from being
-	 *             stored in this StackMap.
-	 * @throws NullPointerException,
-	 *             as this map does not permit <tt>null</tt> keys or values
-	 */
-	public Object push(Object key, Object value) {
-		Stack stack = (Stack) fInternalMap.get(key);
-		if (stack == null) {
-			stack = new Stack();
-			fInternalMap.put(key, stack);
-		}
-		Object o = stack.push(value);
-		return o;
-	}
-
-	/**
-	 * Removes the most-recent mapping for this key from this StackMap if it
-	 * is present.
-	 * 
-	 * <p>
-	 * Returns the value to which the map previously associated the key, or
-	 * <tt>null</tt> if the map contained no mapping for this key. The map
-	 * will not contain a mapping for the specified key once the call returns.
-	 * 
-	 * @param key
-	 *            key whose stack is to be popped
-	 * @return most-recently pushed value associated with specified key, or
-	 *         <tt>null</tt> if there was no mapping for key.
-	 * 
-	 * @throws ClassCastException
-	 *             if the key is of an inappropriate type for this map.
-	 * @throws NullPointerException
-	 *             if the key is <tt>null</tt> as this class does not permit
-	 *             <tt>null</tt> keys
-	 */
-	public Object pop(Object key) {
-		Stack stack = (Stack) fInternalMap.get(key);
-		if (stack != null) {
-			Object o = stack.pop();
-			if (stack.isEmpty()) {
-				fInternalMap.remove(key);
-			}
-			return o;
-		}
-		return null;
-	}
-
-    /**
-	 * Returns the number of entries in this StackMap, the sum of the sizes of
-	 * every remembered stack.
-	 * 
-	 * @return the number of entries in this map.
-	 */
-	int size() {
-		int size = 0;
-		Iterator i = fInternalMap.values().iterator();
-		while (i.hasNext()) {
-			Collection c = (Collection) i.next();
-			size += c.size();
-		}
-		return size;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslationAdapter.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslationAdapter.java
deleted file mode 100644
index 0125fcd..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslationAdapter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-
-class TagTranslationAdapter extends JSPTranslationAdapter {
-	TagTranslationAdapter(IDOMModel xmlModel) {
-		super(xmlModel);
-	}
-
-	JSPTranslator createTranslator() {
-		return new TagTranslator();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslationAdapterFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslationAdapterFactory.java
deleted file mode 100644
index a43e906..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslationAdapterFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-
-public class TagTranslationAdapterFactory extends JSPTranslationAdapterFactory {
-
-	private TagTranslationAdapter fAdapter = null;
-
-	public TagTranslationAdapterFactory() {
-		super();
-	}
-
-	public INodeAdapterFactory copy() {
-		return new TagTranslationAdapterFactory();
-	}
-
-	protected INodeAdapter createAdapter(INodeNotifier target) {
-		if (target instanceof IDOMNode && fAdapter == null) {
-			fAdapter = new TagTranslationAdapter(((IDOMNode) target).getModel());
-			if (DEBUG) {
-				System.out.println("(+) TagTranslationAdapterFactory [" + this + "] created adapter: " + fAdapter); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		return fAdapter;
-	}
-
-	public void release() {
-		if (fAdapter != null) {
-			if (DEBUG) {
-				System.out.println("(-) TagTranslationAdapterFactory [" + this + "] releasing adapter: " + fAdapter); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			fAdapter.release();
-		}
-		super.release();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslator.java
deleted file mode 100644
index 2d7c17d..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/TagTranslator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-class TagTranslator extends JSPTranslator {
-
-	public TagTranslator() {
-		super();
-	}
-	
-	protected void init() {
-		fClassHeader = "public class _TagHandler extends "; //$NON-NLS-1$
-		fClassname = "_TagHandler"; //$NON-NLS-1$
-
-		fImplicitImports = "import javax.servlet.*;" + ENDL + //$NON-NLS-1$
-					"import javax.servlet.http.*;" + ENDL + //$NON-NLS-1$
-					"import javax.servlet.jsp.*;" + ENDL + ENDL; //$NON-NLS-1$
-
-		fServiceHeader = "public void doTag() throws JspException, java.io.IOException, IllegalStateException, SkipPageException {" + //$NON-NLS-1$
-					"javax.servlet.http.HttpServletResponse response = null;" + ENDL + //$NON-NLS-1$
-					"javax.servlet.http.HttpServletRequest request = null;" + ENDL + //$NON-NLS-1$
-					"JspContext jspContext = null;" + ENDL + //$NON-NLS-1$
-					"javax.servlet.ServletContext application = null;" + ENDL + //$NON-NLS-1$
-					"javax.servlet.jsp.JspWriter out = null;" + ENDL + //$NON-NLS-1$
-					"javax.servlet.ServletConfig config = null;" + ENDL; //$NON-NLS-1$ 
-
-		fSuperclass = "javax.servlet.jsp.tagext.SimpleTagSupport"; //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java
deleted file mode 100644
index 00f8004..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java
+++ /dev/null
@@ -1,515 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.eclipse.jst.jsp.core.internal.encoding.JSPDocumentLoader;
-import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.internal.util.FileContentCache;
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.IModelHandler;
-import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
-import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionHandler;
-import org.eclipse.wst.sse.core.internal.modelhandler.ModelHandlerRegistry;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-
-/**
- * Parser/helper class for JSPTranslator. Used for parsing XML-JSP regions (in
- * a script block) A lot of logic borrowed from TLDCMDocumentManager. There
- * should be only one XMLJSPRegionHelper per text file
- * 
- * @author pavery
- */
-class XMLJSPRegionHelper implements StructuredDocumentRegionHandler {
-	private final JSPTranslator fTranslator;
-	protected JSPSourceParser fLocalParser = null;
-	protected String fTextToParse = null;
-	// need this if not at the start of the document (eg. parsing just a
-	// script block)
-	protected int fStartOfTextToParse = 0;
-	// name of the open tag that was last handled (if we are interested in it)
-	protected String fTagname = null;
-	protected String fTextBefore = ""; //$NON-NLS-1$
-	protected String fUnescapedText = ""; //$NON-NLS-1$
-	protected String fStrippedText = ""; //$NON-NLS-1$
-	// for reconciling cursor position later
-	int fPossibleOwner = JSPTranslator.SCRIPTLET;
-	/**
-	 * Determines whether translated source appends are indicated as
-	 * "indirect", affecting how offsets are mapped.
-	 */
-	boolean fAppendAsIndirectSource;
-
-	public XMLJSPRegionHelper(JSPTranslator translator, boolean appendAsIndirectSource) {
-		getLocalParser().addStructuredDocumentRegionHandler(this);
-		this.fTranslator = translator;
-		fAppendAsIndirectSource = appendAsIndirectSource;
-	}
-
-	protected JSPSourceParser getLocalParser() {
-		if (fLocalParser == null)
-			fLocalParser = new JSPSourceParser();
-		return fLocalParser;
-	}
-
-	public void addBlockMarker(BlockMarker marker) {
-		fLocalParser.addBlockMarker(marker);
-	}
-
-	public void reset(String textToParse) {
-		reset(textToParse, 0);
-	}
-
-	public void reset(String textToParse, int start) {
-		fStartOfTextToParse = start;
-		fTextToParse = textToParse;
-	}
-
-	public void forceParse() {
-		String contents = fTextToParse;
-
-		IStructuredDocument document = (IStructuredDocument) new JSPDocumentLoader().createNewStructuredDocument();
-		if(contents != null && document != null) {		
-			// from outer class
-			List blockMarkers = this.fTranslator.getBlockMarkers();
-			// this adds the current markers from the outer class list
-			// to this parser so parsing works correctly
-			for (int i = 0; i < blockMarkers.size(); i++) {
-				addBlockMarker((BlockMarker) blockMarkers.get(i));
-			}
-			reset(contents);
-	
-			document.set(contents);
-			IStructuredDocumentRegion cursor = document.getFirstStructuredDocumentRegion();
-			while(cursor != null) {
-				nodeParsed(cursor);
-				cursor = cursor.getNext();
-			}
-		}
-	}
-
-	/*
-	 * parse an entire file
-	 * 
-	 * @param filename @return
-	 */
-	public boolean parse(String filePathString) {
-		boolean parsed = false;
-		IStructuredDocument document = null;
-		String contents = null;
-
-		IPath filePath = new Path(filePathString);
-		IFile f = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
-		if (f == null || !f.isAccessible()) {
-			f = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(filePath);
-		}
-		if (f != null && f.isAccessible()) {
-			/*
-			 * using a real document allows us to pull out text in the
-			 * translator for dealing with TEI variables
-			 */
-			try {
-				IModelHandler handler = ModelHandlerRegistry.getInstance().getHandlerFor(f);
-				document = (IStructuredDocument) handler.getDocumentLoader().createNewStructuredDocument();
-				contents = FileContentCache.getInstance().getContents(f.getFullPath());
-			}
-			catch (CoreException e) {
-				Logger.logException(e);
-			}
-		}
-		if (contents != null && document != null) {
-			// from outer class
-			List blockMarkers = this.fTranslator.getBlockMarkers();
-			// this adds the current markers from the outer class list
-			// to this parser so parsing works correctly
-			for (int i = 0; i < blockMarkers.size(); i++) {
-				addBlockMarker((BlockMarker) blockMarkers.get(i));
-			}
-			reset(contents);
-			// forces parse
-			document.set(contents);
-			IStructuredDocumentRegion cursor = document.getFirstStructuredDocumentRegion();
-			while (cursor != null) {
-				nodeParsed(cursor);
-				cursor = cursor.getNext();
-			}
-			parsed = true;
-		}
-		return parsed;
-	}
-
-
-	/*
-	 * listens to parser node parsed events adds to local scriplet,
-	 * expression, declaration buffers determines which type of region the
-	 * cursor is in, and adjusts cursor offset accordingly
-	 */
-	public void nodeParsed(IStructuredDocumentRegion sdRegion) {
-
-		try {
-			if (isJSPEndRegion(sdRegion)) {
-				String nameStr = getRegionName(sdRegion);
-				if (isPossibleCustomTag(nameStr)) {
-					// this custom tag may define variables
-					this.fTranslator.addTaglibVariables(nameStr, sdRegion);
-				}
-				fTagname = null;
-			}
-			else if (isJSPStartRegion(sdRegion)) {
-				String nameStr = getRegionName(sdRegion);
-				if (sdRegion.getFirstRegion().getType() == DOMRegionContext.XML_TAG_OPEN) {
-					if (isPossibleCustomTag(nameStr)) {
-						// this custom tag may define variables
-						this.fTranslator.addTaglibVariables(nameStr, sdRegion);
-					}
-				}
-				if (isJSPRegion(nameStr))
-					fTagname = nameStr;
-				else
-					fTagname = null;
-
-
-				// this section assumes important content (to translate)
-				// IS the opening tag
-
-				// handle include and directive
-				if (fTagname != null && sdRegion.getFirstRegion().getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN) {
-					processOtherRegions(sdRegion);
-				}
-
-
-				// handle jsp:useBean
-				if (fTagname != null && fTagname.equals(JSP11Namespace.ElementName.USEBEAN)) {
-					processUseBean(sdRegion);
-				}
-			}
-			else if (sdRegion.getFirstRegion().getType() == DOMJSPRegionContexts.JSP_CONTENT || sdRegion.getFirstRegion().getType() == DOMRegionContext.XML_CONTENT) {
-				// this section assumes important content (to translate)
-				// is AFTER the opening tag
-				if (fTagname != null) {
-					// assign contents to one of the tables
-					if (isScriptlet(fTagname)) {
-						processScriptlet(sdRegion);
-					}
-					else if (isExpression(fTagname)) {
-						processExpression(sdRegion);
-					}
-					else if (isDeclaration(fTagname)) {
-						processDeclaration(sdRegion);
-					}
-				}
-			}
-			else {
-				fTagname = null;
-				/*
-				 * We may have been asked to decode a script block with an XML
-				 * comment in it (a common provision for browsers not
-				 * supporting client scripting). While
-				 * scriptlets/expressions/declarations will be identified as
-				 * part of the normal parsing process, the temporary document
-				 * used here will be parsed differently, respecting the
-				 * comment since it's not in a tag block region any more, and
-				 * the custom tags in the comment will not be found. Run those
-				 * comment text pieces through the translator on their own.
-				 */
-				Iterator regions = sdRegion.getRegions().iterator();
-				while (regions.hasNext()) {
-					ITextRegion region = (ITextRegion) regions.next();
-					if (DOMRegionContext.XML_COMMENT_TEXT.equals(region.getType()) && region.getStart() != 0) {
-						fTranslator.decodeScriptBlock(sdRegion.getFullText(region), sdRegion.getStartOffset(region));
-					}
-				}
-			}
-			// this updates cursor position
-			checkCursorInRegion(sdRegion);
-		}
-		catch (NullPointerException e) {
-			// logging this exception that I've seen a couple of times...
-			// seems to happen during shutdown of unit tests, at which
-			// point Logger has already been unloaded
-			try {
-				Logger.logException("XMLJSPRegionHelper: exception in node parsing", e); //$NON-NLS-1$
-			}
-			catch (NoClassDefFoundError ex) {
-				// do nothing, since we're just ending
-			}
-		}
-	}
-
-	public void resetNodes() {
-		// do nothing
-	}
-
-	private void checkCursorInRegion(IStructuredDocumentRegion sdRegion) {
-		// if cursor is in this region...
-		if (this.fTranslator.getSourcePosition() >= fStartOfTextToParse + sdRegion.getStartOffset() && this.fTranslator.getSourcePosition() <= fStartOfTextToParse + sdRegion.getEndOffset()) {
-			int endOfNameTag = sdRegion.getStartOffset();
-			int offset = fTextBefore.length() - fStrippedText.length();
-			// offset in addtion to what's already in the buffer
-			this.fTranslator.setRelativeOffset(this.fTranslator.getSourcePosition() - (fStartOfTextToParse + endOfNameTag) - offset);
-			// outer class method
-			this.fTranslator.setCursorOwner(fPossibleOwner);
-			// add length of what's already in the buffer
-			this.fTranslator.setRelativeOffset(this.fTranslator.getRelativeOffset() + this.fTranslator.getCursorOwner().length());
-			if (fPossibleOwner == JSPTranslator.EXPRESSION) {
-				// add length of expression prefix if necessary...
-				this.fTranslator.setRelativeOffset(this.fTranslator.getRelativeOffset() + JSPTranslator.EXPRESSION_PREFIX.length());
-			}
-		}
-	}
-
-	protected void processDeclaration(IStructuredDocumentRegion sdRegion) {
-		prepareText(sdRegion);
-		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
-		this.fTranslator.translateDeclarationString(fStrippedText, currentNode, currentNode.getStartOffset(), currentNode.getLength(), fAppendAsIndirectSource);
-		fPossibleOwner = JSPTranslator.DECLARATION;
-	}
-
-	protected void processExpression(IStructuredDocumentRegion sdRegion) {
-		prepareText(sdRegion);
-		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
-		this.fTranslator.translateExpressionString(fStrippedText, currentNode, currentNode.getStartOffset(), currentNode.getLength(), fAppendAsIndirectSource);
-		fPossibleOwner = JSPTranslator.EXPRESSION;
-	}
-
-	protected void processScriptlet(IStructuredDocumentRegion sdRegion) {
-		prepareText(sdRegion);
-		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
-		this.fTranslator.translateScriptletString(fStrippedText, currentNode, currentNode.getStartOffset(), currentNode.getLength(), fAppendAsIndirectSource);
-		fPossibleOwner = JSPTranslator.SCRIPTLET;
-	}
-
-	/*
-	 * Substitutes values for entity references, strips CDATA tags, and keeps
-	 * track of string length(s) for cursor position calculation later. @param
-	 * sdRegion
-	 */
-	protected void prepareText(IStructuredDocumentRegion sdRegion) {
-		fTextBefore = fTextToParse.substring(sdRegion.getStartOffset(), sdRegion.getEndOffset());
-		fUnescapedText = EscapedTextUtil.getUnescapedText(fTextBefore);
-		fStrippedText = this.fTranslator.stripCDATA(fUnescapedText);
-	}
-
-	protected void processUseBean(IStructuredDocumentRegion sdRegion) {
-		if (fTagname != null && isUseBean(fTagname)) {
-
-			String beanClass, beanType, beanId, beanDecl = ""; //$NON-NLS-1$
-			beanClass = getAttributeValue("class", sdRegion); //$NON-NLS-1$
-			beanType = getAttributeValue("type", sdRegion); //$NON-NLS-1$
-			beanId = getAttributeValue("id", sdRegion); //$NON-NLS-1$
-
-			if (beanId != null && (beanType != null || beanClass != null)) {
-				String prefix = null;
-				if (beanType.length() != 0) {
-					/* a type was specified */
-					prefix = beanType + " " + beanId + " = "; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				else {
-					/* no type was specified, use the concrete class value */
-					prefix = beanClass + " " + beanId + " = "; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				/*
-				 * Define as null by default. If a concrete class was
-				 * specified, supply a default constructor invocation instead.
-				 */
-				String suffix = "null;\n"; //$NON-NLS-1$
-				// 186771 - JSP Validator problem with included useBean
-				if (beanClass.length() > 0) {
-					suffix = "new " + beanClass + "();\n"; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				beanDecl = prefix + suffix;
-			}
-
-			IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
-			this.fTranslator.translateScriptletString(beanDecl, currentNode, currentNode.getStartOffset(), currentNode.getLength(), fAppendAsIndirectSource);
-			fPossibleOwner = JSPTranslator.SCRIPTLET;
-		}
-	}
-
-	protected void processOtherRegions(IStructuredDocumentRegion sdRegion) {
-		processIncludeDirective(sdRegion);
-		processPageDirective(sdRegion);
-	}
-
-	protected void processIncludeDirective(IStructuredDocumentRegion sdRegion) {
-		if (isIncludeDirective(fTagname)) {
-			// the directive name region itself contains the attrs...
-			if (sdRegion.getRegions().get(0).getType() == DOMRegionContext.XML_CONTENT)
-				sdRegion = sdRegion.getPrevious();
-			String fileLocation = getAttributeValue("file", sdRegion); //$NON-NLS-1$
-			this.fTranslator.handleIncludeFile(fileLocation);
-		}
-		else if (isPossibleCustomTag(fTagname)) {
-			// this custom tag may define variables
-			this.fTranslator.addTaglibVariables(fTagname, sdRegion);
-		}
-		else if (isTaglibDirective(fTagname)) {
-			// also add the ones created here to the parent document
-			String prefix = getAttributeValue("prefix", sdRegion); //$NON-NLS-1$
-			TLDCMDocumentManager documentManager = this.fTranslator.getTLDCMDocumentManager();
-			if (documentManager != null) {
-				List docs = documentManager.getCMDocumentTrackers(prefix, this.fTranslator.getCurrentNode().getStartOffset());
-				Iterator it = docs.iterator();
-				Iterator elements = null;
-				CMNode node = null;
-				CMDocument doc = null;
-				BlockMarker marker = null;
-				while (it.hasNext()) {
-					doc = (CMDocument) it.next();
-					elements = doc.getElements().iterator();
-					while (elements.hasNext()) {
-						node = (CMNode) elements.next();
-						marker = new BlockMarker(node.getNodeName(), null, DOMJSPRegionContexts.JSP_CONTENT, true);
-						// global scope is OK because we have encountered this
-						// <@taglib> directive
-						// so it all markers from it should will be in scope
-						// add to this local parser
-						addBlockMarker(marker);
-						// add to outer class marker list, for
-						this.fTranslator.getBlockMarkers().add(marker);
-					}
-				}
-			}
-		}
-	}
-
-	protected void processPageDirective(IStructuredDocumentRegion sdRegion) {
-		if (isPageDirective(fTagname)) {
-			this.fTranslator.translatePageDirectiveAttributes(sdRegion.getRegions().iterator(), sdRegion);
-		}
-	}
-
-	/*
-	 * convenience method to get an attribute value from attribute name
-	 */
-	protected String getAttributeValue(String attrName, IStructuredDocumentRegion sdRegion) {
-		String sdRegionText = fTextToParse.substring(sdRegion.getStartOffset(), sdRegion.getEndOffset());
-		String textRegionText, attrValue = ""; //$NON-NLS-1$
-		Iterator it = sdRegion.getRegions().iterator();
-		ITextRegion nameRegion, valueRegion = null;
-		while (it.hasNext()) {
-			nameRegion = (ITextRegion) it.next();
-			if (nameRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-				textRegionText = sdRegionText.substring(nameRegion.getStart(), nameRegion.getTextEnd());
-				if (textRegionText.equalsIgnoreCase(attrName)) {
-					while (it.hasNext()) {
-						valueRegion = (ITextRegion) it.next();
-						if (valueRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-							attrValue = sdRegionText.substring(valueRegion.getStart(), valueRegion.getEnd());
-							break; // inner
-						}
-					}
-					break; // outer
-				}
-			}
-		}
-		return StringUtils.stripQuotes(attrValue);
-	}
-
-	// these methods determine what content gets added to the local scriplet,
-	// expression, declaration buffers
-	/*
-	 * return true for elements whose contents we might want to add to the
-	 * java file we are building
-	 */
-	protected boolean isJSPStartRegion(IStructuredDocumentRegion sdRegion) {
-		return (sdRegion.getFirstRegion().getType() == DOMRegionContext.XML_TAG_OPEN || sdRegion.getFirstRegion().getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN);
-	}
-
-	private boolean isJSPEndRegion(IStructuredDocumentRegion sdRegion) {
-		return (sdRegion.getFirstRegion().getType() == DOMRegionContext.XML_END_TAG_OPEN);
-	}
-
-	protected boolean isJSPRegion(String tagName) {
-		return isDeclaration(tagName) || isExpression(tagName) || isScriptlet(tagName) || isUseBean(tagName) || isIncludeDirective(tagName) || isPossibleCustomTag(tagName) || isTaglibDirective(tagName) || isPageDirective(tagName);
-	}
-
-	protected boolean isDeclaration(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:declaration"); //$NON-NLS-1$		
-	}
-
-	protected boolean isExpression(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:expression"); //$NON-NLS-1$		
-	}
-
-	protected boolean isScriptlet(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:scriptlet"); //$NON-NLS-1$
-	}
-
-	protected boolean isUseBean(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:useBean"); //$NON-NLS-1$
-	}
-
-	protected boolean isIncludeDirective(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:directive.include"); //$NON-NLS-1$
-	}
-
-	protected boolean isPossibleCustomTag(String tagName) {
-		int colonIndex = tagName.indexOf(":");
-		boolean isPossible = false;
-		if (colonIndex > 0) {
-			String prefix = tagName.substring(0, colonIndex);
-			isPossible = !prefix.equals("jsp"); //$NON-NLS-1$
-		}
-		return isPossible;
-	}
-
-	protected boolean isTaglibDirective(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:directive.taglib"); //$NON-NLS-1$
-	}
-
-	protected boolean isPageDirective(String tagName) {
-		return tagName.equalsIgnoreCase("jsp:directive.page"); //$NON-NLS-1$
-	}
-
-	protected String getRegionName(IStructuredDocumentRegion sdRegion) {
-
-		String nameStr = ""; //$NON-NLS-1$
-		ITextRegionList regions = sdRegion.getRegions();
-		for (int i = 0; i < regions.size(); i++) {
-			ITextRegion r = regions.get(i);
-			if (r.getType() == DOMRegionContext.XML_TAG_NAME) {
-				nameStr = fTextToParse.substring(sdRegion.getStartOffset(r), sdRegion.getTextEndOffset(r));
-				break;
-			}
-		}
-		return nameStr.trim();
-	}
-
-	/**
-	 * get the contents of a file as a String
-	 * 
-	 * @param filePath - the path to the file
-	 * @return the contents, null if the file could not be found
-	 */
-	protected String getContents(String filePath) {
-		IPath path = new Path(filePath);
-		return FileContentCache.getInstance().getContents(path.makeAbsolute());
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAddExpress.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAddExpress.java
deleted file mode 100644
index a3c6a6e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAddExpress.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTAddExpress.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTAddExpress extends SimpleNode {
-  public ASTAddExpress(int id) {
-    super(id);
-  }
-
-  public ASTAddExpress(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAddExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAddExpression.java
deleted file mode 100644
index c3b6eac..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAddExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTAddExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTAddExpression extends ASTOperatorExpression {
-  public ASTAddExpression(int id) {
-    super(id);
-  }
-
-  public ASTAddExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAndExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAndExpression.java
deleted file mode 100644
index befe402..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTAndExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTAndExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTAndExpression extends ASTOperatorExpression {
-  public ASTAndExpression(int id) {
-    super(id);
-  }
-
-  public ASTAndExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTChoiceExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTChoiceExpression.java
deleted file mode 100644
index 779079e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTChoiceExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTChoiceExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTChoiceExpression extends SimpleNode {
-  public ASTChoiceExpression(int id) {
-    super(id);
-  }
-
-  public ASTChoiceExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTEqualityExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTEqualityExpression.java
deleted file mode 100644
index 4a06113..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTEqualityExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTEqualityExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTEqualityExpression extends ASTOperatorExpression {
-  public ASTEqualityExpression(int id) {
-    super(id);
-  }
-
-  public ASTEqualityExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTExpression.java
deleted file mode 100644
index 9d93f38..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTExpression extends SimpleNode {
-  public ASTExpression(int id) {
-    super(id);
-  }
-
-  public ASTExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTFunctionInvocation.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTFunctionInvocation.java
deleted file mode 100644
index a0cad90..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTFunctionInvocation.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTFunctionInvocation.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTFunctionInvocation extends SimpleNode {
-  String fullFunctionName; 
-  
-  public ASTFunctionInvocation(int id) {
-    super(id);
-  }
-
-  public ASTFunctionInvocation(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-
-public String getFullFunctionName() {
-	return fullFunctionName;
-}
-
-public void setFullFunctionName(String fullFunctionName) {
-	this.fullFunctionName = fullFunctionName;
-}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTGTNode.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTGTNode.java
deleted file mode 100644
index d40005b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTGTNode.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTGTNode.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTGTNode extends SimpleNode {
-  public ASTGTNode(int id) {
-    super(id);
-  }
-
-  public ASTGTNode(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTImplicitObject.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTImplicitObject.java
deleted file mode 100644
index 1049ad5..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTImplicitObject.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTImplicitObject.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTImplicitObject extends SimpleNode {
-  public ASTImplicitObject(int id) {
-    super(id);
-  }
-
-  public ASTImplicitObject(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTLiteral.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTLiteral.java
deleted file mode 100644
index fb334f4..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTLiteral.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTLiteral.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTLiteral extends SimpleNode {
-  public ASTLiteral(int id) {
-    super(id);
-  }
-
-  public ASTLiteral(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTMultiplyExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTMultiplyExpression.java
deleted file mode 100644
index 3d8f600..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTMultiplyExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTMultiplyExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTMultiplyExpression extends ASTOperatorExpression {
-  public ASTMultiplyExpression(int id) {
-    super(id);
-  }
-
-  public ASTMultiplyExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTOperatorExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTOperatorExpression.java
deleted file mode 100644
index 3da6b77..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTOperatorExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ASTOperatorExpression extends SimpleNode {
-	protected ArrayList operatorTokens = new ArrayList();
-
-	public ASTOperatorExpression(int i) {
-		super(i);
-	}
-	
-	public ASTOperatorExpression(JSPELParser p, int i) {
-		this(i);
-		parser = p;
-	}
-
-	public void addOperatorToken(Token opToken) {
-		operatorTokens.add(opToken);
-	}
-	
-	public List getOperatorTokens() {
-		return operatorTokens;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTOrExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTOrExpression.java
deleted file mode 100644
index f3bb76c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTOrExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTOrExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTOrExpression extends ASTOperatorExpression {
-  public ASTOrExpression(int id) {
-    super(id);
-  }
-
-  public ASTOrExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTRelationalExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTRelationalExpression.java
deleted file mode 100644
index 3023846..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTRelationalExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTRelationalExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTRelationalExpression extends ASTOperatorExpression {
-  public ASTRelationalExpression(int id) {
-    super(id);
-  }
-
-  public ASTRelationalExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTStart.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTStart.java
deleted file mode 100644
index 2fe1e50..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTStart.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTStart extends SimpleNode {
-  public ASTStart(int id) {
-    super(id);
-  }
-
-  public ASTStart(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTUnaryExpression.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTUnaryExpression.java
deleted file mode 100644
index 86870a3..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTUnaryExpression.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTUnaryExpression.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTUnaryExpression extends SimpleNode {
-  public ASTUnaryExpression(int id) {
-    super(id);
-  }
-
-  public ASTUnaryExpression(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValue.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValue.java
deleted file mode 100644
index fd6a36c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValue.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTValue.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTValue extends SimpleNode {
-  public ASTValue(int id) {
-    super(id);
-  }
-
-  public ASTValue(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValuePrefix.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValuePrefix.java
deleted file mode 100644
index 1f2bf03..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValuePrefix.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTValuePrefix.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTValuePrefix extends SimpleNode {
-  public ASTValuePrefix(int id) {
-    super(id);
-  }
-
-  public ASTValuePrefix(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValueSuffix.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValueSuffix.java
deleted file mode 100644
index 2317267..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ASTValueSuffix.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. ASTValueSuffix.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class ASTValueSuffix extends SimpleNode {
-	
-  protected Token propertyNameToken;
-  
-  public ASTValueSuffix(int id) {
-    super(id);
-  }
-
-  public ASTValueSuffix(JSPELParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-
-public Token getPropertyNameToken() {
-	return propertyNameToken;
-}
-
-public void setPropertyNameToken(Token propertyNameToken) {
-	this.propertyNameToken = propertyNameToken;
-}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGenerator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGenerator.java
deleted file mode 100644
index ef40a9e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGenerator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-import java.util.Map;
-
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
-
-/**
- * The code checker for the jsf/jsp EL.
- */
-public final class ELGenerator {
-	/**
-     * Constructor.
-     *
-     * @param locator A valid ELLocator instance, may not be null.
-     */
-    public ELGenerator() {
-    } // constructor
-	
-
-    /**
-     * Check the netuiel AST and set diagnostics as necessary.
-     * @param translator TODO
-     * @param jspReferenceRegion TODO
-     * @param contentStart 
-     * @param contentLength 
-     */
-    public void generate(ASTExpression root, IStructuredDocumentRegion currentNode, StringBuffer result, Map codeMap, IStructuredDocument document, ITextRegionCollection jspReferenceRegion, int contentStart, int contentLength) {
-		ELGeneratorVisitor visitor = new ELGeneratorVisitor(result, currentNode, codeMap, document, jspReferenceRegion, contentStart);
-		root.jjtAccept(visitor, null);
-    }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java
deleted file mode 100644
index acb961c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java
+++ /dev/null
@@ -1,509 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *     Bug 154474 EL: 'and', 'or', ... operator
- *     https://bugs.eclipse.org/bugs/show_bug.cgi?id=154474
- *     Bernhard Huemer <bernhard.huemer@gmail.com>
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.CMDocumentImpl;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TaglibTracker;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDFunction;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
-
-public class ELGeneratorVisitor implements JSPELParserVisitor {
-	
-	private static final String ENDL = "\n"; //$NON-NLS-1$
-	
-	private static final String fExpressionHeader1 = "public String _elExpression"; //$NON-NLS-1$
-	private static final String fExpressionHeader2 = "()" + ENDL + //$NON-NLS-1$
-	"\t\tthrows java.io.IOException, javax.servlet.ServletException {" + ENDL + //$NON-NLS-1$
-	"javax.servlet.jsp.PageContext pageContext = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map param = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map paramValues = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map header = null;" + ENDL + //$NON-NLS-1$ 
-	"java.util.Map headerValues = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map cookie = null;" + ENDL + //$NON-NLS-1$ 
-	"java.util.Map initParam = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map pageScope = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map requestScope = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map sessionScope = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map applicationScope = null;" + ENDL + //$NON-NLS-1$
-	"return \"\"+"; //$NON-NLS-1$
-
-	private static final String fExpressionHeader2_param = "()" + ENDL + //$NON-NLS-1$
-	"\t\tthrows java.io.IOException, javax.servlet.ServletException {" + ENDL + //$NON-NLS-1$
-	"javax.servlet.jsp.PageContext pageContext = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map<java.lang.String, java.lang.String> param = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map<java.lang.String, java.lang.String[]> paramValues = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map<java.lang.String, java.lang.String> header = null;" + ENDL + //$NON-NLS-1$ 
-	"java.util.Map<java.lang.String, java.lang.String[]> headerValues = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map<java.lang.String, javax.servlet.http.Cookie> cookie = null;" + ENDL + //$NON-NLS-1$ 
-	"java.util.Map<java.lang.String, java.lang.String> initParam = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map<java.lang.String, java.lang.Object> pageScope = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map<java.lang.String, java.lang.Object> requestScope = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map<java.lang.String, java.lang.Object> sessionScope = null;" + ENDL + //$NON-NLS-1$
-	"java.util.Map<java.lang.String, java.lang.Object> applicationScope = null;" + ENDL + //$NON-NLS-1$
-	"return \"\"+"; //$NON-NLS-1$
-	
-	private static final String fJspImplicitObjects[] = { "pageContext" }; //$NON-NLS-1$
-	
-	private static final String fJspImplicitMaps[] = { 	"param", "paramValues", "header", "headerValues", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-														"cookie", "initParam", "pageScope", "requestScope", "sessionScope",  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-														"applicationScope" }; //$NON-NLS-1$
-	
-	private static final HashMap fJSPImplicitObjectMap = new HashMap(fJspImplicitObjects.length);
-	static {
-		for(int i = 0; i < fJspImplicitObjects.length; i++) {
-			fJSPImplicitObjectMap.put(fJspImplicitObjects[i], new Boolean(true));
-		}
-		
-		for(int i = 0; i < fJspImplicitMaps.length; i++) {
-			fJSPImplicitObjectMap.put(fJspImplicitMaps[i], new Boolean(false));
-		}
-	}
-	
-	private static final String fFooter = " ;" + ENDL + "}" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$
-
-	private StringBuffer fResult;
-	private Map fCodeMap;
-	private int fOffsetInUserCode;
-	private static int methodCounter = 0;
-	private IStructuredDocument fDocument = null;
-	private int fContentStart;
-	private static Map fOperatorMap;
-	
-	// this flag lets us know if we were unable to generate for some reason.  One possible reason is that the expression 
-	// contains a reference to a variable for which information is only available at runtime.
-	private boolean fCanGenerate = true;
-
-	private IStructuredDocumentRegion fCurrentNode;
-
-	private boolean fUseParameterizedTypes;
-
-	/**
-	 * Tranlsation of XML-style operators to java
-	 */
-	static {
-		fOperatorMap = new HashMap();
-		fOperatorMap.put("gt", ">"); //$NON-NLS-1$ //$NON-NLS-2$
-		fOperatorMap.put("lt", "<"); //$NON-NLS-1$ //$NON-NLS-2$
-		fOperatorMap.put("ge", ">="); //$NON-NLS-1$ //$NON-NLS-2$
-		fOperatorMap.put("le", "<="); //$NON-NLS-1$ //$NON-NLS-2$
-		fOperatorMap.put("mod", "%"); //$NON-NLS-1$ //$NON-NLS-2$
-		fOperatorMap.put("eq", "=="); //$NON-NLS-1$ //$NON-NLS-2$
-		fOperatorMap.put("and", "&&"); //$NON-NLS-1$ //$NON-NLS-2$
-		fOperatorMap.put("or", "||"); //$NON-NLS-1$ //$NON-NLS-2$
-		fOperatorMap.put("not", "!"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-	
-	/**
-	 * The constructor squirrels away a few things we'll need later
-	 * 
-	 * @param result
-	 * @param codeMap
-	 * @param translator
-	 * @param jspReferenceRegion
-	 * @param contentStart
-	 */
-	public ELGeneratorVisitor(StringBuffer result, IStructuredDocumentRegion currentNode, Map codeMap, IStructuredDocument document, ITextRegionCollection jspReferenceRegion, int contentStart)
-	{
-		fResult = result;
-		fCodeMap = codeMap;
-		fOffsetInUserCode = result.length();
-		fContentStart = contentStart;
-		fDocument = document;
-		fCurrentNode = currentNode;
-		
-		fUseParameterizedTypes = compilerSupportsParameterizedTypes();
-	}
-
-	/**
-	 * Append a token to the output stream.  Automatically calculating mapping.
-	 * 
-	 * @param token
-	 */
-	private void append(Token token)
-	{
-		append(token.image, token.beginColumn - 1, token.endColumn);
-	}
-	
-	/**
-	 * Append a translation for the corresponding input token.
-	 * 
-	 * @param translated
-	 * @param token
-	 */
-	private void append(String translated, Token token)
-	{
-		append(translated, token.beginColumn - 1, token.endColumn);
-	}
-
-	/**
-	 * Append a string explicitly giving the input mapping.
-	 * 
-	 * @param newText
-	 * @param jspPositionStart
-	 * @param jspPositionEnd
-	 */
-	private void append(String newText, int jspPositionStart, int jspPositionEnd)
-	{
-		fResult.append(newText);
-		Position javaRange = new Position(fOffsetInUserCode, newText.length());
-		Position jspRange = new Position(fContentStart + jspPositionStart, jspPositionEnd - jspPositionStart);
-
-		fCodeMap.put(javaRange, jspRange);
-		fOffsetInUserCode += newText.length();
-	}
-	
-	/**
-	 * Append text that will be unmapped and therefore will not be available for completion.
-	 * 
-	 * @param newText
-	 */
-	private void append(String newText)
-	{
-		fResult.append(newText);
-		fOffsetInUserCode += newText.length();
-	}
-	
-	/**
-	 * Generate a function invocation.
-	 * 
-	 * @param fullFunctionName
-	 * @return
-	 */
-	protected String genFunction(String fullFunctionName) {
-		TLDCMDocumentManager docMgr = TaglibController.getTLDCMDocumentManager(fDocument);
-		int colonIndex = fullFunctionName.indexOf(':');
-		String prefix = fullFunctionName.substring(0, colonIndex);
-		String functionName = fullFunctionName.substring(colonIndex + 1);
-		if (docMgr == null)
-			return null;
-		
-		Iterator taglibs = docMgr.getCMDocumentTrackers(fCurrentNode.getStartOffset()).iterator();
-		while (taglibs.hasNext()) {
-			TaglibTracker tracker = (TaglibTracker)taglibs.next();
-			if(tracker.getPrefix().equals(prefix)) {
-				CMDocumentImpl doc = (CMDocumentImpl)tracker.getDocument();
-				
-				List functions = doc.getFunctions();
-				for(Iterator it = functions.iterator(); it.hasNext(); ) {
-					TLDFunction function = (TLDFunction)it.next();
-					if(function.getName().equals(functionName)) {
-						return function.getClassName() + "." + function.getName(); //$NON-NLS-1$
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Handle a simple node -- fallback
-	 */
-	public Object visit(SimpleNode node, Object data) {
-		return(node.childrenAccept(this, data));
-	}
-
-	static synchronized int getMethodCounter() {
-		return methodCounter++;
-	}
-	
-	/**
-	 * Handle top-level expression
-	 */
-	public Object visit(ASTExpression node, Object data) {
-		int start = node.getFirstToken().beginColumn - 1;
-		int end = node.lastToken.endColumn - 1;
-		append(fExpressionHeader1, start, start);
-		append(Integer.toString(getMethodCounter()), start, start);
-		if (fUseParameterizedTypes)
-			append(fExpressionHeader2_param, start, start);
-		else
-			append(fExpressionHeader2, start, start);
-		
-		Object retval = node.childrenAccept(this, data);
-
-		append(fFooter, end, end);
-		
-		// something is preventing good code generation so empty out the result and the map.
-		if(!fCanGenerate) {
-			fResult.delete(0, fResult.length());
-			fCodeMap.clear();			
-		}
-		return retval;
-	}
-
-	private boolean compilerSupportsParameterizedTypes() {
-		if (fDocument != null) {
-			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-			IPath location = TaglibController.getLocation(fDocument);
-			if (location != null && location.segmentCount() > 0) {
-				IJavaProject project = JavaCore.create(root.getProject(location.segment(0)));
-				String compliance = project.getOption(JavaCore.COMPILER_SOURCE, true);
-				try {
-					return Float.parseFloat(compliance) >= 1.5;
-				}
-				catch (NumberFormatException e) {
-					return false;
-				}
-			}
-		}
-		return false;
-	}
-	
-	/**
-	 * Generically generate an operator node.
-	 * 
-	 * @param node
-	 * @param data
-	 */
-	private void generateOperatorNode(ASTOperatorExpression node, Object data) {
-		for(int i = 0; i < node.children.length; i++) {
-			node.children[i].jjtAccept(this, data);
-			if( node.children.length - i > 1) {
-				appendOperator((Token)node.getOperatorTokens().get(i));
-			}
-		}
-	}
-	
-	/**
-	 * Append an operator to the output stream after translation (if any)
-	 * 
-	 * @param token
-	 * @return
-	 */
-	private String appendOperator(Token token) {
-		String tokenImage = token.image.trim();
-		String translated = (String)fOperatorMap.get(tokenImage);
-		if(null != translated) {
-			append(translated, token);
-		} else {
-			append(token);
-		}
-		return(translated);
-	}
-
-	/**
-	 * Handle or Expression
-	 */
-	public Object visit(ASTOrExpression node, Object data) {
-		generateOperatorNode(node, data);
-		return(null);
-	}
-
-
-	/**
-	 * Handle and expression 
-	 */
-	public Object visit(ASTAndExpression node, Object data) {
-		generateOperatorNode(node, data);
-		return(null);
-	}
-
-
-	/**
-	 * Handle equality
-	 */
-	public Object visit(ASTEqualityExpression node, Object data) {
-		generateOperatorNode(node, data);
-		return(null);
-	}
-
-
-	/**
-	 * Handle Relational
-	 */
-	public Object visit(ASTRelationalExpression node, Object data) {
-		generateOperatorNode(node, data);
-		return(null);
-	}
-
-
-	/**
-	 * Handle addition
-	 */
-	public Object visit(ASTAddExpression node, Object data) {
-		generateOperatorNode(node, data);
-		return(null);
-	}
-
-
-	/**
-	 * Handle multiply
-	 */
-	public Object visit(ASTMultiplyExpression node, Object data) {
-		generateOperatorNode(node, data);
-		return(null);
-	}
-
-
-	/** 
-	 * Choice Expression (ternary operator)
-	 */
-	public Object visit(ASTChoiceExpression node, Object data) {
-		node.children[0].jjtAccept(this, data);
-		append("?"); //$NON-NLS-1$
-		node.children[1].jjtAccept(this, data);
-		append(":"); //$NON-NLS-1$
-		node.children[2].jjtAccept(this,data);
-		return null;
-	}
-
-
-	/**
-	 * Handle unary
-	 */
-	public Object visit(ASTUnaryExpression node, Object data) {
-		if(JSPELParserConstants.EMPTY == node.firstToken.kind) {
-			append("((null == "); //$NON-NLS-1$
-			node.childrenAccept(this, data);
-			append(") || ("); //$NON-NLS-1$
-			node.childrenAccept(this, data);
-			append(").isEmpty())"); //$NON-NLS-1$
-		} else if(JSPELParserConstants.NOT1 == node.firstToken.kind || JSPELParserConstants.NOT2 == node.firstToken.kind) {
-			append("(!"); //$NON-NLS-1$
-			node.childrenAccept(this, data);
-			append(")"); //$NON-NLS-1$
-		} else if(JSPELParserConstants.MINUS == node.firstToken.kind) {
-			append("(-"); //$NON-NLS-1$
-			node.childrenAccept(this, data);
-			append(")"); //$NON-NLS-1$
-		} else {
-			node.childrenAccept(this, data);
-		}
-		return null;
-	}
-
-
-	/**
-	 * Value node
-	 */
-	public Object visit(ASTValue node, Object data) {
-		if(node.jjtGetNumChildren() >= 2) {
-			if(node.jjtGetChild(0) instanceof ASTValuePrefix && node.jjtGetChild(1) instanceof ASTValueSuffix) {
-				ASTValuePrefix prefix = (ASTValuePrefix) node.jjtGetChild(0);
-				ASTValueSuffix suffix = (ASTValueSuffix) node.jjtGetChild(1);
-				if(prefix.firstToken.image.equals("pageContext") && suffix.getPropertyNameToken().image.equals("request")) {
-					append("((HTTPServletRequest)");
-				}
-			}
-		}
-		return node.childrenAccept(this, data);	
-	}
-
-
-	/**
-	 * Value Prefix
-	 */
-	public Object visit(ASTValuePrefix node, Object data) {
-		// this is a raw identifier.  May sure it's an implicit object.
-		// This is the primary plae where modification is needed to 
-		// support JSF backing beans.
-		if(null == node.children) {
-			if(isCompletingObject(node.firstToken.image)) {
-				append(node.firstToken);
-			} else {
-				fCanGenerate = false;
-			}
-			return(null);
-		}
-		return node.childrenAccept(this, data);
-	}
-
-
-	/**
-	 * Function for testing implicit objects.
-	 * 
-	 * @param image
-	 * @return
-	 */
-	private boolean isCompletingObject(String image) {
-		Boolean value = (Boolean)fJSPImplicitObjectMap.get(image);
-		return null == value ? false : value.booleanValue();
-	}
-
-	/**
-	 * Value suffix
-	 */
-	public Object visit(ASTValueSuffix node, Object data) {
-		if(JSPELParserConstants.LBRACKET == node.firstToken.kind) {
-			fCanGenerate = false;
-		} else if(null != node.getPropertyNameToken()) {
-			Token suffix = node.getPropertyNameToken();
-			String ucaseName = suffix.image.substring(0, 1).toUpperCase() + suffix.image.substring(1, suffix.image.length()); 
-
-			// This is a special case.  Note that the type system, no matter how much type information
-			// we would have wouldn't give us the correct result.  We're looking for "pageContext.request" 
-			// here and will add a downcast to (HTTPServletRequest)
-			
-			append(node.firstToken);
-			append("get" + ucaseName + "()", suffix); //$NON-NLS-1$ //$NON-NLS-2$
-			
-			SimpleNode parent = (SimpleNode) node.jjtGetParent();
-			if(suffix.image.equals("request") && parent instanceof ASTValue && //$NON-NLS-1$
-					parent.jjtGetParent() instanceof ASTUnaryExpression && parent.firstToken.image.equals("pageContext")) { //$NON-NLS-1$
-				append(")");
-			} 
-
-
-		} else {
-			append(node.firstToken);
-		}
-		return null;
-	}
-
-
-	/**
-	 * Function invocation
-	 */
-	public Object visit(ASTFunctionInvocation node, Object data) {
-		String functionTranslation = genFunction(node.getFullFunctionName());
-		if(null != functionTranslation)
-		{
-			append(functionTranslation + "(", node.getFirstToken()); //$NON-NLS-1$
-			for(int i = 0; i < node.children.length; i++) {
-				node.children[i].jjtAccept(this, data);
-				if( node.children.length - i > 1){
-					append(","); //$NON-NLS-1$
-				}
-			}
-			append(")"); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	/**
-	 * Literal
-	 */
-	public Object visit(ASTLiteral node, Object data) {
-		// TODO any further translation needed?
-		append(node.firstToken);
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/FindFunctionInvocationVisitor.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/FindFunctionInvocationVisitor.java
deleted file mode 100644
index e05c562..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/FindFunctionInvocationVisitor.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class FindFunctionInvocationVisitor implements JSPELParserVisitor {
-	protected int fCursorPosition;
-	
-	public FindFunctionInvocationVisitor(int cursorPosition)
-	{
-		fCursorPosition = cursorPosition;
-	}
-	
-	protected boolean isEnclosing(SimpleNode node) {
-		return(node.firstToken.beginColumn < fCursorPosition && node.lastToken.endColumn >= fCursorPosition);
-	}
-
-	
-	protected Object visitEnclosingChild(SimpleNode node, Object data)	{
-		if(null == node.children)
-			return null;
-		
-		for(int i = 0; i < node.children.length; i++) {
-			if(isEnclosing(node)) 
-				return node.children[i].jjtAccept(this, data);
-		}
-		return null;
-	}
-
-	public Object visit(SimpleNode node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTOrExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTAndExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTEqualityExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTRelationalExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTAddExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTMultiplyExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTChoiceExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTUnaryExpression node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTValue node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTValuePrefix node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTValueSuffix node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-
-	public Object visit(ASTFunctionInvocation node, Object data) {
-		Object nestedInvocation = visitEnclosingChild(node, data);
-		if(null != nestedInvocation)
-			return nestedInvocation;
-		return node;
-	}
-
-	public Object visit(ASTLiteral node, Object data) {
-		return visitEnclosingChild(node, data);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JJTJSPELParserState.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JJTJSPELParserState.java
deleted file mode 100644
index 6e7436c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JJTJSPELParserState.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. JJTJSPELParserState.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-class JJTJSPELParserState {
-  private java.util.Stack nodes;
-  private java.util.Stack marks;
-
-  private int sp;		// number of nodes on stack
-  private int mk;		// current mark
-  private boolean node_created;
-
-  JJTJSPELParserState() {
-    nodes = new java.util.Stack();
-    marks = new java.util.Stack();
-    sp = 0;
-    mk = 0;
-  }
-
-  /* Determines whether the current node was actually closed and
-     pushed.  This should only be called in the final user action of a
-     node scope.  */
-  boolean nodeCreated() {
-    return node_created;
-  }
-
-  /* Call this to reinitialize the node stack.  It is called
-     automatically by the parser's ReInit() method. */
-  void reset() {
-    nodes.removeAllElements();
-    marks.removeAllElements();
-    sp = 0;
-    mk = 0;
-  }
-
-  /* Returns the root node of the AST.  It only makes sense to call
-     this after a successful parse. */
-  Node rootNode() {
-    return (Node)nodes.elementAt(0);
-  }
-
-  /* Pushes a node on to the stack. */
-  void pushNode(Node n) {
-    nodes.push(n);
-    ++sp;
-  }
-
-  /* Returns the node on the top of the stack, and remove it from the
-     stack.  */
-  Node popNode() {
-    if (--sp < mk) {
-      mk = ((Integer)marks.pop()).intValue();
-    }
-    return (Node)nodes.pop();
-  }
-
-  /* Returns the node currently on the top of the stack. */
-  Node peekNode() {
-    return (Node)nodes.peek();
-  }
-
-  /* Returns the number of children on the stack in the current node
-     scope. */
-  int nodeArity() {
-    return sp - mk;
-  }
-
-
-  void clearNodeScope(Node n) {
-    while (sp > mk) {
-      popNode();
-    }
-    mk = ((Integer)marks.pop()).intValue();
-  }
-
-
-  void openNodeScope(Node n) {
-    marks.push(new Integer(mk));
-    mk = sp;
-    n.jjtOpen();
-  }
-
-
-  /* A definite node is constructed from a specified number of
-     children.  That number of nodes are popped from the stack and
-     made the children of the definite node.  Then the definite node
-     is pushed on to the stack. */
-  void closeNodeScope(Node n, int num) {
-    mk = ((Integer)marks.pop()).intValue();
-    while (num-- > 0) {
-      Node c = popNode();
-      c.jjtSetParent(n);
-      n.jjtAddChild(c, num);
-    }
-    n.jjtClose();
-    pushNode(n);
-    node_created = true;
-  }
-
-
-  /* A conditional node is constructed if its condition is true.  All
-     the nodes that have been pushed since the node was opened are
-     made children of the the conditional node, which is then pushed
-     on to the stack.  If the condition is false the node is not
-     constructed and they are left on the stack. */
-  void closeNodeScope(Node n, boolean condition) {
-    if (condition) {
-      int a = nodeArity();
-      mk = ((Integer)marks.pop()).intValue();
-      while (a-- > 0) {
-	Node c = popNode();
-	c.jjtSetParent(n);
-	n.jjtAddChild(c, a);
-      }
-      n.jjtClose();
-      pushNode(n);
-      node_created = true;
-    } else {
-      mk = ((Integer)marks.pop()).intValue();
-      node_created = false;
-    }
-  }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jj b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jj
deleted file mode 100644
index 0e383b4..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jj
+++ /dev/null
@@ -1,675 +0,0 @@
-*******************************************************************************

- * Copyright (c) 2005 BEA Systems and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     BEA Systems - initial implementation

- *     

- *******************************************************************************/

-/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. JSPEL.jj */

-/*@egen*//* I know that haing some of these options on one line is rude but 

- * if we don't do that the line number reported from javacc are off

- * which, trust me, is far more annoying.  --tcarroll@bea.com

- */

-options {

-  JAVA_UNICODE_ESCAPE = false;

-  UNICODE_INPUT = true;

-  STATIC = false;

-  OPTIMIZE_TOKEN_MANAGER = true;                                                                                                                     

-}

-

-PARSER_BEGIN(JSPELParser)

-

-package org.eclipse.jst.jsp.core.internal.java.jspel;

-

-public class JSPELParser/*@bgen(jjtree)*/implements JSPELParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/

-  protected JJTJSPELParserState jjtree = new JJTJSPELParserState();

-

-/*@egen*/

-  

-  void jjtreeOpenNodeScope(Node n)

-  {

-          ((SimpleNode)n).setFirstToken(getToken(1));

-  }

-

-  void jjtreeCloseNodeScope(Node n)

-  {

-    ((SimpleNode)n).setLastToken(getToken(0));

-  }

-  

-  public static JSPELParser createParser(java.lang.String input) {

-          java.io.StringReader reader = new java.io.StringReader(input);

-          return new JSPELParser(reader);

-  }

-  

-  public void ReInit(java.lang.String input) {

-           java.io.StringReader reader = new java.io.StringReader(input);

-           ReInit(reader);

-  }

-  

-}

-

-PARSER_END(JSPELParser)

-

-SKIP :

-{

-  " "

-| "\t"

-| "\n"

-| "\r"

-}

-

-TOKEN :

-{

-/* Literals */

-  < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* >

-|

-  < FLOATING_POINT_LITERAL:

-        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)?

-      | "." (["0"-"9"])+ (<EXPONENT>)?

-      | (["0"-"9"])+ <EXPONENT>

-  >

-|

-  < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >

-|

-  < STRING_LITERAL:

-      ("\"" ((~["\"","\\"]) | ("\\" ( ["\\","\""] )))* "\"") |

-      ("\'" ((~["\'","\\"]) | ("\\" ( ["\\","\'"] )))* "\'")

-  >

-|

-  < BADLY_ESCAPED_STRING_LITERAL:

-      ("\"" (~["\"","\\"])* ("\\" ( ~["\\","\""] ))) |

-      ("\'" (~["\'","\\"])* ("\\" ( ~["\\","\'"] )))

-  >

-

-/* Reserved Words and Symbols */

-| < TRUE: "true" >

-| < FALSE: "false" >

-| < NULL: "null" >

-| < DOT: "." >

-| < GT1: ">" >

-| < GT2: "gt" >

-| < LT1: "<" >

-| < LT2: "lt" >

-| < EQ1: "==" >

-| < EQ2: "eq" >

-| < LE1: "<=" >

-| < LE2: "le" >

-| < GE1: ">=" >

-| < GE2: "ge" >

-| < NEQ1: "!=" >

-| < NEQ2: "ne" >

-| < LPAREN: "(" >

-| < RPAREN: ")" >

-| < COMMA: "," >

-| < COLON: ":" >

-| < LBRACKET: "[" >

-| < RBRACKET: "]" >

-| < PLUS: "+" >

-| < MINUS: "-" >

-| < MULTIPLY: "*" >

-| < DIVIDE1: "/" >

-| < DIVIDE2: "div" >

-| < MODULUS1: "%" >

-| < MODULUS2: "mod" >

-| < NOT1: "not" >

-| < NOT2: "!" >

-| < AND1: "and" >

-| < AND2: "&&" >

-| < OR1: "or" >

-| < OR2: "||" >

-| < EMPTY: "empty" >

-| < COND: "?" >

-

-/* Identifiers */

-

-| < IDENTIFIER: (<LETTER>|<IMPL_OBJ_START>) (<LETTER>|<DIGIT>)* >

-| < #IMPL_OBJ_START: "#" >

-|

-  < #LETTER:

-      [

-       "$",

-       "A"-"Z",

-       "_",

-       "a"-"z",

-       "\u00c0"-"\u00d6",

-       "\u00d8"-"\u00f6",

-       "\u00f8"-"\u00ff",

-       "\u0100"-"\u1fff",

-       "\u3040"-"\u318f",

-       "\u3300"-"\u337f",

-       "\u3400"-"\u3d2d",

-       "\u4e00"-"\u9fff",

-       "\uf900"-"\ufaff"

-      ]

-  >

-|

-  < #DIGIT:

-      [

-       "0"-"9",

-       "\u0660"-"\u0669",

-       "\u06f0"-"\u06f9",

-       "\u0966"-"\u096f",

-       "\u09e6"-"\u09ef",

-       "\u0a66"-"\u0a6f",

-       "\u0ae6"-"\u0aef",

-       "\u0b66"-"\u0b6f",

-       "\u0be7"-"\u0bef",

-       "\u0c66"-"\u0c6f",

-       "\u0ce6"-"\u0cef",

-       "\u0d66"-"\u0d6f",

-       "\u0e50"-"\u0e59",

-       "\u0ed0"-"\u0ed9",

-       "\u1040"-"\u1049"

-      ]

-  >

-}

-

-ASTExpression Expression() : {/*@bgen(jjtree) Expression */

-  ASTExpression jjtn000 = new ASTExpression(JJTEXPRESSION);

-  boolean jjtc000 = true;

-  jjtree.openNodeScope(jjtn000);

-  jjtreeOpenNodeScope(jjtn000);

-/*@egen*/}

-{/*@bgen(jjtree) Expression */

-        try {

-/*@egen*/

-        (LOOKAHEAD("?") ChoiceExpression() | OrExpression())/*@bgen(jjtree)*/

-                                                             {

-                                                               jjtree.closeNodeScope(jjtn000, true);

-                                                               jjtc000 = false;

-                                                               jjtreeCloseNodeScope(jjtn000);

-                                                             }

-/*@egen*/ { return jjtn000; }/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, true);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void OrExpression()                   : 

-{/*@bgen(jjtree) #OrExpression(> 1) */

-        ASTOrExpression jjtn000 = new ASTOrExpression(JJTOREXPRESSION);

-        boolean jjtc000 = true;

-        jjtree.openNodeScope(jjtn000);

-        jjtreeOpenNodeScope(jjtn000);

-/*@egen*/

-        Token t;

-}

-{/*@bgen(jjtree) #OrExpression(> 1) */

-        try {

-/*@egen*/

-        AndExpression() ((t = <OR1> | t = <OR2>) { jjtn000.addOperatorToken(t); }

-        AndExpression())*/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void AndExpression()                    : 

-{/*@bgen(jjtree) #AndExpression(> 1) */

-        ASTAndExpression jjtn000 = new ASTAndExpression(JJTANDEXPRESSION);

-        boolean jjtc000 = true;

-        jjtree.openNodeScope(jjtn000);

-        jjtreeOpenNodeScope(jjtn000);

-/*@egen*/

-        Token t;

-}

-{/*@bgen(jjtree) #AndExpression(> 1) */

-        try {

-/*@egen*/

-        EqualityExpression() ((t = <AND1> | t = <AND2>) { jjtn000.addOperatorToken(t); }

-        EqualityExpression())*/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/        

-}

-

-void EqualityExpression()                         : 

-{/*@bgen(jjtree) #EqualityExpression(> 1) */

-        ASTEqualityExpression jjtn000 = new ASTEqualityExpression(JJTEQUALITYEXPRESSION);

-        boolean jjtc000 = true;

-        jjtree.openNodeScope(jjtn000);

-        jjtreeOpenNodeScope(jjtn000);

-/*@egen*/

-        Token t;

-}

-{/*@bgen(jjtree) #EqualityExpression(> 1) */

-        try {

-/*@egen*/

-        RelationalExpression() 

-        ((t = <EQ1> | t = <EQ2> | t = <NEQ1> | t = <NEQ2>) { jjtn000.addOperatorToken(t); }

-        RelationalExpression())*/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void RelationalExpression()                           :

-{/*@bgen(jjtree) #RelationalExpression(> 1) */

-        ASTRelationalExpression jjtn000 = new ASTRelationalExpression(JJTRELATIONALEXPRESSION);

-        boolean jjtc000 = true;

-        jjtree.openNodeScope(jjtn000);

-        jjtreeOpenNodeScope(jjtn000);

-/*@egen*/

-        Token t;

-}

-{/*@bgen(jjtree) #RelationalExpression(> 1) */

-        try {

-/*@egen*/

-        AddExpression() 

-        (

-                (t = <LT1> | t = <LT2> | t = <GT1> | t = <GT2> | t = <GE1> | t = <GE2> | t = <LE1> | t = <LE2>)  { jjtn000.addOperatorToken(t); }

-                AddExpression()

-        )*/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void AddExpression()                    : 

-{/*@bgen(jjtree) #AddExpression(> 1) */

-        ASTAddExpression jjtn000 = new ASTAddExpression(JJTADDEXPRESSION);

-        boolean jjtc000 = true;

-        jjtree.openNodeScope(jjtn000);

-        jjtreeOpenNodeScope(jjtn000);

-/*@egen*/

-        Token t;

-}

-{/*@bgen(jjtree) #AddExpression(> 1) */

-        try {

-/*@egen*/

-        MultiplyExpression() ((t = <PLUS> | t = <MINUS>) { jjtn000.addOperatorToken(t); }

-        MultiplyExpression())*/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void MultiplyExpression()                         : 

-{/*@bgen(jjtree) #MultiplyExpression(> 1) */

-        ASTMultiplyExpression jjtn000 = new ASTMultiplyExpression(JJTMULTIPLYEXPRESSION);

-        boolean jjtc000 = true;

-        jjtree.openNodeScope(jjtn000);

-        jjtreeOpenNodeScope(jjtn000);

-/*@egen*/

-        Token t;

-}

-{/*@bgen(jjtree) #MultiplyExpression(> 1) */

-        try {

-/*@egen*/

-        UnaryExpression() (

-                ( t = <MULTIPLY> | t = <DIVIDE1> | t = <DIVIDE2> | t = <MODULUS1> | t = <MODULUS2>) { jjtn000.addOperatorToken(t); }

-                UnaryExpression()        

-        )*/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void ChoiceExpression() : {/*@bgen(jjtree) ChoiceExpression */

-  ASTChoiceExpression jjtn000 = new ASTChoiceExpression(JJTCHOICEEXPRESSION);

-  boolean jjtc000 = true;

-  jjtree.openNodeScope(jjtn000);

-  jjtreeOpenNodeScope(jjtn000);

-/*@egen*/}

-{/*@bgen(jjtree) ChoiceExpression */

-        try {

-/*@egen*/

-        OrExpression() <COND> OrExpression() <COLON> OrExpression()/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, true);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void UnaryExpression() : {/*@bgen(jjtree) UnaryExpression */

-  ASTUnaryExpression jjtn000 = new ASTUnaryExpression(JJTUNARYEXPRESSION);

-  boolean jjtc000 = true;

-  jjtree.openNodeScope(jjtn000);

-  jjtreeOpenNodeScope(jjtn000);

-/*@egen*/}

-{/*@bgen(jjtree) UnaryExpression */

-        try {

-/*@egen*/

-        ((<NOT1> | <NOT2> | <MINUS> | <EMPTY>) UnaryExpression())

-        | Value()/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, true);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-        

-}

-

-void Value() : {/*@bgen(jjtree) Value */

-  ASTValue jjtn000 = new ASTValue(JJTVALUE);

-  boolean jjtc000 = true;

-  jjtree.openNodeScope(jjtn000);

-  jjtreeOpenNodeScope(jjtn000);

-/*@egen*/}

-{/*@bgen(jjtree) Value */

-        try {

-/*@egen*/

-        ValuePrefix() (ValueSuffix())*/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, true);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void ValuePrefix() : {/*@bgen(jjtree) ValuePrefix */

-  ASTValuePrefix jjtn000 = new ASTValuePrefix(JJTVALUEPREFIX);

-  boolean jjtc000 = true;

-  jjtree.openNodeScope(jjtn000);

-  jjtreeOpenNodeScope(jjtn000);

-/*@egen*/}

-{/*@bgen(jjtree) ValuePrefix */

-    try {

-/*@egen*/

-    Literal() | (<LPAREN> Expression() <RPAREN>) | LOOKAHEAD(3) FunctionInvocation() | <IDENTIFIER>/*@bgen(jjtree)*/

-    } catch (Throwable jjte000) {

-      if (jjtc000) {

-        jjtree.clearNodeScope(jjtn000);

-        jjtc000 = false;

-      } else {

-        jjtree.popNode();

-      }

-      if (jjte000 instanceof RuntimeException) {

-        throw (RuntimeException)jjte000;

-      }

-      if (jjte000 instanceof ParseException) {

-        throw (ParseException)jjte000;

-      }

-      throw (Error)jjte000;

-    } finally {

-      if (jjtc000) {

-        jjtree.closeNodeScope(jjtn000, true);

-        jjtreeCloseNodeScope(jjtn000);

-      }

-    }

-/*@egen*/ 

-}

-

-void ValueSuffix() : 

-{/*@bgen(jjtree) ValueSuffix */

-        ASTValueSuffix jjtn000 = new ASTValueSuffix(JJTVALUESUFFIX);

-        boolean jjtc000 = true;

-        jjtree.openNodeScope(jjtn000);

-        jjtreeOpenNodeScope(jjtn000);

-/*@egen*/

-        Token t = null;

-}

-{/*@bgen(jjtree) ValueSuffix */

-        try {

-/*@egen*/

-        (<DOT> (t = <IDENTIFIER>)?)/*@bgen(jjtree)*/

-                                    {

-                                      jjtree.closeNodeScope(jjtn000, true);

-                                      jjtc000 = false;

-                                      jjtreeCloseNodeScope(jjtn000);

-                                    }

-/*@egen*/ { jjtn000.setPropertyNameToken(t); }

-        | (<LBRACKET> Expression() <RBRACKET>)/*@bgen(jjtree)*/

-        } catch (Throwable jjte000) {

-          if (jjtc000) {

-            jjtree.clearNodeScope(jjtn000);

-            jjtc000 = false;

-          } else {

-            jjtree.popNode();

-          }

-          if (jjte000 instanceof RuntimeException) {

-            throw (RuntimeException)jjte000;

-          }

-          if (jjte000 instanceof ParseException) {

-            throw (ParseException)jjte000;

-          }

-          throw (Error)jjte000;

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, true);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

-

-void FunctionInvocation() : 

-{/*@bgen(jjtree) FunctionInvocation */

-        ASTFunctionInvocation jjtn000 = new ASTFunctionInvocation(JJTFUNCTIONINVOCATION);

-        boolean jjtc000 = true;

-        jjtree.openNodeScope(jjtn000);

-        jjtreeOpenNodeScope(jjtn000);

-/*@egen*/

-        Token prefix = null, name = null;

-}

-{/*@bgen(jjtree) FunctionInvocation */

-    try {

-/*@egen*/

-    (prefix = <IDENTIFIER> <COLON>) { jjtn000.setFullFunctionName(prefix.image + ":"); }

-        (name = <IDENTIFIER>)? {

-            if(null != prefix && null != name)

-                    jjtn000.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));

-            else if(null != name)

-                    jjtn000.setFullFunctionName(name.image);

-        }

-        (<LPAREN> Expression() (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )?/*@bgen(jjtree)*/

-    } catch (Throwable jjte000) {

-      if (jjtc000) {

-        jjtree.clearNodeScope(jjtn000);

-        jjtc000 = false;

-      } else {

-        jjtree.popNode();

-      }

-      if (jjte000 instanceof RuntimeException) {

-        throw (RuntimeException)jjte000;

-      }

-      if (jjte000 instanceof ParseException) {

-        throw (ParseException)jjte000;

-      }

-      throw (Error)jjte000;

-    } finally {

-      if (jjtc000) {

-        jjtree.closeNodeScope(jjtn000, true);

-        jjtreeCloseNodeScope(jjtn000);

-      }

-    }

-/*@egen*/

-}

-

-void Literal() : {/*@bgen(jjtree) Literal */

-  ASTLiteral jjtn000 = new ASTLiteral(JJTLITERAL);

-  boolean jjtc000 = true;

-  jjtree.openNodeScope(jjtn000);

-  jjtreeOpenNodeScope(jjtn000);

-/*@egen*/}

-{/*@bgen(jjtree) Literal */

-        try {

-/*@egen*/

-        <TRUE> | <FALSE> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <STRING_LITERAL> | <NULL>/*@bgen(jjtree)*/

-        } finally {

-          if (jjtc000) {

-            jjtree.closeNodeScope(jjtn000, true);

-            jjtreeCloseNodeScope(jjtn000);

-          }

-        }

-/*@egen*/

-}

diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jjt b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jjt
deleted file mode 100644
index 9fd40d9..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPEL.jjt
+++ /dev/null
@@ -1,281 +0,0 @@
-*******************************************************************************

- * Copyright (c) 2005 BEA Systems and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     BEA Systems - initial implementation

- *     

- *******************************************************************************/

-/* I know that having some of these options on one line is rude but 

- * if we don't do that the line number reported from javacc are off

- * which, trust me, is far more annoying.  --tcarroll@bea.com

- */

-options {

-  JAVA_UNICODE_ESCAPE = false;

-  UNICODE_INPUT = true;

-  STATIC = false;

-  OPTIMIZE_TOKEN_MANAGER = true; MULTI = true; VISITOR = true; NODE_PACKAGE = "org.eclipse.jst.jsp.core.internal.java.jspel"; NODE_SCOPE_HOOK = true;

-}

-

-PARSER_BEGIN(JSPELParser)

-

-package org.eclipse.jst.jsp.core.internal.java.jspel;

-

-public class JSPELParser {

-  

-  void jjtreeOpenNodeScope(Node n)

-  {

-          ((SimpleNode)n).setFirstToken(getToken(1));

-  }

-

-  void jjtreeCloseNodeScope(Node n)

-  {

-    ((SimpleNode)n).setLastToken(getToken(0));

-  }

-  

-  public static JSPELParser createParser(java.lang.String input) {

-          java.io.StringReader reader = new java.io.StringReader(input);

-          return new JSPELParser(reader);

-  }

-  

-  public void ReInit(java.lang.String input) {

-           java.io.StringReader reader = new java.io.StringReader(input);

-           ReInit(reader);

-  }

-  

-}

-

-PARSER_END(JSPELParser)

-

-SKIP :

-{

-  " "

-| "\t"

-| "\n"

-| "\r"

-}

-

-TOKEN :

-{

-/* Literals */

-  < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* >

-|

-  < FLOATING_POINT_LITERAL:

-        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)?

-      | "." (["0"-"9"])+ (<EXPONENT>)?

-      | (["0"-"9"])+ <EXPONENT>

-  >

-|

-  < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >

-|

-  < STRING_LITERAL:

-      ("\"" ((~["\"","\\"]) | ("\\" ( ["\\","\""] )))* "\"") |

-      ("\'" ((~["\'","\\"]) | ("\\" ( ["\\","\'"] )))* "\'")

-  >

-|

-  < BADLY_ESCAPED_STRING_LITERAL:

-      ("\"" (~["\"","\\"])* ("\\" ( ~["\\","\""] ))) |

-      ("\'" (~["\'","\\"])* ("\\" ( ~["\\","\'"] )))

-  >

-

-/* Reserved Words and Symbols */

-| < TRUE: "true" >

-| < FALSE: "false" >

-| < NULL: "null" >

-| < DOT: "." >

-| < GT1: ">" >

-| < GT2: "gt" >

-| < LT1: "<" >

-| < LT2: "lt" >

-| < EQ1: "==" >

-| < EQ2: "eq" >

-| < LE1: "<=" >

-| < LE2: "le" >

-| < GE1: ">=" >

-| < GE2: "ge" >

-| < NEQ1: "!=" >

-| < NEQ2: "ne" >

-| < LPAREN: "(" >

-| < RPAREN: ")" >

-| < COMMA: "," >

-| < COLON: ":" >

-| < LBRACKET: "[" >

-| < RBRACKET: "]" >

-| < PLUS: "+" >

-| < MINUS: "-" >

-| < MULTIPLY: "*" >

-| < DIVIDE1: "/" >

-| < DIVIDE2: "div" >

-| < MODULUS1: "%" >

-| < MODULUS2: "mod" >

-| < NOT1: "not" >

-| < NOT2: "!" >

-| < AND1: "and" >

-| < AND2: "&&" >

-| < OR1: "or" >

-| < OR2: "||" >

-| < EMPTY: "empty" >

-| < COND: "?" >

-

-/* Identifiers */

-

-| < IDENTIFIER: (<LETTER>|<IMPL_OBJ_START>) (<LETTER>|<DIGIT>)* >

-| < #IMPL_OBJ_START: "#" >

-|

-  < #LETTER:

-      [

-       "\u0024",

-       "\u0041"-"\u005a",

-       "\u005f",

-       "\u0061"-"\u007a",

-       "\u00c0"-"\u00d6",

-       "\u00d8"-"\u00f6",

-       "\u00f8"-"\u00ff",

-       "\u0100"-"\u1fff",

-       "\u3040"-"\u318f",

-       "\u3300"-"\u337f",

-       "\u3400"-"\u3d2d",

-       "\u4e00"-"\u9fff",

-       "\uf900"-"\ufaff"

-      ]

-  >

-|

-  < #DIGIT:

-      [

-       "\u0030"-"\u0039",

-       "\u0660"-"\u0669",

-       "\u06f0"-"\u06f9",

-       "\u0966"-"\u096f",

-       "\u09e6"-"\u09ef",

-       "\u0a66"-"\u0a6f",

-       "\u0ae6"-"\u0aef",

-       "\u0b66"-"\u0b6f",

-       "\u0be7"-"\u0bef",

-       "\u0c66"-"\u0c6f",

-       "\u0ce6"-"\u0cef",

-       "\u0d66"-"\u0d6f",

-       "\u0e50"-"\u0e59",

-       "\u0ed0"-"\u0ed9",

-       "\u1040"-"\u1049"

-      ]

-  >

-}

-

-ASTExpression Expression() : {}

-{

-        (LOOKAHEAD("?") ChoiceExpression() | OrExpression()) { return jjtThis; }

-}

-

-void OrExpression() #OrExpression(>1) : 

-{

-        Token t;

-}

-{

-        AndExpression() ((t = <OR1> | t = <OR2>) { jjtThis.addOperatorToken(t); }

-        AndExpression())*

-}

-

-void AndExpression() #AndExpression(>1) : 

-{

-        Token t;

-}

-{

-        EqualityExpression() ((t = <AND1> | t = <AND2>) { jjtThis.addOperatorToken(t); }

-        EqualityExpression())*        

-}

-

-void EqualityExpression() #EqualityExpression(>1) : 

-{

-        Token t;

-}

-{

-        RelationalExpression() 

-        ((t = <EQ1> | t = <EQ2> | t = <NEQ1> | t = <NEQ2>) { jjtThis.addOperatorToken(t); }

-        RelationalExpression())*

-}

-

-void RelationalExpression() #RelationalExpression(>1) :

-{

-        Token t;

-}

-{

-        AddExpression() 

-        (

-                (t = <LT1> | t = <LT2> | t = <GT1> | t = <GT2> | t = <GE1> | t = <GE2> | t = <LE1> | t = <LE2>)  { jjtThis.addOperatorToken(t); }

-                AddExpression()

-        )*

-}

-

-void AddExpression() #AddExpression(>1) : 

-{

-        Token t;

-}

-{

-        MultiplyExpression() ((t = <PLUS> | t = <MINUS>) { jjtThis.addOperatorToken(t); }

-        MultiplyExpression())*

-}

-

-void MultiplyExpression() #MultiplyExpression(>1) : 

-{

-        Token t;

-}

-{

-        UnaryExpression() (

-                ( t = <MULTIPLY> | t = <DIVIDE1> | t = <DIVIDE2> | t = <MODULUS1> | t = <MODULUS2>) { jjtThis.addOperatorToken(t); }

-                UnaryExpression()        

-        )*

-}

-

-void ChoiceExpression() : {}

-{

-        OrExpression() <COND> OrExpression() <COLON> OrExpression()

-}

-

-void UnaryExpression() : {}

-{

-        ((<NOT1> | <NOT2> | <MINUS> | <EMPTY>) UnaryExpression())

-        | Value()

-        

-}

-

-void Value() : {}

-{

-        ValuePrefix() (ValueSuffix())*

-}

-

-void ValuePrefix() : {}

-{

-    Literal() | (<LPAREN> Expression() <RPAREN>) | LOOKAHEAD(3) FunctionInvocation() | <IDENTIFIER> 

-}

-

-void ValueSuffix() : 

-{

-        Token t = null;

-}

-{

-        (<DOT> (t = <IDENTIFIER>)?) { jjtThis.setPropertyNameToken(t); }

-        | (<LBRACKET> Expression() <RBRACKET>)

-}

-

-void FunctionInvocation() : 

-{

-        Token prefix = null, name = null;

-}

-{

-    (prefix = <IDENTIFIER> <COLON>) { jjtThis.setFullFunctionName(prefix.image + ":"); }

-        (name = <IDENTIFIER>)? {

-            if(null != prefix && null != name)

-                    jjtThis.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));

-            else if(null != name)

-                    jjtThis.setFullFunctionName(name.image);

-        }

-        (<LPAREN> Expression() (<COMMA> Expression())* try  { (<RPAREN>) } catch (Exception e) {} )?

-}

-

-void Literal() : {}

-{

-        <TRUE> | <FALSE> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <STRING_LITERAL> | <NULL>

-}

diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParser.java
deleted file mode 100644
index 5c01bae..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParser.java
+++ /dev/null
@@ -1,1158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree&JavaCC: Do not edit this line. JSPELParser.java */
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class JSPELParser/*@bgen(jjtree)*/implements JSPELParserTreeConstants, JSPELParserConstants {/*@bgen(jjtree)*/
-  protected JJTJSPELParserState jjtree = new JJTJSPELParserState();
-  void jjtreeOpenNodeScope(Node n)
-  {
-          ((SimpleNode)n).setFirstToken(getToken(1));
-  }
-
-  void jjtreeCloseNodeScope(Node n)
-  {
-    ((SimpleNode)n).setLastToken(getToken(0));
-  }
-
-  public static JSPELParser createParser(java.lang.String input) {
-          java.io.StringReader reader = new java.io.StringReader(input);
-          return new JSPELParser(reader);
-  }
-
-  public void ReInit(java.lang.String input) {
-           java.io.StringReader reader = new java.io.StringReader(input);
-           ReInit(reader);
-  }
-
-  final public ASTExpression Expression() throws ParseException {
-                              /*@bgen(jjtree) Expression */
-  ASTExpression jjtn000 = new ASTExpression(JJTEXPRESSION);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      if (jj_2_1(2147483647)) {
-        ChoiceExpression();
-      } else {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case INTEGER_LITERAL:
-        case FLOATING_POINT_LITERAL:
-        case STRING_LITERAL:
-        case TRUE:
-        case FALSE:
-        case NULL:
-        case LPAREN:
-        case MINUS:
-        case NOT1:
-        case NOT2:
-        case EMPTY:
-        case IDENTIFIER:
-          OrExpression();
-          break;
-        default:
-          jj_la1[0] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-      }
-                                                               jjtree.closeNodeScope(jjtn000, true);
-                                                               jjtc000 = false;
-                                                               jjtreeCloseNodeScope(jjtn000);
-                                                               {if (true) return jjtn000;}
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public void OrExpression() throws ParseException {
- /*@bgen(jjtree) #OrExpression(> 1) */
-        ASTOrExpression jjtn000 = new ASTOrExpression(JJTOREXPRESSION);
-        boolean jjtc000 = true;
-        jjtree.openNodeScope(jjtn000);
-        jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      AndExpression();
-      label_1:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case OR1:
-        case OR2:
-          
-          break;
-        default:
-          jj_la1[1] = jj_gen;
-          break label_1;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case OR1:
-          t = jj_consume_token(OR1);
-          break;
-        case OR2:
-          t = jj_consume_token(OR2);
-          break;
-        default:
-          jj_la1[2] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-                                                   jjtn000.addOperatorToken(t);
-        AndExpression();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void AndExpression() throws ParseException {
- /*@bgen(jjtree) #AndExpression(> 1) */
-        ASTAndExpression jjtn000 = new ASTAndExpression(JJTANDEXPRESSION);
-        boolean jjtc000 = true;
-        jjtree.openNodeScope(jjtn000);
-        jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      EqualityExpression();
-      label_2:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case AND1:
-        case AND2:
-          
-          break;
-        default:
-          jj_la1[3] = jj_gen;
-          break label_2;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case AND1:
-          t = jj_consume_token(AND1);
-          break;
-        case AND2:
-          t = jj_consume_token(AND2);
-          break;
-        default:
-          jj_la1[4] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-                                                          jjtn000.addOperatorToken(t);
-        EqualityExpression();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void EqualityExpression() throws ParseException {
- /*@bgen(jjtree) #EqualityExpression(> 1) */
-        ASTEqualityExpression jjtn000 = new ASTEqualityExpression(JJTEQUALITYEXPRESSION);
-        boolean jjtc000 = true;
-        jjtree.openNodeScope(jjtn000);
-        jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      RelationalExpression();
-      label_3:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case EQ1:
-        case EQ2:
-        case NEQ1:
-        case NEQ2:
-          
-          break;
-        default:
-          jj_la1[5] = jj_gen;
-          break label_3;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case EQ1:
-          t = jj_consume_token(EQ1);
-          break;
-        case EQ2:
-          t = jj_consume_token(EQ2);
-          break;
-        case NEQ1:
-          t = jj_consume_token(NEQ1);
-          break;
-        case NEQ2:
-          t = jj_consume_token(NEQ2);
-          break;
-        default:
-          jj_la1[6] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-                                                             jjtn000.addOperatorToken(t);
-        RelationalExpression();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void RelationalExpression() throws ParseException {
- /*@bgen(jjtree) #RelationalExpression(> 1) */
-        ASTRelationalExpression jjtn000 = new ASTRelationalExpression(JJTRELATIONALEXPRESSION);
-        boolean jjtc000 = true;
-        jjtree.openNodeScope(jjtn000);
-        jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      AddExpression();
-      label_4:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case GT1:
-        case GT2:
-        case LT1:
-        case LT2:
-        case LE1:
-        case LE2:
-        case GE1:
-        case GE2:
-          
-          break;
-        default:
-          jj_la1[7] = jj_gen;
-          break label_4;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case LT1:
-          t = jj_consume_token(LT1);
-          break;
-        case LT2:
-          t = jj_consume_token(LT2);
-          break;
-        case GT1:
-          t = jj_consume_token(GT1);
-          break;
-        case GT2:
-          t = jj_consume_token(GT2);
-          break;
-        case GE1:
-          t = jj_consume_token(GE1);
-          break;
-        case GE2:
-          t = jj_consume_token(GE2);
-          break;
-        case LE1:
-          t = jj_consume_token(LE1);
-          break;
-        case LE2:
-          t = jj_consume_token(LE2);
-          break;
-        default:
-          jj_la1[8] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-                                                                                                                   jjtn000.addOperatorToken(t);
-        AddExpression();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void AddExpression() throws ParseException {
- /*@bgen(jjtree) #AddExpression(> 1) */
-        ASTAddExpression jjtn000 = new ASTAddExpression(JJTADDEXPRESSION);
-        boolean jjtc000 = true;
-        jjtree.openNodeScope(jjtn000);
-        jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      MultiplyExpression();
-      label_5:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case PLUS:
-        case MINUS:
-          
-          break;
-        default:
-          jj_la1[9] = jj_gen;
-          break label_5;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case PLUS:
-          t = jj_consume_token(PLUS);
-          break;
-        case MINUS:
-          t = jj_consume_token(MINUS);
-          break;
-        default:
-          jj_la1[10] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-                                                           jjtn000.addOperatorToken(t);
-        MultiplyExpression();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void MultiplyExpression() throws ParseException {
- /*@bgen(jjtree) #MultiplyExpression(> 1) */
-        ASTMultiplyExpression jjtn000 = new ASTMultiplyExpression(JJTMULTIPLYEXPRESSION);
-        boolean jjtc000 = true;
-        jjtree.openNodeScope(jjtn000);
-        jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      UnaryExpression();
-      label_6:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case MULTIPLY:
-        case DIVIDE1:
-        case DIVIDE2:
-        case MODULUS1:
-        case MODULUS2:
-          
-          break;
-        default:
-          jj_la1[11] = jj_gen;
-          break label_6;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case MULTIPLY:
-          t = jj_consume_token(MULTIPLY);
-          break;
-        case DIVIDE1:
-          t = jj_consume_token(DIVIDE1);
-          break;
-        case DIVIDE2:
-          t = jj_consume_token(DIVIDE2);
-          break;
-        case MODULUS1:
-          t = jj_consume_token(MODULUS1);
-          break;
-        case MODULUS2:
-          t = jj_consume_token(MODULUS2);
-          break;
-        default:
-          jj_la1[12] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-                                                                                                      jjtn000.addOperatorToken(t);
-        UnaryExpression();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void ChoiceExpression() throws ParseException {
-                           /*@bgen(jjtree) ChoiceExpression */
-  ASTChoiceExpression jjtn000 = new ASTChoiceExpression(JJTCHOICEEXPRESSION);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      OrExpression();
-      jj_consume_token(COND);
-      OrExpression();
-      jj_consume_token(COLON);
-      OrExpression();
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void UnaryExpression() throws ParseException {
-                          /*@bgen(jjtree) UnaryExpression */
-  ASTUnaryExpression jjtn000 = new ASTUnaryExpression(JJTUNARYEXPRESSION);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case MINUS:
-      case NOT1:
-      case NOT2:
-      case EMPTY:
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case NOT1:
-          jj_consume_token(NOT1);
-          break;
-        case NOT2:
-          jj_consume_token(NOT2);
-          break;
-        case MINUS:
-          jj_consume_token(MINUS);
-          break;
-        case EMPTY:
-          jj_consume_token(EMPTY);
-          break;
-        default:
-          jj_la1[13] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-        UnaryExpression();
-        break;
-      case INTEGER_LITERAL:
-      case FLOATING_POINT_LITERAL:
-      case STRING_LITERAL:
-      case TRUE:
-      case FALSE:
-      case NULL:
-      case LPAREN:
-      case IDENTIFIER:
-        Value();
-        break;
-      default:
-        jj_la1[14] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void Value() throws ParseException {
-                /*@bgen(jjtree) Value */
-  ASTValue jjtn000 = new ASTValue(JJTVALUE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      ValuePrefix();
-      label_7:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case DOT:
-        case LBRACKET:
-          
-          break;
-        default:
-          jj_la1[15] = jj_gen;
-          break label_7;
-        }
-        ValueSuffix();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void ValuePrefix() throws ParseException {
-                      /*@bgen(jjtree) ValuePrefix */
-  ASTValuePrefix jjtn000 = new ASTValuePrefix(JJTVALUEPREFIX);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case INTEGER_LITERAL:
-      case FLOATING_POINT_LITERAL:
-      case STRING_LITERAL:
-      case TRUE:
-      case FALSE:
-      case NULL:
-        Literal();
-        break;
-      case LPAREN:
-        jj_consume_token(LPAREN);
-        Expression();
-        jj_consume_token(RPAREN);
-        break;
-      default:
-        jj_la1[16] = jj_gen;
-        if (jj_2_2(3)) {
-          FunctionInvocation();
-        } else {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case IDENTIFIER:
-            jj_consume_token(IDENTIFIER);
-            break;
-          default:
-            jj_la1[17] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-        }
-      }
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtreeCloseNodeScope(jjtn000);
-      }
-    }
-  }
-
-  final public void ValueSuffix() throws ParseException {
- /*@bgen(jjtree) ValueSuffix */
-        ASTValueSuffix jjtn000 = new ASTValueSuffix(JJTVALUESUFFIX);
-        boolean jjtc000 = true;
-        jjtree.openNodeScope(jjtn000);
-        jjtreeOpenNodeScope(jjtn000);Token t = null;
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case DOT:
-        jj_consume_token(DOT);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case IDENTIFIER:
-          t = jj_consume_token(IDENTIFIER);
-          break;
-        default:
-          jj_la1[18] = jj_gen;
-          
-        }
-                                      jjtree.closeNodeScope(jjtn000, true);
-                                      jjtc000 = false;
-                                      jjtreeCloseNodeScope(jjtn000);
-                                      jjtn000.setPropertyNameToken(t);
-        break;
-      case LBRACKET:
-        jj_consume_token(LBRACKET);
-        Expression();
-        jj_consume_token(RBRACKET);
-        break;
-      default:
-        jj_la1[19] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void FunctionInvocation() throws ParseException {
- /*@bgen(jjtree) FunctionInvocation */
-        ASTFunctionInvocation jjtn000 = new ASTFunctionInvocation(JJTFUNCTIONINVOCATION);
-        boolean jjtc000 = true;
-        jjtree.openNodeScope(jjtn000);
-        jjtreeOpenNodeScope(jjtn000);Token prefix = null, name = null;
-    try {
-      prefix = jj_consume_token(IDENTIFIER);
-      jj_consume_token(COLON);
-                                      jjtn000.setFullFunctionName(prefix.image + ":");
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case IDENTIFIER:
-        name = jj_consume_token(IDENTIFIER);
-        break;
-      default:
-        jj_la1[20] = jj_gen;
-        
-      }
-            if(null != prefix && null != name)
-                    jjtn000.setFullFunctionName(prefix.image + ":" + (null == name ? "" : name.image));
-            else if(null != name)
-                    jjtn000.setFullFunctionName(name.image);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case LPAREN:
-        jj_consume_token(LPAREN);
-        Expression();
-        label_8:
-        while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case COMMA:
-            
-            break;
-          default:
-            jj_la1[21] = jj_gen;
-            break label_8;
-          }
-          jj_consume_token(COMMA);
-          Expression();
-        }
-        try {
-          jj_consume_token(RPAREN);
-        } catch (Exception e) {
-
-        }
-        break;
-      default:
-        jj_la1[22] = jj_gen;
-        
-      }
-    } catch (Throwable jjte000) {
-      if (jjtc000) {
-        jjtree.clearNodeScope(jjtn000);
-        jjtc000 = false;
-      } else {
-        jjtree.popNode();
-      }
-      if (jjte000 instanceof RuntimeException) {
-        {if (true) throw (RuntimeException)jjte000;}
-      }
-      if (jjte000 instanceof ParseException) {
-        {if (true) throw (ParseException)jjte000;}
-      }
-      {if (true) throw (Error)jjte000;}
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-        jjtreeCloseNodeScope(jjtn000);
-      }
-    }
-  }
-
-  final public void Literal() throws ParseException {
-                  /*@bgen(jjtree) Literal */
-  ASTLiteral jjtn000 = new ASTLiteral(JJTLITERAL);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case TRUE:
-        jj_consume_token(TRUE);
-        break;
-      case FALSE:
-        jj_consume_token(FALSE);
-        break;
-      case INTEGER_LITERAL:
-        jj_consume_token(INTEGER_LITERAL);
-        break;
-      case FLOATING_POINT_LITERAL:
-        jj_consume_token(FLOATING_POINT_LITERAL);
-        break;
-      case STRING_LITERAL:
-        jj_consume_token(STRING_LITERAL);
-        break;
-      case NULL:
-        jj_consume_token(NULL);
-        break;
-      default:
-        jj_la1[23] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final private boolean jj_2_1(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_1(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(0, xla); }
-  }
-
-  final private boolean jj_2_2(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_2(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(1, xla); }
-  }
-
-  final private boolean jj_3R_10() {
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_9() {
-    if (jj_scan_token(IDENTIFIER)) return true;
-    if (jj_scan_token(COLON)) return true;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(47)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_10()) jj_scanpos = xsp;
-    return false;
-  }
-
-  final private boolean jj_3_2() {
-    if (jj_3R_9()) return true;
-    return false;
-  }
-
-  final private boolean jj_3_1() {
-    if (jj_scan_token(COND)) return true;
-    return false;
-  }
-
-  public JSPELParserTokenManager token_source;
-  SimpleCharStream jj_input_stream;
-  public Token token, jj_nt;
-  private int jj_ntk;
-  private Token jj_scanpos, jj_lastpos;
-  private int jj_la;
-  public boolean lookingAhead = false;
-//  private boolean jj_semLA;
-  private int jj_gen;
-  final private int[] jj_la1 = new int[24];
-  static private int[] jj_la1_0;
-  static private int[] jj_la1_1;
-  static {
-      jj_la1_0();
-      jj_la1_1();
-   }
-   private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0x4001d60,0x0,0x0,0x0,0x0,0x30c0000,0x30c0000,0xf3c000,0xf3c000,0x0,0x0,0x0,0x0,0x0,0x4001d60,0x40002000,0x4001d60,0x0,0x0,0x40002000,0x0,0x10000000,0x4000000,0x1d60,};
-   }
-   private static void jj_la1_1() {
-      jj_la1_1 = new int[] {0xa182,0x1800,0x1800,0x600,0x600,0x0,0x0,0x0,0x0,0x3,0x3,0x7c,0x7c,0x2182,0xa182,0x0,0x0,0x8000,0x8000,0x0,0x8000,0x0,0x0,0x0,};
-   }
-  final private JJCalls[] jj_2_rtns = new JJCalls[2];
-  private boolean jj_rescan = false;
-  private int jj_gc = 0;
-
-  public JSPELParser(java.io.InputStream stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new JSPELParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(java.io.InputStream stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public JSPELParser(java.io.Reader stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new JSPELParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public JSPELParser(JSPELParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(JSPELParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 24; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  final private Token jj_consume_token(int kind) throws ParseException {
-    Token oldToken;
-    if ((oldToken = token).next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    if (token.kind == kind) {
-      jj_gen++;
-      if (++jj_gc > 100) {
-        jj_gc = 0;
-        for (int i = 0; i < jj_2_rtns.length; i++) {
-          JJCalls c = jj_2_rtns[i];
-          while (c != null) {
-            if (c.gen < jj_gen) c.first = null;
-            c = c.next;
-          }
-        }
-      }
-      return token;
-    }
-    token = oldToken;
-    jj_kind = kind;
-    throw generateParseException();
-  }
-
-  static private final class LookaheadSuccess extends java.lang.Error { 
-    private static final long serialVersionUID = 1L; 
-  }
-  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
-  final private boolean jj_scan_token(int kind) {
-    if (jj_scanpos == jj_lastpos) {
-      jj_la--;
-      if (jj_scanpos.next == null) {
-        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
-      } else {
-        jj_lastpos = jj_scanpos = jj_scanpos.next;
-      }
-    } else {
-      jj_scanpos = jj_scanpos.next;
-    }
-    if (jj_rescan) {
-      int i = 0; Token tok = token;
-      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
-      if (tok != null) jj_add_error_token(kind, i);
-    }
-    if (jj_scanpos.kind != kind) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
-    return false;
-  }
-
-  final public Token getNextToken() {
-    if (token.next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    jj_gen++;
-    return token;
-  }
-
-  final public Token getToken(int index) {
-    Token t = lookingAhead ? jj_scanpos : token;
-    for (int i = 0; i < index; i++) {
-      if (t.next != null) t = t.next;
-      else t = t.next = token_source.getNextToken();
-    }
-    return t;
-  }
-
-  final private int jj_ntk() {
-    if ((jj_nt=token.next) == null)
-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
-    else
-      return (jj_ntk = jj_nt.kind);
-  }
-
-  private java.util.Vector jj_expentries = new java.util.Vector();
-  private int[] jj_expentry;
-  private int jj_kind = -1;
-  private int[] jj_lasttokens = new int[100];
-  private int jj_endpos;
-
-  private void jj_add_error_token(int kind, int pos) {
-    if (pos >= 100) return;
-    if (pos == jj_endpos + 1) {
-      jj_lasttokens[jj_endpos++] = kind;
-    } else if (jj_endpos != 0) {
-      jj_expentry = new int[jj_endpos];
-      for (int i = 0; i < jj_endpos; i++) {
-        jj_expentry[i] = jj_lasttokens[i];
-      }
-      boolean exists = false;
-      for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
-        int[] oldentry = (int[])(e.nextElement());
-        if (oldentry.length == jj_expentry.length) {
-          exists = true;
-          for (int i = 0; i < jj_expentry.length; i++) {
-            if (oldentry[i] != jj_expentry[i]) {
-              exists = false;
-              break;
-            }
-          }
-          if (exists) break;
-        }
-      }
-      if (!exists) jj_expentries.addElement(jj_expentry);
-      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
-    }
-  }
-
-  public ParseException generateParseException() {
-    jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[51];
-    for (int i = 0; i < 51; i++) {
-      la1tokens[i] = false;
-    }
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 24; i++) {
-      if (jj_la1[i] == jj_gen) {
-        for (int j = 0; j < 32; j++) {
-          if ((jj_la1_0[i] & (1<<j)) != 0) {
-            la1tokens[j] = true;
-          }
-          if ((jj_la1_1[i] & (1<<j)) != 0) {
-            la1tokens[32+j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 51; i++) {
-      if (la1tokens[i]) {
-        jj_expentry = new int[1];
-        jj_expentry[0] = i;
-        jj_expentries.addElement(jj_expentry);
-      }
-    }
-    jj_endpos = 0;
-    jj_rescan_token();
-    jj_add_error_token(0, 0);
-    int[][] exptokseq = new int[jj_expentries.size()][];
-    for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = (int[])jj_expentries.elementAt(i);
-    }
-    return new ParseException(token, exptokseq, tokenImage);
-  }
-
-  final public void enable_tracing() {
-  }
-
-  final public void disable_tracing() {
-  }
-
-  final private void jj_rescan_token() {
-    jj_rescan = true;
-    for (int i = 0; i < 2; i++) {
-      JJCalls p = jj_2_rtns[i];
-      do {
-        if (p.gen > jj_gen) {
-          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
-          switch (i) {
-            case 0: jj_3_1(); break;
-            case 1: jj_3_2(); break;
-          }
-        }
-        p = p.next;
-      } while (p != null);
-    }
-    jj_rescan = false;
-  }
-
-  final private void jj_save(int index, int xla) {
-    JJCalls p = jj_2_rtns[index];
-    while (p.gen > jj_gen) {
-      if (p.next == null) { p = p.next = new JJCalls(); break; }
-      p = p.next;
-    }
-    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
-  }
-
-  static final class JJCalls {
-    int gen;
-    Token first;
-    int arg;
-    JJCalls next;
-  }
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserConstants.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserConstants.java
deleted file mode 100644
index 1f4e3ad..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserConstants.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree&JavaCC: Do not edit this line. JSPELParserConstants.java */
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public interface JSPELParserConstants {
-
-  int EOF = 0;
-  int INTEGER_LITERAL = 5;
-  int FLOATING_POINT_LITERAL = 6;
-  int EXPONENT = 7;
-  int STRING_LITERAL = 8;
-  int BADLY_ESCAPED_STRING_LITERAL = 9;
-  int TRUE = 10;
-  int FALSE = 11;
-  int NULL = 12;
-  int DOT = 13;
-  int GT1 = 14;
-  int GT2 = 15;
-  int LT1 = 16;
-  int LT2 = 17;
-  int EQ1 = 18;
-  int EQ2 = 19;
-  int LE1 = 20;
-  int LE2 = 21;
-  int GE1 = 22;
-  int GE2 = 23;
-  int NEQ1 = 24;
-  int NEQ2 = 25;
-  int LPAREN = 26;
-  int RPAREN = 27;
-  int COMMA = 28;
-  int COLON = 29;
-  int LBRACKET = 30;
-  int RBRACKET = 31;
-  int PLUS = 32;
-  int MINUS = 33;
-  int MULTIPLY = 34;
-  int DIVIDE1 = 35;
-  int DIVIDE2 = 36;
-  int MODULUS1 = 37;
-  int MODULUS2 = 38;
-  int NOT1 = 39;
-  int NOT2 = 40;
-  int AND1 = 41;
-  int AND2 = 42;
-  int OR1 = 43;
-  int OR2 = 44;
-  int EMPTY = 45;
-  int COND = 46;
-  int IDENTIFIER = 47;
-  int IMPL_OBJ_START = 48;
-  int LETTER = 49;
-  int DIGIT = 50;
-
-  int DEFAULT = 0;
-
-  String[] tokenImage = {
-    "<EOF>",
-    "\" \"",
-    "\"\\t\"",
-    "\"\\n\"",
-    "\"\\r\"",
-    "<INTEGER_LITERAL>",
-    "<FLOATING_POINT_LITERAL>",
-    "<EXPONENT>",
-    "<STRING_LITERAL>",
-    "<BADLY_ESCAPED_STRING_LITERAL>",
-    "\"true\"",
-    "\"false\"",
-    "\"null\"",
-    "\".\"",
-    "\">\"",
-    "\"gt\"",
-    "\"<\"",
-    "\"lt\"",
-    "\"==\"",
-    "\"eq\"",
-    "\"<=\"",
-    "\"le\"",
-    "\">=\"",
-    "\"ge\"",
-    "\"!=\"",
-    "\"ne\"",
-    "\"(\"",
-    "\")\"",
-    "\",\"",
-    "\":\"",
-    "\"[\"",
-    "\"]\"",
-    "\"+\"",
-    "\"-\"",
-    "\"*\"",
-    "\"/\"",
-    "\"div\"",
-    "\"%\"",
-    "\"mod\"",
-    "\"not\"",
-    "\"!\"",
-    "\"and\"",
-    "\"&&\"",
-    "\"or\"",
-    "\"||\"",
-    "\"empty\"",
-    "\"?\"",
-    "<IDENTIFIER>",
-    "\"#\"",
-    "<LETTER>",
-    "<DIGIT>",
-  };
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java
deleted file mode 100644
index 50b04d0..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java
+++ /dev/null
@@ -1,855 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree&JavaCC: Do not edit this line. JSPELParserTokenManager.java */
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class JSPELParserTokenManager implements JSPELParserConstants
-{
-  public  java.io.PrintStream debugStream = System.out;
-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
-   switch (pos)
-   {
-      case 0:
-         if ((active0 & 0x2ad002aa9c00L) != 0L)
-         {
-            jjmatchedKind = 47;
-            return 6;
-         }
-         if ((active0 & 0x2000L) != 0L)
-            return 1;
-         return -1;
-      case 1:
-         if ((active0 & 0x22d000001c00L) != 0L)
-         {
-            jjmatchedKind = 47;
-            jjmatchedPos = 1;
-            return 6;
-         }
-         if ((active0 & 0x80002aa8000L) != 0L)
-            return 6;
-         return -1;
-      case 2:
-         if ((active0 & 0x200000001c00L) != 0L)
-         {
-            jjmatchedKind = 47;
-            jjmatchedPos = 2;
-            return 6;
-         }
-         if ((active0 & 0x2d000000000L) != 0L)
-            return 6;
-         return -1;
-      case 3:
-         if ((active0 & 0x200000000800L) != 0L)
-         {
-            jjmatchedKind = 47;
-            jjmatchedPos = 3;
-            return 6;
-         }
-         if ((active0 & 0x1400L) != 0L)
-            return 6;
-         return -1;
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0)
-{
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-}
-private final int jjStopAtPos(int pos, int kind)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   return pos + 1;
-}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_0()
-{
-   switch(curChar)
-   {
-      case 33:
-         jjmatchedKind = 40;
-         return jjMoveStringLiteralDfa1_0(0x1000000L);
-      case 37:
-         return jjStopAtPos(0, 37);
-      case 38:
-         return jjMoveStringLiteralDfa1_0(0x40000000000L);
-      case 40:
-         return jjStopAtPos(0, 26);
-      case 41:
-         return jjStopAtPos(0, 27);
-      case 42:
-         return jjStopAtPos(0, 34);
-      case 43:
-         return jjStopAtPos(0, 32);
-      case 44:
-         return jjStopAtPos(0, 28);
-      case 45:
-         return jjStopAtPos(0, 33);
-      case 46:
-         return jjStartNfaWithStates_0(0, 13, 1);
-      case 47:
-         return jjStopAtPos(0, 35);
-      case 58:
-         return jjStopAtPos(0, 29);
-      case 60:
-         jjmatchedKind = 16;
-         return jjMoveStringLiteralDfa1_0(0x100000L);
-      case 61:
-         return jjMoveStringLiteralDfa1_0(0x40000L);
-      case 62:
-         jjmatchedKind = 14;
-         return jjMoveStringLiteralDfa1_0(0x400000L);
-      case 63:
-         return jjStopAtPos(0, 46);
-      case 91:
-         return jjStopAtPos(0, 30);
-      case 93:
-         return jjStopAtPos(0, 31);
-      case 97:
-         return jjMoveStringLiteralDfa1_0(0x20000000000L);
-      case 100:
-         return jjMoveStringLiteralDfa1_0(0x1000000000L);
-      case 101:
-         return jjMoveStringLiteralDfa1_0(0x200000080000L);
-      case 102:
-         return jjMoveStringLiteralDfa1_0(0x800L);
-      case 103:
-         return jjMoveStringLiteralDfa1_0(0x808000L);
-      case 108:
-         return jjMoveStringLiteralDfa1_0(0x220000L);
-      case 109:
-         return jjMoveStringLiteralDfa1_0(0x4000000000L);
-      case 110:
-         return jjMoveStringLiteralDfa1_0(0x8002001000L);
-      case 111:
-         return jjMoveStringLiteralDfa1_0(0x80000000000L);
-      case 116:
-         return jjMoveStringLiteralDfa1_0(0x400L);
-      case 124:
-         return jjMoveStringLiteralDfa1_0(0x100000000000L);
-      default :
-         return jjMoveNfa_0(0, 0);
-   }
-}
-private final int jjMoveStringLiteralDfa1_0(long active0)
-{
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(0, active0);
-      return 1;
-   }
-   switch(curChar)
-   {
-      case 38:
-         if ((active0 & 0x40000000000L) != 0L)
-            return jjStopAtPos(1, 42);
-         break;
-      case 61:
-         if ((active0 & 0x40000L) != 0L)
-            return jjStopAtPos(1, 18);
-         else if ((active0 & 0x100000L) != 0L)
-            return jjStopAtPos(1, 20);
-         else if ((active0 & 0x400000L) != 0L)
-            return jjStopAtPos(1, 22);
-         else if ((active0 & 0x1000000L) != 0L)
-            return jjStopAtPos(1, 24);
-         break;
-      case 97:
-         return jjMoveStringLiteralDfa2_0(active0, 0x800L);
-      case 101:
-         if ((active0 & 0x200000L) != 0L)
-            return jjStartNfaWithStates_0(1, 21, 6);
-         else if ((active0 & 0x800000L) != 0L)
-            return jjStartNfaWithStates_0(1, 23, 6);
-         else if ((active0 & 0x2000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 25, 6);
-         break;
-      case 105:
-         return jjMoveStringLiteralDfa2_0(active0, 0x1000000000L);
-      case 109:
-         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000L);
-      case 110:
-         return jjMoveStringLiteralDfa2_0(active0, 0x20000000000L);
-      case 111:
-         return jjMoveStringLiteralDfa2_0(active0, 0xc000000000L);
-      case 113:
-         if ((active0 & 0x80000L) != 0L)
-            return jjStartNfaWithStates_0(1, 19, 6);
-         break;
-      case 114:
-         if ((active0 & 0x80000000000L) != 0L)
-            return jjStartNfaWithStates_0(1, 43, 6);
-         return jjMoveStringLiteralDfa2_0(active0, 0x400L);
-      case 116:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStartNfaWithStates_0(1, 15, 6);
-         else if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_0(1, 17, 6);
-         break;
-      case 117:
-         return jjMoveStringLiteralDfa2_0(active0, 0x1000L);
-      case 124:
-         if ((active0 & 0x100000000000L) != 0L)
-            return jjStopAtPos(1, 44);
-         break;
-      default :
-         break;
-   }
-   return jjStartNfa_0(0, active0);
-}
-private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
-{
-   if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(0, old0); 
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(1, active0);
-      return 2;
-   }
-   switch(curChar)
-   {
-      case 100:
-         if ((active0 & 0x4000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 38, 6);
-         else if ((active0 & 0x20000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 41, 6);
-         break;
-      case 108:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1800L);
-      case 112:
-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);
-      case 116:
-         if ((active0 & 0x8000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 39, 6);
-         break;
-      case 117:
-         return jjMoveStringLiteralDfa3_0(active0, 0x400L);
-      case 118:
-         if ((active0 & 0x1000000000L) != 0L)
-            return jjStartNfaWithStates_0(2, 36, 6);
-         break;
-      default :
-         break;
-   }
-   return jjStartNfa_0(1, active0);
-}
-private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
-{
-   if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(1, old0); 
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(2, active0);
-      return 3;
-   }
-   switch(curChar)
-   {
-      case 101:
-         if ((active0 & 0x400L) != 0L)
-            return jjStartNfaWithStates_0(3, 10, 6);
-         break;
-      case 108:
-         if ((active0 & 0x1000L) != 0L)
-            return jjStartNfaWithStates_0(3, 12, 6);
-         break;
-      case 115:
-         return jjMoveStringLiteralDfa4_0(active0, 0x800L);
-      case 116:
-         return jjMoveStringLiteralDfa4_0(active0, 0x200000000000L);
-      default :
-         break;
-   }
-   return jjStartNfa_0(2, active0);
-}
-private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
-{
-   if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(2, old0); 
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(3, active0);
-      return 4;
-   }
-   switch(curChar)
-   {
-      case 101:
-         if ((active0 & 0x800L) != 0L)
-            return jjStartNfaWithStates_0(4, 11, 6);
-         break;
-      case 121:
-         if ((active0 & 0x200000000000L) != 0L)
-            return jjStartNfaWithStates_0(4, 45, 6);
-         break;
-      default :
-         break;
-   }
-   return jjStartNfa_0(3, active0);
-}
-private final void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private final void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private final void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-private final void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-//private final void jjCheckNAddStates(int start)
-//{
-//   jjCheckNAdd(jjnextStates[start]);
-//   jjCheckNAdd(jjnextStates[start + 1]);
-//}
-static final long[] jjbitVec0 = {
-   0x1ff00000fffffffeL, 0xffffffffffffc000L, 0xffffffffL, 0x600000000000000L
-};
-static final long[] jjbitVec2 = {
-   0x0L, 0x0L, 0x0L, 0xff7fffffff7fffffL
-};
-static final long[] jjbitVec3 = {
-   0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-static final long[] jjbitVec4 = {
-   0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffL, 0x0L
-};
-static final long[] jjbitVec5 = {
-   0xffffffffffffffffL, 0xffffffffffffffffL, 0x0L, 0x0L
-};
-static final long[] jjbitVec6 = {
-   0x3fffffffffffL, 0x0L, 0x0L, 0x0L
-};
-static final long[] jjbitVec7 = {
-   0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-static final long[] jjbitVec8 = {
-   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private final int jjMoveNfa_0(int startState, int curPos)
-{
-   int startsAt = 0;
-   jjnewStateCnt = 35;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-        // MatchLoop: 
-        	 do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 5)
-                        kind = 5;
-                     jjCheckNAddStates(0, 4);
-                  }
-                  else if ((0x1800000000L & l) != 0L)
-                  {
-                     if (kind > 47)
-                        kind = 47;
-                     jjCheckNAdd(6);
-                  }
-                  else if (curChar == 39)
-                     jjCheckNAddStates(5, 9);
-                  else if (curChar == 34)
-                     jjCheckNAddStates(10, 14);
-                  else if (curChar == 46)
-                     jjCheckNAdd(1);
-                  break;
-               case 1:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 6)
-                     kind = 6;
-                  jjCheckNAddTwoStates(1, 2);
-                  break;
-               case 3:
-                  if ((0x280000000000L & l) != 0L)
-                     jjCheckNAdd(4);
-                  break;
-               case 4:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 6)
-                     kind = 6;
-                  jjCheckNAdd(4);
-                  break;
-               case 5:
-                  if ((0x1800000000L & l) == 0L)
-                     break;
-                  if (kind > 47)
-                     kind = 47;
-                  jjCheckNAdd(6);
-                  break;
-               case 6:
-                  if ((0x3ff001000000000L & l) == 0L)
-                     break;
-                  if (kind > 47)
-                     kind = 47;
-                  jjCheckNAdd(6);
-                  break;
-               case 7:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 5)
-                     kind = 5;
-                  jjCheckNAddStates(0, 4);
-                  break;
-               case 8:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 5)
-                     kind = 5;
-                  jjCheckNAdd(8);
-                  break;
-               case 9:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddTwoStates(9, 10);
-                  break;
-               case 10:
-                  if (curChar != 46)
-                     break;
-                  if (kind > 6)
-                     kind = 6;
-                  jjCheckNAddTwoStates(11, 12);
-                  break;
-               case 11:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 6)
-                     kind = 6;
-                  jjCheckNAddTwoStates(11, 12);
-                  break;
-               case 13:
-                  if ((0x280000000000L & l) != 0L)
-                     jjCheckNAdd(14);
-                  break;
-               case 14:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 6)
-                     kind = 6;
-                  jjCheckNAdd(14);
-                  break;
-               case 15:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddTwoStates(15, 16);
-                  break;
-               case 17:
-                  if ((0x280000000000L & l) != 0L)
-                     jjCheckNAdd(18);
-                  break;
-               case 18:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 6)
-                     kind = 6;
-                  jjCheckNAdd(18);
-                  break;
-               case 19:
-                  if (curChar == 34)
-                     jjCheckNAddStates(10, 14);
-                  break;
-               case 20:
-                  if ((0xfffffffbffffffffL & l) != 0L)
-                     jjCheckNAddStates(15, 17);
-                  break;
-               case 22:
-                  if (curChar == 34)
-                     jjCheckNAddStates(15, 17);
-                  break;
-               case 23:
-                  if (curChar == 34 && kind > 8)
-                     kind = 8;
-                  break;
-               case 24:
-                  if ((0xfffffffbffffffffL & l) != 0L)
-                     jjCheckNAddTwoStates(24, 25);
-                  break;
-               case 26:
-                  if ((0xfffffffbffffffffL & l) != 0L && kind > 9)
-                     kind = 9;
-                  break;
-               case 27:
-                  if (curChar == 39)
-                     jjCheckNAddStates(5, 9);
-                  break;
-               case 28:
-                  if ((0xffffff7fffffffffL & l) != 0L)
-                     jjCheckNAddStates(18, 20);
-                  break;
-               case 30:
-                  if (curChar == 39)
-                     jjCheckNAddStates(18, 20);
-                  break;
-               case 31:
-                  if (curChar == 39 && kind > 8)
-                     kind = 8;
-                  break;
-               case 32:
-                  if ((0xffffff7fffffffffL & l) != 0L)
-                     jjCheckNAddTwoStates(32, 33);
-                  break;
-               case 34:
-                  if ((0xffffff7fffffffffL & l) != 0L && kind > 9)
-                     kind = 9;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         //MatchLoop: 
-        	 do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 6:
-                  if ((0x7fffffe87fffffeL & l) == 0L)
-                     break;
-                  if (kind > 47)
-                     kind = 47;
-                  jjCheckNAdd(6);
-                  break;
-               case 2:
-                  if ((0x2000000020L & l) != 0L)
-                     jjAddStates(21, 22);
-                  break;
-               case 12:
-                  if ((0x2000000020L & l) != 0L)
-                     jjAddStates(23, 24);
-                  break;
-               case 16:
-                  if ((0x2000000020L & l) != 0L)
-                     jjAddStates(25, 26);
-                  break;
-               case 20:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                     jjCheckNAddStates(15, 17);
-                  break;
-               case 21:
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 22;
-                  break;
-               case 22:
-                  if (curChar == 92)
-                     jjCheckNAddStates(15, 17);
-                  break;
-               case 24:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                     jjAddStates(27, 28);
-                  break;
-               case 25:
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 26;
-                  break;
-               case 26:
-               case 34:
-                  if ((0xffffffffefffffffL & l) != 0L && kind > 9)
-                     kind = 9;
-                  break;
-               case 28:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                     jjCheckNAddStates(18, 20);
-                  break;
-               case 29:
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 30;
-                  break;
-               case 30:
-                  if (curChar == 92)
-                     jjCheckNAddStates(18, 20);
-                  break;
-               case 32:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                     jjAddStates(29, 30);
-                  break;
-               case 33:
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 34;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int hiByte = curChar >> 8;
-         int i1 = hiByte >> 6;
-         long l1 = 1L << (hiByte & 077);
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         //MatchLoop: 
-        	 do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 6:
-                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     break;
-                  if (kind > 47)
-                     kind = 47;
-                  jjCheckNAdd(6);
-                  break;
-               case 20:
-                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     jjAddStates(15, 17);
-                  break;
-               case 24:
-                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     jjAddStates(27, 28);
-                  break;
-               case 26:
-               case 34:
-                  if (jjCanMove_1(hiByte, i1, i2, l1, l2) && kind > 9)
-                     kind = 9;
-                  break;
-               case 28:
-                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     jjAddStates(18, 20);
-                  break;
-               case 32:
-                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     jjAddStates(29, 30);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 35 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-static final int[] jjnextStates = {
-   8, 9, 10, 15, 16, 28, 29, 31, 32, 33, 20, 21, 23, 24, 25, 20, 
-   21, 23, 28, 29, 31, 3, 4, 13, 14, 17, 18, 24, 25, 32, 33, 
-};
-private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
-{
-   switch(hiByte)
-   {
-      case 0:
-         return ((jjbitVec2[i2] & l2) != 0L);
-      case 48:
-         return ((jjbitVec3[i2] & l2) != 0L);
-      case 49:
-         return ((jjbitVec4[i2] & l2) != 0L);
-      case 51:
-         return ((jjbitVec5[i2] & l2) != 0L);
-      case 61:
-         return ((jjbitVec6[i2] & l2) != 0L);
-      default : 
-         if ((jjbitVec0[i1] & l1) != 0L)
-            return true;
-         return false;
-   }
-}
-private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, long l2)
-{
-   switch(hiByte)
-   {
-      case 0:
-         return ((jjbitVec8[i2] & l2) != 0L);
-      default : 
-         if ((jjbitVec7[i1] & l1) != 0L)
-            return true;
-         return false;
-   }
-}
-public static final String[] jjstrLiteralImages = {
-"", null, null, null, null, null, null, null, null, null, "\164\162\165\145", 
-"\146\141\154\163\145", "\156\165\154\154", "\56", "\76", "\147\164", "\74", "\154\164", "\75\75", 
-"\145\161", "\74\75", "\154\145", "\76\75", "\147\145", "\41\75", "\156\145", "\50", 
-"\51", "\54", "\72", "\133", "\135", "\53", "\55", "\52", "\57", "\144\151\166", 
-"\45", "\155\157\144", "\156\157\164", "\41", "\141\156\144", "\46\46", "\157\162", 
-"\174\174", "\145\155\160\164\171", "\77", null, null, null, null, };
-public static final String[] lexStateNames = {
-   "DEFAULT", 
-};
-static final long[] jjtoToken = {
-   0xffffffffff61L, 
-};
-static final long[] jjtoSkip = {
-   0x1eL, 
-};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[35];
-private final int[] jjstateSet = new int[70];
-protected char curChar;
-public JSPELParserTokenManager(SimpleCharStream stream)
-{
-   if (SimpleCharStream.staticFlag)
-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-   input_stream = stream;
-}
-public JSPELParserTokenManager(SimpleCharStream stream, int lexState)
-{
-   this(stream);
-   SwitchTo(lexState);
-}
-public void ReInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private final void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 35; i-- > 0;)
-      jjrounds[i] = 0x80000000;
-}
-public void ReInit(SimpleCharStream stream, int lexState)
-{
-   ReInit(stream);
-   SwitchTo(lexState);
-}
-public void SwitchTo(int lexState)
-{
-   if (lexState >= 1 || lexState < 0)
-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-   else
-      curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
-   Token t = Token.newToken(jjmatchedKind);
-   t.kind = jjmatchedKind;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   t.image = (im == null) ? input_stream.GetImage() : im;
-   t.beginLine = input_stream.getBeginLine();
-   t.beginColumn = input_stream.getBeginColumn();
-   t.endLine = input_stream.getEndLine();
-   t.endColumn = input_stream.getEndColumn();
-   return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-public Token getNextToken() 
-{
-  Token matchedToken;
-  int curPos = 0;
-
-  EOFLoop :
-  for (;;)
-  {   
-   try   
-   {     
-      curChar = input_stream.BeginToken();
-   }     
-   catch(java.io.IOException e)
-   {        
-      jjmatchedKind = 0;
-      matchedToken = jjFillToken();
-      return matchedToken;
-   }
-
-   try { input_stream.backup(0);
-      while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L)
-         curChar = input_stream.BeginToken();
-   }
-   catch (java.io.IOException e1) { continue EOFLoop; }
-   jjmatchedKind = 0x7fffffff;
-   jjmatchedPos = 0;
-   curPos = jjMoveStringLiteralDfa0_0();
-   if (jjmatchedKind != 0x7fffffff)
-   {
-      if (jjmatchedPos + 1 < curPos)
-         input_stream.backup(curPos - jjmatchedPos - 1);
-      if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-      {
-         matchedToken = jjFillToken();
-         return matchedToken;
-      }
-      else
-      {
-         continue EOFLoop;
-      }
-   }
-   int error_line = input_stream.getEndLine();
-   int error_column = input_stream.getEndColumn();
-   String error_after = null;
-   boolean EOFSeen = false;
-   try { input_stream.readChar(); input_stream.backup(1); }
-   catch (java.io.IOException e1) {
-      EOFSeen = true;
-      error_after = curPos <= 1 ? "" : input_stream.GetImage();
-      if (curChar == '\n' || curChar == '\r') {
-         error_line++;
-         error_column = 0;
-      }
-      else
-         error_column++;
-   }
-   if (!EOFSeen) {
-      input_stream.backup(1);
-      error_after = curPos <= 1 ? "" : input_stream.GetImage();
-   }
-   throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
-  }
-}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTreeConstants.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTreeConstants.java
deleted file mode 100644
index 55a6e47..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTreeConstants.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. JSPELParserTreeConstants.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public interface JSPELParserTreeConstants
-{
-  public int JJTEXPRESSION = 0;
-  public int JJTOREXPRESSION = 1;
-  public int JJTANDEXPRESSION = 2;
-  public int JJTEQUALITYEXPRESSION = 3;
-  public int JJTRELATIONALEXPRESSION = 4;
-  public int JJTADDEXPRESSION = 5;
-  public int JJTMULTIPLYEXPRESSION = 6;
-  public int JJTCHOICEEXPRESSION = 7;
-  public int JJTUNARYEXPRESSION = 8;
-  public int JJTVALUE = 9;
-  public int JJTVALUEPREFIX = 10;
-  public int JJTVALUESUFFIX = 11;
-  public int JJTFUNCTIONINVOCATION = 12;
-  public int JJTLITERAL = 13;
-
-
-  public String[] jjtNodeName = {
-    "Expression",
-    "OrExpression",
-    "AndExpression",
-    "EqualityExpression",
-    "RelationalExpression",
-    "AddExpression",
-    "MultiplyExpression",
-    "ChoiceExpression",
-    "UnaryExpression",
-    "Value",
-    "ValuePrefix",
-    "ValueSuffix",
-    "FunctionInvocation",
-    "Literal",
-  };
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserVisitor.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserVisitor.java
deleted file mode 100644
index ffcf494..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserVisitor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. JSPELParserVisitor.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public interface JSPELParserVisitor
-{
-  public Object visit(SimpleNode node, Object data);
-  public Object visit(ASTExpression node, Object data);
-  public Object visit(ASTOrExpression node, Object data);
-  public Object visit(ASTAndExpression node, Object data);
-  public Object visit(ASTEqualityExpression node, Object data);
-  public Object visit(ASTRelationalExpression node, Object data);
-  public Object visit(ASTAddExpression node, Object data);
-  public Object visit(ASTMultiplyExpression node, Object data);
-  public Object visit(ASTChoiceExpression node, Object data);
-  public Object visit(ASTUnaryExpression node, Object data);
-  public Object visit(ASTValue node, Object data);
-  public Object visit(ASTValuePrefix node, Object data);
-  public Object visit(ASTValueSuffix node, Object data);
-  public Object visit(ASTFunctionInvocation node, Object data);
-  public Object visit(ASTLiteral node, Object data);
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELTranslator.java
deleted file mode 100644
index 745f9e6..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELTranslator.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.jface.text.Position;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.jspel.ELProblem;
-import org.eclipse.jst.jsp.core.jspel.IJSPELTranslator;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-
-	
-public class JSPELTranslator implements IJSPELTranslator {
-	/**
-	 * JSP Expression Language Parser.
-	 */
-	private JSPELParser elParser = null;
-	
-	public List translateEL(String elText, String delim,
-			IStructuredDocumentRegion currentNode, int contentStart,
-			int contentLength, StringBuffer fUserELExpressions,
-			HashMap fUserELRanges, IStructuredDocument document) {
-		
-		ArrayList elProblems = new ArrayList();
-		
-		try {
-			synchronized(this) {
-				if(null == elParser) {
-					elParser = JSPELParser.createParser(elText);
-				} else {
-					elParser.ReInit(elText);
-				}
-			
-				ASTExpression expression = elParser.Expression();
-				ELGenerator gen = new ELGenerator();
-				gen.generate(expression, currentNode, fUserELExpressions, fUserELRanges, document, currentNode, contentStart, contentLength);
-			}
-		} catch (ParseException e) {
-			Token curTok = e.currentToken;
-			int problemStartOffset;
-			int problemEndOffset;
-			Position pos = null;
-			problemStartOffset =  contentStart + curTok.beginColumn;
-			problemEndOffset = contentStart + curTok.endColumn;
-			
-			pos = new Position(problemStartOffset, problemEndOffset - problemStartOffset + 1);
-			elProblems.add(new ELProblem(pos, e.getLocalizedMessage()));
-		} catch (TokenMgrError te) {
-			Position pos = new Position(contentStart, contentLength);
-			elProblems.add(new ELProblem(pos, JSPCoreMessages.JSPEL_Token));
-		}
-		return elProblems;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/Node.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/Node.java
deleted file mode 100644
index b8a186e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/Node.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. Node.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-/* All AST nodes must implement this interface.  It provides basic
-   machinery for constructing the parent and child relationships
-   between nodes. */
-
-public interface Node {
-
-  /** This method is called after the node has been made the current
-    node.  It indicates that child nodes can now be added to it. */
-  public void jjtOpen();
-
-  /** This method is called after all the child nodes have been
-    added. */
-  public void jjtClose();
-
-  /** This pair of methods are used to inform the node of its
-    parent. */
-  public void jjtSetParent(Node n);
-  public Node jjtGetParent();
-
-  /** This method tells the node to add its argument to the node's
-    list of children.  */
-  public void jjtAddChild(Node n, int i);
-
-  /** This method returns a child node.  The children are numbered
-     from zero, left to right. */
-  public Node jjtGetChild(int i);
-
-  /** Return the number of children the node has. */
-  public int jjtGetNumChildren();
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data);
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ParseException.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ParseException.java
deleted file mode 100644
index ecd5087..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ParseException.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-	 * Default <code>serialVersionUID</code>
-	 */
-	private static final long serialVersionUID = 1L;
-
-/**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.  The boolean
-   * flag "specialConstructor" is also set to true to indicate that
-   * this constructor was used to create this object.
-   * This constructor calls its super class with the empty string
-   * to force the "toString" method of parent class "Throwable" to
-   * print the error message in the form:
-   *     ParseException: <result of getMessage>
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super("");
-    specialConstructor = true;
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-    specialConstructor = false;
-  }
-
-  public ParseException(String message) {
-    super(message);
-    specialConstructor = false;
-  }
-
-  /**
-   * This variable determines which constructor was used to create
-   * this object and thereby affects the semantics of the
-   * "getMessage" method (see below).
-   */
-  protected boolean specialConstructor;
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * This method has the standard behavior when this object has been
-   * created using the standard constructors.  Otherwise, it uses
-   * "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser), then this method is called during the printing
-   * of the final stack trace, and hence the correct error message
-   * gets displayed.
-   */
-  public String getMessage() {
-    if (!specialConstructor) {
-      return super.getMessage();
-    }
-    String expected = "";
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected += tokenImage[expectedTokenSequences[i][j]] + " ";
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected += "...";
-      }
-      expected += eol + "    ";
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += add_escapes(tok.image);
-      tok = tok.next; 
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected;
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
- 
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  protected String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/SimpleCharStream.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/SimpleCharStream.java
deleted file mode 100644
index 8021b4b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/SimpleCharStream.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 3.0 */
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (without unicode processing).
- */
-
-public class SimpleCharStream
-{
-  public static final boolean staticFlag = false;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  public int bufpos = -1;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int inBuf = 0;
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-     char[] newbuffer = new char[bufsize + 2048];
-     int newbufline[] = new int[bufsize + 2048];
-     int newbufcolumn[] = new int[bufsize + 2048];
-
-     try
-     {
-        if (wrapAround)
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           System.arraycopy(buffer, 0, newbuffer,
-                                             bufsize - tokenBegin, bufpos);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-        }
-        else
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos -= tokenBegin);
-        }
-     }
-     catch (Throwable t)
-     {
-        throw new Error(t.getMessage());
-     }
-
-
-     bufsize += 2048;
-     available = bufsize;
-     tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-     if (maxNextCharInd == available)
-     {
-        if (available == bufsize)
-        {
-           if (tokenBegin > 2048)
-           {
-              bufpos = maxNextCharInd = 0;
-              available = tokenBegin;
-           }
-           else if (tokenBegin < 0)
-              bufpos = maxNextCharInd = 0;
-           else
-              ExpandBuff(false);
-        }
-        else if (available > tokenBegin)
-           available = bufsize;
-        else if ((tokenBegin - available) < 2048)
-           ExpandBuff(true);
-        else
-           available = tokenBegin;
-     }
-
-     int i;
-     try {
-        if ((i = inputStream.read(buffer, maxNextCharInd,
-                                    available - maxNextCharInd)) == -1)
-        {
-           inputStream.close();
-           throw new java.io.IOException();
-        }
-        else
-           maxNextCharInd += i;
-        return;
-     }
-     catch(java.io.IOException e) {
-        --bufpos;
-        backup(0);
-        if (tokenBegin == -1)
-           tokenBegin = bufpos;
-        throw e;
-     }
-  }
-
-  public char BeginToken() throws java.io.IOException
-  {
-     tokenBegin = -1;
-     char c = readChar();
-     tokenBegin = bufpos;
-
-     return c;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-     column++;
-
-     if (prevCharIsLF)
-     {
-        prevCharIsLF = false;
-        line += (column = 1);
-     }
-     else if (prevCharIsCR)
-     {
-        prevCharIsCR = false;
-        if (c == '\n')
-        {
-           prevCharIsLF = true;
-        }
-        else
-           line += (column = 1);
-     }
-
-     switch (c)
-     {
-        case '\r' :
-           prevCharIsCR = true;
-           break;
-        case '\n' :
-           prevCharIsLF = true;
-           break;
-        case '\t' :
-           column--;
-           column += (8 - (column & 07));
-           break;
-        default :
-           break;
-     }
-
-     bufline[bufpos] = line;
-     bufcolumn[bufpos] = column;
-  }
-
-  public char readChar() throws java.io.IOException
-  {
-     if (inBuf > 0)
-     {
-        --inBuf;
-
-        if (++bufpos == bufsize)
-           bufpos = 0;
-
-        return buffer[bufpos];
-     }
-
-     if (++bufpos >= maxNextCharInd)
-        FillBuff();
-
-     char c = buffer[bufpos];
-
-     UpdateLineColumn(c);
-     return (c);
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndColumn
-   */
-
-  public int getColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndLine
-   */
-
-  public int getLine() {
-     return bufline[bufpos];
-  }
-
-  public int getEndColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  public int getEndLine() {
-     return bufline[bufpos];
-  }
-
-  public int getBeginColumn() {
-     return bufcolumn[tokenBegin];
-  }
-
-  public int getBeginLine() {
-     return bufline[tokenBegin];
-  }
-
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-       bufpos += bufsize;
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-                                                           int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.Reader dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    bufpos = -1;
-  }
-
-  public void ReInit(java.io.Reader dstream, int startline,
-                                                           int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.Reader dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-     this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-                                                           int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream, int startline,
-                          int startcolumn, int buffersize)
-  {
-     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                                                           int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-  public String GetImage()
-  {
-     if (bufpos >= tokenBegin)
-        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-     else
-        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  public char[] GetSuffix(int len)
-  {
-     char[] ret = new char[len];
-
-     if ((bufpos + 1) >= len)
-        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-     else
-     {
-        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                          len - bufpos - 1);
-        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-     }
-
-     return ret;
-  }
-
-  public void Done()
-  {
-     buffer = null;
-     bufline = null;
-     bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
-  }
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/SimpleNode.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/SimpleNode.java
deleted file mode 100644
index aac473f..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/SimpleNode.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JJTree: Do not edit this line. SimpleNode.java */
-
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class SimpleNode implements Node {
-  protected Node parent;
-  protected Node[] children;
-  protected int id;
-  protected JSPELParser parser;
-  protected Token firstToken;
-  protected Token lastToken;
-
-  public SimpleNode(int i) {
-    id = i;
-  }
-
-  public SimpleNode(JSPELParser p, int i) {
-    this(i);
-    parser = p;
-  }
-
-  public void jjtOpen() {
-  }
-
-  public void jjtClose() {
-  }
-  
-  public void jjtSetParent(Node n) { parent = n; }
-  public Node jjtGetParent() { return parent; }
-
-  public void jjtAddChild(Node n, int i) {
-    if (children == null) {
-      children = new Node[i + 1];
-    } else if (i >= children.length) {
-      Node c[] = new Node[i + 1];
-      System.arraycopy(children, 0, c, 0, children.length);
-      children = c;
-    }
-    children[i] = n;
-  }
-
-  public Node jjtGetChild(int i) {
-    return children[i];
-  }
-
-  public int jjtGetNumChildren() {
-    return (children == null) ? 0 : children.length;
-  }
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(JSPELParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-
-  /** Accept the visitor. **/
-  public Object childrenAccept(JSPELParserVisitor visitor, Object data) {
-    if (children != null) {
-      for (int i = 0; i < children.length; ++i) {
-        children[i].jjtAccept(visitor, data);
-      }
-    }
-    return data;
-  }
-
-  /* You can override these two methods in subclasses of SimpleNode to
-     customize the way the node appears when the tree is dumped.  If
-     your output uses more than one line you should override
-     toString(String), otherwise overriding toString() is probably all
-     you need to do. */
-
-  public String toString() { return JSPELParserTreeConstants.jjtNodeName[id]; }
-  public String toString(String prefix) { return prefix + toString(); }
-
-  /* Override this method if you want to customize how the node dumps
-     out its children. */
-
-  public void dump(String prefix) {
-    System.out.println(toString(prefix));
-    if (children != null) {
-      for (int i = 0; i < children.length; ++i) {
-	SimpleNode n = (SimpleNode)children[i];
-	if (n != null) {
-	  n.dump(prefix + " ");
-	}
-      }
-    }
-  }
-
-  public Token getFirstToken() {
-    return firstToken;
-  }
-
-  public void setFirstToken(Token firstToken) {
-    this.firstToken = firstToken;
-  }
-
-  public Token getLastToken() {
-    return lastToken;
-  }
-
-  public void setLastToken(Token lastToken) {
-    this.lastToken = lastToken;
-  }
-}
-
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/Token.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/Token.java
deleted file mode 100644
index 7159820..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/Token.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-/**
- * Describes the input token stream.
- */
-
-public class Token {
-
-  /**
-   * An integer that describes the kind of this token.  This numbering
-   * system is determined by JavaCCParser, and a table of these numbers is
-   * stored in the file ...Constants.java.
-   */
-  public int kind;
-
-  /**
-   * beginLine and beginColumn describe the position of the first character
-   * of this token; endLine and endColumn describe the position of the
-   * last character of this token.
-   */
-  public int beginLine, beginColumn, endLine, endColumn;
-
-  /**
-   * The string image of the token.
-   */
-  public String image;
-
-  /**
-   * A reference to the next regular (non-special) token from the input
-   * stream.  If this is the last token from the input stream, or if the
-   * token manager has not read tokens beyond this one, this field is
-   * set to null.  This is true only if this token is also a regular
-   * token.  Otherwise, see below for a description of the contents of
-   * this field.
-   */
-  public Token next;
-
-  /**
-   * This field is used to access special tokens that occur prior to this
-   * token, but after the immediately preceding regular (non-special) token.
-   * If there are no such special tokens, this field is set to null.
-   * When there are more than one such special token, this field refers
-   * to the last of these special tokens, which in turn refers to the next
-   * previous special token through its specialToken field, and so on
-   * until the first special token (whose specialToken field is null).
-   * The next fields of special tokens refer to other special tokens that
-   * immediately follow it (without an intervening regular token).  If there
-   * is no such token, this field is null.
-   */
-  public Token specialToken;
-
-  /**
-   * Returns the image.
-   */
-  public String toString()
-  {
-     return image;
-  }
-
-  /**
-   * Returns a new Token object, by default. However, if you want, you
-   * can create and return subclass objects based on the value of ofKind.
-   * Simply add the cases to the switch for all those special cases.
-   * For example, if you have a subclass of Token called IDToken that
-   * you want to create if ofKind is ID, simlpy add something like :
-   *
-   *    case MyParserConstants.ID : return new IDToken();
-   *
-   * to the following switch statement. Then you can cast matchedToken
-   * variable to the appropriate type and use it in your lexical actions.
-   */
-  public static final Token newToken(int ofKind)
-  {
-     switch(ofKind)
-     {
-       default : return new Token();
-     }
-  }
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/TokenMgrError.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/TokenMgrError.java
deleted file mode 100644
index 1a53dc2..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/TokenMgrError.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
-package org.eclipse.jst.jsp.core.internal.java.jspel;
-
-public class TokenMgrError extends Error
-{
-   /*
-    * Ordinals for various reasons why an Error of this type can be thrown.
-    */
-
-   /**
-	 * Default <code>serialVersionUID</code>
-	 */
-	private static final long serialVersionUID = 1L;
-
-/**
-    * Lexical error occured.
-    */
-   static final int LEXICAL_ERROR = 0;
-
-   /**
-    * An attempt wass made to create a second instance of a static token manager.
-    */
-   static final int STATIC_LEXER_ERROR = 1;
-
-   /**
-    * Tried to change to an invalid lexical state.
-    */
-   static final int INVALID_LEXICAL_STATE = 2;
-
-   /**
-    * Detected (and bailed out of) an infinite loop in the token manager.
-    */
-   static final int LOOP_DETECTED = 3;
-
-   /**
-    * Indicates the reason why the exception is thrown. It will have
-    * one of the above 4 values.
-    */
-   int errorCode;
-
-   /**
-    * Replaces unprintable characters by their espaced (or unicode escaped)
-    * equivalents in the given string
-    */
-   protected static final String addEscapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-   /**
-    * Returns a detailed message for the Error when it is thrown by the
-    * token manager to indicate a lexical error.
-    * Parameters : 
-    *    EOFSeen     : indicates if EOF caused the lexicl error
-    *    curLexState : lexical state in which this error occured
-    *    errorLine   : line number when the error occured
-    *    errorColumn : column number when the error occured
-    *    errorAfter  : prefix that was seen before this error occured
-    *    curchar     : the offending character
-    * Note: You can customize the lexical error message by modifying this method.
-    */
-   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-      return("Lexical error at line " +
-           errorLine + ", column " +
-           errorColumn + ".  Encountered: " +
-           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-           "after : \"" + addEscapes(errorAfter) + "\"");
-   }
-
-   /**
-    * You can also modify the body of this method to customize your error messages.
-    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
-    * of end-users concern, so you can return something like : 
-    *
-    *     "Internal Error : Please file a bug report .... "
-    *
-    * from this method for such cases in the release version of your parser.
-    */
-   public String getMessage() {
-      return super.getMessage();
-   }
-
-   /*
-    * Constructors of various flavors follow.
-    */
-
-   public TokenMgrError() {
-   }
-
-   public TokenMgrError(String message, int reason) {
-      super(message);
-      errorCode = reason;
-   }
-
-   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
-   }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/fixparser.sed b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/fixparser.sed
deleted file mode 100644
index 1aa5e62..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/fixparser.sed
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/sed

-

-#

-# The SSE generally uses compiler setting to turn  most warnings into errors.  

-# This is a little problematic for JavaCC generated files.  We don't want 

-# to distribute a customized version of JavaCC nor is there any "template" 

-# mechanism.  So, this simple sed script goes through the generated token

-# manager and fixes a few things.  If JavaCC changes the generated code, 

-# it's likely that this script will no longer do the right thing.  Ditto with

-# any version of JavaCC besides 3.2. Also, there's no guarantee that this 

-# script will even work with an arbitrary JavaCC grammar.  It's only been tested

-# with the current JSP EL grammar.

-#

-# Author: Ted A. Carroll (tcarroll@bea.com)

-#

-

-s/static private final class LookaheadSuccess extends java.lang.Error { }/static private final class LookaheadSuccess extends java.lang.Error { \n    private static final long serialVersionUID = 1L; \n  }/g

-

diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/fixtm.sed b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/fixtm.sed
deleted file mode 100644
index 5c1dea4..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/fixtm.sed
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/sed

-

-#

-# The SSE generally uses compiler setting to turn  most warnings into errors.  

-# This is a little problematic for JavaCC generated files.  We don't want 

-# to distribute a customized version of JavaCC nor is there any "template" 

-# mechanism.  So, this simple sed script goes through the generated token

-# manager and fixes a few things.  If JavaCC changes the generated code, 

-# it's likely that this script will no longer do the right thing.  Ditto with

-# any version of JavaCC besides 3.2. Also, there's no guarantee that this 

-# script will even work with an arbitrary JavaCC grammar.  It's only been tested

-# with the current JSP EL grammar.

-#

-# Author: Ted A. Carroll (tcarroll@bea.com)

-#

-

-s/(int)(curChar >> 8)/curChar >> 8/g

-

-/^public Token getNextToken()/, /EOFLoop/{

-	/int kind;/ {d}

-	/Token specialToken = null;/{d}

-}

-

-/^private final int jjMoveNfa_0(int startState, int curPos)/, /for(;;)/{

-	s/int j, kind = 0x7fffffff;/int kind = 0x7fffffff;/g

-	/int\[\] nextStates;/{d}

-}

diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/go.sh b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/go.sh
deleted file mode 100644
index b3d5aaa..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/go.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/sh

-

-# Set JAVACC_HOME to the installation directory of javacc 3.2

-$JAVACC_HOME/bin/jjtree.bat JSPEL.jjt

-$JAVACC_HOME/bin/javacc.bat JSPEL.jj

-sed -f fixtm.sed -i.bak JSPELParserTokenManager.java

-diff -w JSPELParserTokenManager.java JSPELParserTokenManager.java.bak

-sed -f fixparser.sed -i.bak JSPELParser.java

-diff -w JSPELParser.java JSPELParser.java.bak

diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/IndexWorkspaceJob.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/IndexWorkspaceJob.java
deleted file mode 100644
index f8a27e3..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/IndexWorkspaceJob.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-
-/**
- * Re-indexes the entire workspace.
- * Ensures the JSP Index is in a stable state before performing a search.
- * (like after a crash or if previous indexing was canceled)
- * 
- * @author pavery
- */
-public class IndexWorkspaceJob extends Job {
-
-	// for debugging
-	static final boolean DEBUG;
-	static {
-		String value= Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspindexmanager"); //$NON-NLS-1$
-		DEBUG= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-	
-	/**
-	 * Visitor that retrieves jsp project paths for all jsp files in the workspace,
-	 * and adds the files to be indexed as they are encountered
-	 */
-	private class JSPFileVisitor implements IResourceProxyVisitor {
-	    private List files = new ArrayList(); 
-		
-		// monitor from the Job
-		IProgressMonitor fInnerMonitor = null;
-		public JSPFileVisitor(IProgressMonitor monitor) {
-			this.fInnerMonitor = monitor;
-		}
-		
-		public boolean visit(IResourceProxy proxy) throws CoreException {
-			
-			// check job canceled
-			if (this.fInnerMonitor != null && this.fInnerMonitor.isCanceled()) {
-				setCanceledState();
-				return false;
-			}
-			
-			// check search support canceled
-			if(JSPSearchSupport.getInstance().isCanceled()) {
-				setCanceledState();
-				return false;
-			}
-			
-			if (proxy.getType() == IResource.FILE) {
-				
-				// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3553
-				// check this before description
-				// check name before actually getting the file (less work)
-				if(getJspContentType().isAssociatedWith(proxy.getName())) {
-					IFile file = (IFile) proxy.requestResource();
-					if(file.exists()) {
-						
-						if(DEBUG)
-							System.out.println("(+) IndexWorkspaceJob adding file: " + file.getName()); //$NON-NLS-1$
-						// this call will check the ContentTypeDescription, so don't need to do it here.
-						//JSPSearchSupport.getInstance().addJspFile(file);
-						this.files.add(file);
-						this.fInnerMonitor.subTask(proxy.getName());
-						
-						// don't search deeper for files
-						return false;
-					}
-				}
-			}
-			return true;
-		}
-		
-		public final IFile[] getFiles() {
-		    return (IFile[])this.files.toArray(new IFile[this.files.size()]);
-		}
-	}
-	
-	private IContentType fContentTypeJSP = null;
-	
-	public IndexWorkspaceJob() {
-		// pa_TODO may want to say something like "Rebuilding JSP Index" to be more
-		// descriptive instead of "Updating JSP Index" since they are 2 different things
-		super(JSPCoreMessages.JSPIndexManager_0);
-		setPriority(Job.LONG);
-		setSystem(true);
-	}
-
-	IContentType getJspContentType() {
-		if(this.fContentTypeJSP == null)
-			this.fContentTypeJSP = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-		return this.fContentTypeJSP;
-	}
-	
-	/**
-	 * @see org eclipse.core.internal.jobs.InternalJob#run(org.eclipse.core.runtime.IProgressMonitor) 
-	 * for similar method
-	 */
-	protected IStatus run(IProgressMonitor monitor) {
-		
-		IStatus status = Status.OK_STATUS;
-		
-		if(monitor.isCanceled()) {
-			setCanceledState();
-			return Status.CANCEL_STATUS;
-		}
-		
-		if(DEBUG)
-			System.out.println(" ^ IndexWorkspaceJob started: "); //$NON-NLS-1$
-		
-		Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
-		long start = System.currentTimeMillis();
-		
-		try {
-		    JSPFileVisitor visitor = new JSPFileVisitor(monitor);
-		    // collect all jsp files
-			ResourcesPlugin.getWorkspace().getRoot().accept(visitor, IResource.DEPTH_INFINITE);
-			// request indexing
-			// this is pretty much like faking an entire workspace resource delta
-			JSPIndexManager.getInstance().indexFiles(visitor.getFiles());
-		}
-		catch (CoreException e) {
-			if(DEBUG)
-				e.printStackTrace();
-		}
-		finally {
-			monitor.done();
-		}
-		long finish = System.currentTimeMillis();
-		if(DEBUG)
-			System.out.println(" ^ IndexWorkspaceJob finished\n   total time running: " + (finish - start)); //$NON-NLS-1$
-		
-		return status;
-	}
-	
-	void setCanceledState() {
-		JSPIndexManager.getInstance().setIndexState(JSPIndexManager.S_CANCELED);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPIndexManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPIndexManager.java
deleted file mode 100644
index 07bec43..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPIndexManager.java
+++ /dev/null
@@ -1,728 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.internal.core.JavaModelManager;
-import org.eclipse.jdt.internal.core.index.Index;
-import org.eclipse.jdt.internal.core.search.indexing.IndexManager;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-
-/**
- * Responsible for keeping the JSP index up to date.
- * 
- * @author pavery
- */
-public class JSPIndexManager {
-
-	// for debugging
-	// TODO move this to Logger, as we have in SSE
-	static final boolean DEBUG;
-	static {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspindexmanager"); //$NON-NLS-1$
-		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	private static final String PKEY_INDEX_STATE = "jspIndexState"; //$NON-NLS-1$
-
-	private IndexWorkspaceJob indexingJob = new IndexWorkspaceJob();
-
-
-
-	// TODO: consider enumeration for these int constants
-	// set to S_UPDATING once a resource change comes in
-	// set to S_STABLE if:
-	// - we know we aren't interested in the resource change
-	// - or the ProcessFilesJob completes
-	// set to S_CANCELED if an indexing job is canceled
-	// set to S_REBUILDING if re-indexing the entire workspace
-
-	// the int '0' is reserved for the default value if a preference is not
-	// there
-	/** index is reliable to use */
-	public static final int S_STABLE = 1;
-	/** index is being updated (from a resource delta) */
-	public static final int S_UPDATING = 2;
-	/** entire index is being rebuilt */
-	public static final int S_REBUILDING = 3;
-	/**
-	 * indexing job was canceled in the middle of it, index needs to be
-	 * rebuilt
-	 */
-	public static final int S_CANCELED = 4;
-
-	/** symbolic name for OSGI framework */
-	private final String OSGI_FRAMEWORK_ID = "org.eclipse.osgi"; //$NON-NLS-1$
-
-	/**
-	 * Collects JSP files from a resource delta.
-	 */
-	private class JSPResourceVisitor implements IResourceDeltaVisitor {
-		// using hash map ensures only one of each file
-		// must be reset before every use
-		private HashMap jspFiles = null;
-
-		public JSPResourceVisitor() {
-			this.jspFiles = new HashMap();
-		}
-
-		public boolean visit(IResourceDelta delta) throws CoreException {
-
-			// in case JSP search was canceled (eg. when closing the editor)
-			if (JSPSearchSupport.getInstance().isCanceled() || frameworkIsShuttingDown()) {
-				setCanceledState();
-				return false;
-			}
-
-			try {
-				if (!isHiddenResource(delta.getFullPath())) {
-
-					int kind = delta.getKind();
-					boolean added = (kind & IResourceDelta.ADDED) == IResourceDelta.ADDED;
-					boolean isInterestingChange = false;
-					if ((kind & IResourceDelta.CHANGED) == IResourceDelta.CHANGED) {
-						int flags = delta.getFlags();
-						// ignore things like marker changes
-						isInterestingChange = (flags & IResourceDelta.CONTENT) == IResourceDelta.CONTENT || (flags & IResourceDelta.REPLACED) == IResourceDelta.REPLACED;
-					}
-					boolean removed = (kind & IResourceDelta.REMOVED) == IResourceDelta.REMOVED;
-					if (added || isInterestingChange) {
-
-						visitAdded(delta);
-					}
-					else if (removed) {
-						visitRemoved(delta);
-					}
-				}
-			}
-			catch (Exception e) {
-				// need to set state here somehow, and reindex
-				// otherwise index will be unreliable
-				if (DEBUG)
-					Logger.logException("Delta analysis may not be complete", e); //$NON-NLS-1$
-			}
-			// if the delta has children, continue to add/remove files
-			return true;
-		}
-
-		private void visitRemoved(IResourceDelta delta) {
-			// handle cleanup
-			if (delta.getResource() != null) {
-				IResource r = delta.getResource();
-				if (r.getType() == IResource.FOLDER && r.exists()) {
-					deleteIndex((IFile) r);
-				}
-			}
-		}
-
-		private void visitAdded(IResourceDelta delta) {
-			// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3553
-			// quick check if it's even JSP related to improve
-			// performance
-			// checking name from the delta before getting
-			// resource because it's lighter
-			String filename = delta.getFullPath().lastSegment();
-			if (filename != null && getJspContentType().isAssociatedWith(filename)) {
-				IResource r = delta.getResource();
-				if (r != null && r.exists() && r.getType() == IResource.FILE) {
-					this.jspFiles.put(r.getFullPath(), r);
-				}
-			}
-		}
-
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=93463
-		private boolean isHiddenResource(IPath p) {
-			String[] segments = p.segments();
-			for (int i = 0; i < segments.length; i++) {
-				if (segments[i].startsWith(".")) //$NON-NLS-1$
-					return true;
-			}
-			return false;
-		}
-
-		private void deleteIndex(IFile folder) {
-			// cleanup index
-			IndexManager im = JavaModelManager.getIndexManager();
-			IPath folderPath = folder.getFullPath();
-			IPath indexLocation = JSPSearchSupport.getInstance().computeIndexLocation(folderPath);
-			im.removeIndex(indexLocation);
-			// im.indexLocations.removeKey(folderPath);
-			// im.indexLocations.removeValue(indexLocation);
-			File f = indexLocation.toFile();
-			f.delete();
-		}
-
-		public IFile[] getFiles() {
-			return (IFile[]) this.jspFiles.values().toArray(new IFile[this.jspFiles.size()]);
-		}
-
-		public void reset() {
-			this.jspFiles.clear();
-		}
-	}
-
-	// end class JSPResourceVisitor
-
-	/**
-	 * schedules JSP files for indexing by Java core
-	 */
-	private class ProcessFilesJob extends Job {
-		List fileList = null;
-		// keep track of how many files we've indexed
-		int lastFileCursor = 0;
-
-		ProcessFilesJob(String taskName) {
-			super(taskName);
-			fileList = new ArrayList();
-		}
-
-		synchronized void process(IFile[] files) {
-			for (int i = 0; i < files.length; i++) {
-				fileList.add(files[i]);
-			}
-			if (DEBUG) {
-				System.out.println("JSPIndexManager queuing " + files.length + " files"); //$NON-NLS-2$ //$NON-NLS-1$
-			}
-		}
-
-		synchronized IFile[] getFiles() {
-			return (IFile[]) fileList.toArray(new IFile[fileList.size()]);
-		}
-
-		synchronized void clearFiles() {
-			fileList.clear();
-			lastFileCursor = 0;
-			//System.out.println("cleared files");
-		}
-
-		protected IStatus run(IProgressMonitor monitor) {
-			// System.out.println("indexer monitor" + monitor);
-			if (isCanceled(monitor) || frameworkIsShuttingDown()) {
-				setCanceledState();
-				return Status.CANCEL_STATUS;
-			}
-
-			Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
-			long start = System.currentTimeMillis();
-
-			try {
-				IFile[] filesToBeProcessed = getFiles();
-
-				if (DEBUG) {
-					System.out.println("JSPIndexManager indexing " + filesToBeProcessed.length + " files"); //$NON-NLS-2$ //$NON-NLS-1$
-				}
-				// API indicates that monitor is never null
-				monitor.beginTask("", filesToBeProcessed.length); //$NON-NLS-1$
-				JSPSearchSupport ss = JSPSearchSupport.getInstance();
-				String processingNFiles = ""; //$NON-NLS-1$
-
-
-				for (;lastFileCursor < filesToBeProcessed.length; lastFileCursor++) {
-
-					if (isCanceled(monitor) || frameworkIsShuttingDown()) {
-						setCanceledState();
-						return Status.CANCEL_STATUS;
-					}
-					IFile file = filesToBeProcessed[lastFileCursor];
-					try {
-						IJavaProject project = JavaCore.create(file.getProject());
-						if (project.exists()) {
-							ss.addJspFile(file);
-							// JSP Indexer processing n files
-							processingNFiles = NLS.bind(JSPCoreMessages.JSPIndexManager_2, new String[]{Integer.toString((filesToBeProcessed.length - lastFileCursor))});
-							monitor.subTask(processingNFiles + " - " + file.getName()); //$NON-NLS-1$
-							monitor.worked(1);
-
-							if (DEBUG) {
-								System.out.println("JSPIndexManager Job added file: " + file.getName()); //$NON-NLS-1$
-							}
-						}
-					}
-					catch (Exception e) {
-						// RATLC00284776
-						// ISSUE: we probably shouldn't be catching EVERY
-						// exception, but
-						// the framework only allows to return IStatus in
-						// order to communicate
-						// that something went wrong, which means the loop
-						// won't complete, and we would hit the same problem
-						// the next time.
-						// 
-						// a possible solution is to keep track of the
-						// exceptions logged
-						// and only log a certain amt of the same one,
-						// otherwise skip it.
-						if (!frameworkIsShuttingDown()) {
-							String filename = file != null ? file.getFullPath().toString() : ""; //$NON-NLS-1$
-							Logger.logException("JSPIndexer problem indexing:" + filename, e); //$NON-NLS-1$
-						}
-					}
-				} // end for
-			}
-			finally {
-				// just in case something didn't follow API (monitor is null)
-				if (monitor != null)
-					monitor.done();
-			}
-
-			// successfully finished, clear files list
-			clearFiles();
-			
-			long finish = System.currentTimeMillis();
-			long diff = finish - start;
-			if (DEBUG) {
-				fTotalTime += diff;
-				System.out.println("============================================================================"); //$NON-NLS-1$
-				System.out.println("this time: " + diff + " cumulative time for resource changed: " + fTotalTime); //$NON-NLS-1$ //$NON-NLS-2$
-				System.out.println("============================================================================"); //$NON-NLS-1$
-			}
-			return Status.OK_STATUS;
-		}
-
-		private boolean isCanceled(IProgressMonitor runMonitor) {
-
-			boolean canceled = false;
-			// check specific monitor passed into run method (the progress
-			// group in this case)
-			// check main search support canceled
-			if (runMonitor != null && runMonitor.isCanceled())
-				canceled = true;
-			else if (JSPSearchSupport.getInstance().isCanceled()) {
-				canceled = true;
-				if (runMonitor != null) {
-					runMonitor.setCanceled(true);
-				}
-			}
-			return canceled;
-		}
-		
-	}
-
-	// end class ProcessFilesJob
-
-	private static JSPIndexManager fSingleton = null;
-	private boolean initialized;
-	private boolean initializing = true;
-
-	private IndexJobCoordinator indexJobCoordinator;
-	private IResourceChangeListener jspResourceChangeListener;
-
-	private JSPResourceVisitor fVisitor = null;
-	private IContentType fContentTypeJSP = null;
-
-	static long fTotalTime = 0;
-
-	// Job for processing resource delta
-	private ProcessFilesJob processFilesJob = null;
-
-	private JSPIndexManager() {
-		processFilesJob = new ProcessFilesJob(JSPCoreMessages.JSPIndexManager_0);
-		// only show in verbose mode
-		processFilesJob.setSystem(true);
-		processFilesJob.setPriority(Job.LONG);
-		processFilesJob.addJobChangeListener(new JobChangeAdapter() {
-			public void done(IJobChangeEvent event) {
-				super.done(event);
-				setStableState();
-			}
-		});
-	}
-
-	public synchronized static JSPIndexManager getInstance() {
-
-		if (fSingleton == null)
-			fSingleton = new JSPIndexManager();
-		return fSingleton;
-	}
-
-	public void initialize() {
-
-		JSPIndexManager singleInstance = getInstance();
-
-
-		if (!singleInstance.initialized) {
-			singleInstance.initialized = true;
-
-			singleInstance.indexJobCoordinator = new IndexJobCoordinator();
-			singleInstance.jspResourceChangeListener = new JSPResourceChangeListener();
-
-			// added as JobChange listener so JSPIndexManager can be smarter
-			// about when it runs
-			Platform.getJobManager().addJobChangeListener(singleInstance.indexJobCoordinator);
-
-			// add JSPIndexManager to keep JSP Index up to date
-			// listening for IResourceChangeEvent.PRE_DELETE and
-			// IResourceChangeEvent.POST_CHANGE
-			ResourcesPlugin.getWorkspace().addResourceChangeListener(jspResourceChangeListener, IResourceChangeEvent.POST_CHANGE);
-
-			// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=5091
-			// makes sure IndexManager is aware of our indexes
-			saveIndexes();
-			singleInstance.initializing = false;
-
-		}
-
-	}
-	
-	synchronized void setIndexState(int state) {
-		if (DEBUG) {
-			System.out.println("JSPIndexManager setting index state to: " + state2String(state)); //$NON-NLS-1$
-		}
-		Plugin jspModelPlugin = JSPCorePlugin.getDefault();
-		jspModelPlugin.getPluginPreferences().setValue(PKEY_INDEX_STATE, state);
-		jspModelPlugin.savePluginPreferences();
-
-	}
-
-	private String state2String(int state) {
-		String s = "UNKNOWN"; //$NON-NLS-1$
-		switch (state) {
-			case (S_STABLE) :
-				s = "S_STABLE"; //$NON-NLS-1$
-				break;
-			case (S_UPDATING) :
-				s = "S_UPDATING"; //$NON-NLS-1$
-				break;
-			case (S_CANCELED) :
-				s = "S_CANCELED"; //$NON-NLS-1$
-				break;
-			case (S_REBUILDING) :
-				s = "S_REBUILDING"; //$NON-NLS-1$
-				break;
-		}
-		return s;
-	}
-
-	int getIndexState() {
-		return JSPCorePlugin.getDefault().getPluginPreferences().getInt(PKEY_INDEX_STATE);
-	}
-
-	void setUpdatingState() {
-		//if (getIndexState() != S_CANCELED)
-		setIndexState(S_UPDATING);
-	}
-
-	void setCanceledState() {
-		setIndexState(JSPIndexManager.S_CANCELED);
-	}
-
-	void setStableState() {
-		//if (getIndexState() != S_CANCELED)
-		setIndexState(S_STABLE);
-	}
-
-	void setRebuildingState() {
-		setIndexState(S_REBUILDING);
-	}
-
-	synchronized void rebuildIndexIfNeeded() {
-		if (getIndexState() != S_STABLE) {
-			rebuildIndex();
-		}
-	}
-
-	void rebuildIndex() {
-
-		if (DEBUG)
-			System.out.println("*** JSP Index unstable, requesting re-indexing"); //$NON-NLS-1$
-
-		getIndexingJob().addJobChangeListener(new JobChangeAdapter() {
-			public void aboutToRun(IJobChangeEvent event) {
-				super.aboutToRun(event);
-				setRebuildingState();
-			}
-
-			public void done(IJobChangeEvent event) {
-				super.done(event);
-				setStableState();
-				getIndexingJob().removeJobChangeListener(this);
-			}
-		});
-		// we're about to reindex everything anyway
-		getProcessFilesJob().clearFiles();
-		getIndexingJob().schedule();
-
-	}
-
-	/**
-	 * Creates and schedules a Job to process collected files. All JSP
-	 * indexing should be done through this method or processFiles(IFile file)
-	 * 
-	 * @param files
-	 */
-	final void indexFiles(IFile[] files) {
-		// don't use this rule
-		// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=4931
-		// processFiles.setRule(new IndexFileRule());
-		processFilesJob.process(files);
-	}
-
-
-	/**
-	 * Package protected for access by inner Job class in resourceChanged(...)
-	 * 
-	 * @return
-	 */
-	JSPResourceVisitor getVisitor() {
-
-		if (this.fVisitor == null) {
-			this.fVisitor = new JSPResourceVisitor();
-		}
-		return this.fVisitor;
-	}
-
-	// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=5091
-	// makes sure IndexManager is aware of our indexes
-	void saveIndexes() {
-		IndexManager indexManager = JavaModelManager.getIndexManager();
-		IPath jspModelWorkingLocation = JSPSearchSupport.getInstance().getModelJspPluginWorkingLocation();
-
-		File folder = new File(jspModelWorkingLocation.toOSString());
-		String[] files = folder.list();
-		String locay = ""; //$NON-NLS-1$
-		Index index = null;
-		try {
-			for (int i = 0; i < files.length; i++) {
-				if (files[i].toLowerCase().endsWith(".index")) { //$NON-NLS-1$
-					locay = jspModelWorkingLocation.toString() + "/" + files[i]; //$NON-NLS-1$
-					// reuse index file
-					index = new Index(locay, "Index for " + locay, true); //$NON-NLS-1$
-					indexManager.saveIndex(index);
-				}
-			}
-		}
-		catch (Exception e) {
-			// we should be shutting down, want to shut down quietly
-			if (DEBUG)
-				e.printStackTrace();
-		}
-	}
-
-	IContentType getJspContentType() {
-		if (this.fContentTypeJSP == null)
-			this.fContentTypeJSP = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-		return this.fContentTypeJSP;
-	}
-
-	/**
-	 * A check to see if the OSGI framework is shutting down.
-	 * 
-	 * @return true if the System Bundle is stopped (ie. the framework is
-	 *         shutting down)
-	 */
-	boolean frameworkIsShuttingDown() {
-		// in the Framework class there's a note:
-		// set the state of the System Bundle to STOPPING.
-		// this must be done first according to section 4.19.2 from the OSGi
-		// R3 spec.
-		boolean shuttingDown = Platform.getBundle(OSGI_FRAMEWORK_ID).getState() == Bundle.STOPPING;
-		if (DEBUG && shuttingDown) {
-			System.out.println("JSPIndexManager: system is shutting down!"); //$NON-NLS-1$
-		}
-		return shuttingDown;
-	}
-
-
-	public void shutdown() {
-
-		// stop listening
-		ResourcesPlugin.getWorkspace().removeResourceChangeListener(jspResourceChangeListener);
-
-
-		// stop any searching
-		JSPSearchSupport.getInstance().setCanceled(true);
-
-		// stop listening to jobs
-		Platform.getJobManager().removeJobChangeListener(indexJobCoordinator);
-
-
-		int maxwait = 5000;
-		if (processFilesJob != null) {
-			processFilesJob.cancel();
-		}
-		// attempt to make sure this indexing job is litterally
-		// done before continuing, since we are shutting down
-		waitTillNotRunning(maxwait, processFilesJob);
-
-		if (indexingJob != null) {
-			indexingJob.cancel();
-		}
-		waitTillNotRunning(maxwait, processFilesJob);
-	}
-
-	private void waitTillNotRunning(int maxSeconds, Job job) {
-		int pauseTime = 10;
-		int maxtries = maxSeconds / pauseTime;
-		int count = 0;
-		while (count++ < maxtries && job.getState() == Job.RUNNING) {
-			try {
-				Thread.sleep(pauseTime);
-				// System.out.println("count: " + count + " max: " +
-				// maxtries);
-			}
-			catch (InterruptedException e) {
-				Logger.logException(e);
-			}
-		}
-	}
-
-	private class IndexJobCoordinator extends JobChangeAdapter {
-		
-		public void aboutToRun(IJobChangeEvent event) {
-			Job jobToCoordinate = event.getJob();
-			if (isJobToAvoid(jobToCoordinate)) {
-				// job will be rescheduled when the job we
-				// are avoiding (eg. build) is done
-				getProcessFilesJob().cancel();
-				//System.out.println("cancel:" + jobToCoordinate.getName());
-			}
-		}
-
-		public void done(IJobChangeEvent event) {
-
-			Job jobToCoordinate = event.getJob();
-			if (isJobToAvoid(jobToCoordinate)) {
-				if (getProcessFilesJob().getFiles().length > 0) {
-					getProcessFilesJob().schedule(500);
-					//System.out.println("schedule:" + jobToCoordinate.getName());
-				}
-					
-
-			}
-		}
-
-		private boolean isJobToAvoid(Job jobToCoordinate) {
-			boolean result = false;
-			if (jobToCoordinate.belongsTo(ResourcesPlugin.FAMILY_AUTO_BUILD) || jobToCoordinate.belongsTo(ResourcesPlugin.FAMILY_MANUAL_BUILD) || jobToCoordinate.belongsTo(ResourcesPlugin.FAMILY_AUTO_REFRESH)) {
-				result = true;
-			}
-			return result;
-
-		}
-
-	}
-
-	private class JSPResourceChangeListener implements IResourceChangeListener {
-
-
-		/**
-		 * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
-		 */
-		public void resourceChanged(IResourceChangeEvent event) {
-
-			if (isInitializing())
-				return;
-
-			// ignore resource changes if already rebuilding
-			if (getIndexState() == S_REBUILDING)
-				return;
-			// previously canceled, needs entire index rebuild
-			if (getIndexState() == S_CANCELED) {
-				// rebuildIndex();
-				// just resume indexing
-				getProcessFilesJob().schedule(500);
-				//System.out.println("schedule: resource changed, previously canceled");
-				return;
-			}
-
-			IResourceDelta delta = event.getDelta();
-			if (delta != null) {
-				// only care about adds or changes right now...
-				int kind = delta.getKind();
-				boolean added = (kind & IResourceDelta.ADDED) == IResourceDelta.ADDED;
-				boolean changed = (kind & IResourceDelta.CHANGED) == IResourceDelta.CHANGED;
-				if (added || changed) {
-
-					// only analyze the full (starting at root) delta
-					// hierarchy
-					if (delta.getFullPath().toString().equals("/")) { //$NON-NLS-1$
-						try {
-							JSPResourceVisitor v = getVisitor();
-							// clear from last run
-							v.reset();
-							// count files, possibly do this in a job too...
-							// don't include PHANTOM resources
-							delta.accept(v, false);
-
-							// process files from this delta
-							IFile[] files = v.getFiles();
-							if (files.length > 0) {
-								/*
-								 * Job change listener should set back to
-								 * stable when finished
-								 */
-								setUpdatingState();
-								// processFiles(files);
-								indexFiles(files);
-							}
-						}
-						catch (CoreException e) {
-							// need to set state here somehow, and reindex
-							// otherwise index will be unreliable
-							if (DEBUG)
-								Logger.logException(e);
-						}
-						catch (Exception e) {
-							// need to set state here somehow, and reindex
-							// otherwise index will be unreliable
-							if (DEBUG)
-								Logger.logException(e);
-						}
-					}
-				}
-
-			}
-		}
-
-	}
-
-	IndexWorkspaceJob getIndexingJob() {
-		return indexingJob;
-	}
-
-	ProcessFilesJob getProcessFilesJob() {
-		return processFilesJob;
-	}
-
-	boolean isInitializing() {
-		return initializing;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPPathIndexer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPPathIndexer.java
deleted file mode 100644
index 9afdda9..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPPathIndexer.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import java.util.HashMap;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jdt.core.search.IJavaSearchScope;
-import org.eclipse.jdt.core.search.SearchPattern;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-
-/**
- * pa_TODO Still need to take into consideration:
- * 	- focus in workspace
- *  - search pattern
- * 
- * @author pavery
- */
-public class JSPPathIndexer {
-
-	// for debugging
-	static final boolean DEBUG;
-	static {
-		String value= Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspsearch"); //$NON-NLS-1$
-		DEBUG= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-	
-	// visitor that retrieves jsp project paths for all jsp files in the workspace
-	class JSPFileVisitor implements IResourceProxyVisitor {
-		// hash map forces only one of each file
-		private HashMap fPaths = new HashMap();
-		IJavaSearchScope fScope = null;
-		SearchPattern fPattern = null;
-
-		public JSPFileVisitor(SearchPattern pattern, IJavaSearchScope scope) {
-			this.fPattern = pattern;
-			this.fScope = scope;
-		}
-
-		public boolean visit(IResourceProxy proxy) throws CoreException {
-			
-			if(JSPSearchSupport.getInstance().isCanceled())
-				return false;
-			
-			if (proxy.getType() == IResource.FILE) {
-
-				IContentType contentTypeJSP = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-				// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=3553
-				// check this before description
-				// check name before actually getting the file (less work)
-				if(contentTypeJSP.isAssociatedWith(proxy.getName())) {
-					
-					IFile file = (IFile)proxy.requestResource();
-					IContentDescription contentDescription = file.getContentDescription();
-					String ctId = null;
-					if (contentDescription != null) {
-						ctId = contentDescription.getContentType().getId();
-					}
-					if (ContentTypeIdForJSP.ContentTypeID_JSP.equals(ctId)) {
-						if (this.fScope.encloses(proxy.requestFullPath().toString())) {
-	
-							if (DEBUG)
-								System.out.println("adding selected index path:" + file.getParent().getFullPath()); //$NON-NLS-1$
-
-							fPaths.put(file.getParent().getFullPath(), JSPSearchSupport.getInstance().computeIndexLocation(file.getParent().getFullPath()));
-						}
-					}
-				}
-				// don't search deeper for files
-				return false;
-			}
-			return true;
-		}
-
-		public IPath[] getPaths() {
-			return (IPath[]) fPaths.values().toArray(new IPath[fPaths.size()]);
-		}
-	}
-
-	public IPath[] getVisibleJspPaths(SearchPattern pattern, IJavaSearchScope scope) {
-
-		JSPFileVisitor jspFileVisitor = new JSPFileVisitor(pattern, scope);
-		try {
-			ResourcesPlugin.getWorkspace().getRoot().accept(jspFileVisitor, 0);
-		}
-		catch (CoreException e) {
-			e.printStackTrace();
-		}
-		return jspFileVisitor.getPaths();
-	}
-}
-
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchDocument.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchDocument.java
deleted file mode 100644
index 78332d1..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchDocument.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.search.SearchParticipant;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationExtension;
-import org.eclipse.jst.jsp.core.internal.modelhandler.ModelHandlerForJSP;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-
-
-/**
- * Created with a .jsp file, but should appear to be a .java file for indexing
- * and searching purposes. There are purposely few fields in this class, and
- * those fields are lightweight since it's possible for many JSP search
- * documents to exist in memory at one time (eg. after importing a project
- * with a large number of JSP files)
- * 
- * @author pavery
- */
-public class JSPSearchDocument {
-
-	private String UNKNOWN_PATH = "**path unknown**"; //$NON-NLS-1$
-	private String fJSPPathString = UNKNOWN_PATH;
-	private String fCUPath = UNKNOWN_PATH;
-	private SearchParticipant fParticipant = null;
-	private long fLastModifiedStamp;
-	private char[] fCachedCharContents;
-	
-	/**
-	 * @param file
-	 * @param participant
-	 * @throws CoreException
-	 */
-	public JSPSearchDocument(String filePath, SearchParticipant participant) {
-
-		this.fJSPPathString = filePath;
-		this.fParticipant = participant;
-	}
-
-	public SearchParticipant getParticipant() {
-		return this.fParticipant;
-	}
-
-	/**
-	 * @see org.eclipse.jdt.core.search.SearchDocument#getCharContents()
-	 */
-	public char[] getCharContents() {
-		
-		if(fCachedCharContents == null || isDirty()) {
-		    JSPTranslation trans = getJSPTranslation();    
-		    fCachedCharContents = trans != null ? trans.getJavaText().toCharArray() : new char[0];
-		    fCUPath = trans.getJavaPath();
-		}
-		return fCachedCharContents;
-	}
-
-	public String getJavaText() {
-		return new String(getCharContents());
-	}
-
-	private IModelManager getModelManager() {
-		return StructuredModelManager.getModelManager();
-	}
-
-	/**
-	 * It's not recommended for clients to hold on to this JSPTranslation
-	 * since it's kind of large. If possible, hold on to the
-	 * JSPSearchDocument, which is more of a lightweight proxy.
-	 * 
-	 * @return the JSPTranslation for the jsp file, or null if it's an
-	 *         unsupported file.
-	 */
-	public final JSPTranslationExtension getJSPTranslation() {
-		JSPTranslationExtension translation = null;
-		IFile jspFile = getFile();
-		if (!JSPSearchSupport.isJsp(jspFile))
-			return translation;
-
-		IStructuredModel model = null;
-		try {
-			// get existing model for read, then get document from it
-			IModelManager modelManager = getModelManager();
-			if (modelManager != null) {
-				jspFile.refreshLocal(IResource.DEPTH_ZERO, new NullProgressMonitor());
-				model = modelManager.getModelForRead(jspFile);
-			}
-			// handle unsupported
-			if (model instanceof IDOMModel) {
-				IDOMModel xmlModel = (IDOMModel)model;
-				setupAdapterFactory(xmlModel);
-				IDOMDocument doc = xmlModel.getDocument();
-				JSPTranslationAdapter adapter = (JSPTranslationAdapter) doc.getAdapterFor(IJSPTranslation.class);
-				translation = adapter.getJSPTranslation();
-			}
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		catch (UnsupportedCharsetExceptionWithDetail e) {
-			// no need to log this. Just consider it an invalid file for our
-			// purposes.
-			// Logger.logException(e);
-		}
-		finally {
-			if (model != null)
-				model.releaseFromRead();
-		}
-		return translation;
-	}
-
-	/**
-	 * add the factory for JSPTranslationAdapter here
-	 * 
-	 * @param sm
-	 */
-	private void setupAdapterFactory(IStructuredModel sm) {
-		ModelHandlerForJSP.ensureTranslationAdapterFactory(sm);
-	}
-
-	/**
-	 * the path to the Java compilation unit
-	 * 
-	 * @see org.eclipse.jdt.core.search.SearchDocument#getPath()
-	 */
-	public String getPath() {
-	    // caching the path since it's expensive to get translation
-		// important that isDirty() check is second to cache modification stamp
-	    if(this.fCUPath == null || isDirty() || this.fCUPath == UNKNOWN_PATH) {
-	        JSPTranslation trans = getJSPTranslation();
-	        if(trans != null) {
-	            this.fCUPath = trans.getJavaPath();
-	            // save since it's expensive to calculate again later
-	            fCachedCharContents = trans.getJavaText().toCharArray();
-	        }
-	    }
-		return fCUPath != null ? fCUPath : UNKNOWN_PATH;
-	}
-
-	public int getJspOffset(int javaOffset) {
-		// copied from JSPTranslation
-		int result = -1;
-		int offsetInRange = 0;
-		Position jspPos, javaPos = null;
-		JSPTranslation trans = getJSPTranslation();
-		if (trans != null) {
-			HashMap java2jspMap = trans.getJava2JspMap();
-
-			// iterate all mapped java ranges
-			Iterator it = java2jspMap.keySet().iterator();
-			while (it.hasNext()) {
-				javaPos = (Position) it.next();
-				// need to count the last position as included
-				if (!javaPos.includes(javaOffset) && !(javaPos.offset + javaPos.length == javaOffset))
-					continue;
-
-				offsetInRange = javaOffset - javaPos.offset;
-				jspPos = (Position) java2jspMap.get(javaPos);
-
-				if (jspPos != null)
-					result = jspPos.offset + offsetInRange;
-				else {
-					Logger.log(Logger.ERROR, "jspPosition was null!" + javaOffset); //$NON-NLS-1$
-				}
-				break;
-			}
-		}
-		return result;
-	}
-
-	public IFile getFile() {
-		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-		IPath jspPath = new Path(this.fJSPPathString);
-		IFile jspFile = root.getFile(jspPath);
-		if (!jspFile.exists()) {
-			// possibly outside workspace
-			jspFile = root.getFileForLocation(jspPath);
-		}
-		return jspFile;
-	}
-
-	
-	private boolean isDirty() {
-		boolean modified = false;
-		IFile f = getFile();
-		if(f != null) {
-			long currentStamp = f.getModificationStamp();
-			if(currentStamp != fLastModifiedStamp)
-				modified = true;
-			fLastModifiedStamp = currentStamp;
-		}
-		return modified;
-	}
-	
-	public void release() {
-		// nothing to do now since JSPTranslation is created on the fly
-	}
-
-	/**
-	 * for debugging
-	 */
-	public String toString() {
-		return "[JSPSearchDocument:" + this.fJSPPathString + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jdt.core.search.SearchDocument#getEncoding()
-	 */
-	public String getEncoding() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jdt.core.search.SearchDocument#getByteContents()
-	 */
-	public byte[] getByteContents() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchParticipant.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchParticipant.java
deleted file mode 100644
index 6e84b2b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchParticipant.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jdt.core.search.IJavaSearchScope;
-import org.eclipse.jdt.core.search.SearchDocument;
-import org.eclipse.jdt.core.search.SearchEngine;
-import org.eclipse.jdt.core.search.SearchParticipant;
-import org.eclipse.jdt.core.search.SearchPattern;
-import org.eclipse.jdt.core.search.SearchRequestor;
-
-/**
- * Integration of JSP w/ java search.
- * 
- * @author pavery
- */
-public class JSPSearchParticipant extends SearchParticipant {
-
-	// for debugging
-	private static final boolean DEBUG = calculateValue();
-
-	private static boolean calculateValue() {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspsearch"); //$NON-NLS-1$
-		boolean debug = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-		return debug;
-	}
-
-	/**
-	 * Important to never return null here or else Java search participation
-	 * will break.
-	 */
-	public SearchDocument getDocument(String documentPath) {
-		SearchDocument sDoc = JSPSearchSupport.getInstance().getSearchDocument(documentPath);
-
-		if (sDoc == null) {
-			// return a dummy doc here so search participation doesn't break
-			return new NullSearchDocument(documentPath);
-		}
-		return sDoc;
-	}
-
-	public String getDescription() {
-		return "JSP"; //$NON-NLS-1$
-	}
-
-	public IPath[] selectIndexes(SearchPattern pattern, IJavaSearchScope scope) {
-		JSPPathIndexer indexer = new JSPPathIndexer();
-		return indexer.getVisibleJspPaths(pattern, scope);
-	}
-
-	public void indexDocument(SearchDocument document, IPath indexPath) {
-		if (!(document instanceof JavaSearchDocumentDelegate))
-			return;
-
-		// use Java search indexing
-		SearchEngine.getDefaultSearchParticipant().indexDocument(document, indexPath);
-	}
-
-	public void locateMatches(SearchDocument[] indexMatches, SearchPattern pattern, IJavaSearchScope scope, SearchRequestor requestor, IProgressMonitor monitor) throws CoreException {
-
-		if (monitor != null && monitor.isCanceled())
-			return;
-
-		// filter out null matches
-		List filtered = new ArrayList();
-		SearchDocument match = null;
-		for (int i = 0; i < indexMatches.length; i++) {
-			if (DEBUG)
-				System.out.println("found possible matching JavaSearchDocumentDelegate: " + indexMatches[i]); //$NON-NLS-1$
-			match = indexMatches[i];
-			if (match != null) {
-				// some matches may be null, or if the index is out of date,
-				// the file may not even exist
-				if (match instanceof JavaSearchDocumentDelegate && ((JavaSearchDocumentDelegate) match).getFile().exists())
-					filtered.add(match);
-			}
-		}
-
-		indexMatches = (SearchDocument[]) filtered.toArray(new SearchDocument[filtered.size()]);
-		SearchEngine.getDefaultSearchParticipant().locateMatches(indexMatches, pattern, scope, requestor, monitor);
-	}
-
-	/**
-	 * @see org.eclipse.jdt.core.search.SearchParticipant#getDocument(org.eclipse.core.resources.IFile)
-	 */
-	public SearchDocument getDocument(IFile file) {
-		// never gets called?
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchScope.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchScope.java
deleted file mode 100644
index 9e5cd4f..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchScope.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.search.IJavaSearchScope;
-
-/**
- * Used to constrain JSP/java search to certain paths and elements.
- * @author pavery
- */
-public class JSPSearchScope implements IJavaSearchScope {
-
-	private boolean fEnclosesAll = false;
-	private List fResourcePaths = null;
-	private List fJavaElements = null;
-
-	public JSPSearchScope() {
-		// empty constructor just returns true for everything
-		// everything is in scope
-		this.fEnclosesAll = true;
-		init();
-	}
-
-	public JSPSearchScope(String[] resourceStringPath) {
-		init();
-		fResourcePaths.addAll(Arrays.asList(resourceStringPath));
-	}
-
-	public JSPSearchScope(IJavaElement[] javaElement) {
-		init();
-		fJavaElements.addAll(Arrays.asList(javaElement));
-	}
-
-	private void init() {
-		this.fResourcePaths = new ArrayList();
-		this.fJavaElements = new ArrayList();
-	}
-
-	public boolean encloses(String resourcePathString) {
-
-		if (this.fEnclosesAll)
-			return true;
-		else if (enclosesPath(resourcePathString))
-			return true;
-
-		return false;
-	}
-
-	public boolean encloses(IJavaElement element) {
-
-		// pa_TOD implement
-		if (this.fEnclosesAll)
-			return true;
-
-		return true;
-	}
-
-	public boolean encloses(IResourceProxy element) {
-
-		if (this.fEnclosesAll)
-			return true;
-		else if (enclosesPath(element.requestFullPath().toOSString()))
-			return true;
-
-		return true;
-	}
-
-	public void addPath(String path) {
-		this.fResourcePaths.add(path);
-	}
-
-	public void addElement(IJavaElement element) {
-		this.fJavaElements.add(element);
-	}
-
-	private boolean enclosesPath(String possible) {
-
-		String[] paths = (String[]) fResourcePaths.toArray(new String[fResourcePaths.size()]);
-		for (int i = 0; i < paths.length; i++) {
-			if (possible.equals(paths[i]))
-				return true;
-		}
-		return false;
-	}
-
-	public String getDescription() {
-
-		return "JSPSearchScope"; //$NON-NLS-1$
-	}
-
-	public IPath[] enclosingProjectsAndJars() {
-		return (IPath[]) fResourcePaths.toArray(new IPath[fResourcePaths.size()]);
-	}
-
-	public boolean includesBinaries() {
-		return false;
-	}
-
-	public boolean includesClasspaths() {
-		return false;
-	}
-
-	public void setIncludesBinaries(boolean includesBinaries) {
-		// do nothing
-	}
-
-	public void setIncludesClasspaths(boolean includesClasspaths) {
-		// do nothing
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchSupport.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchSupport.java
deleted file mode 100644
index 398982a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchSupport.java
+++ /dev/null
@@ -1,554 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import java.io.File;
-import java.util.zip.CRC32;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.search.IJavaSearchConstants;
-import org.eclipse.jdt.core.search.IJavaSearchScope;
-import org.eclipse.jdt.core.search.SearchDocument;
-import org.eclipse.jdt.core.search.SearchEngine;
-import org.eclipse.jdt.core.search.SearchPattern;
-import org.eclipse.jdt.core.search.SearchRequestor;
-import org.eclipse.jdt.internal.core.JavaModelManager;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.java.JSP2ServletNameUtil;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-
-/**
- * Central access to java indexing and search. All contact between JDT indexing
- * and Searching should be done through here.
- * 
- * Clients should access the methods of this class via the single instance via
- * <code>getInstance()</code>.
- * 
- * @author pavery
- */
-public class JSPSearchSupport {
-
-    // for debugging
-    static final boolean DEBUG;
-    static {
-        String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspsearch"); //$NON-NLS-1$
-        DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-    }
-
-    private static JSPSearchSupport singleton = null;
-
-    private JSPSearchParticipant fParticipant = null;
-
-    private IPath fJspPluginLocation = null;
-
-    // pa_TODO may be slow (esp for indexing entire workspace)
-    private final CRC32 fChecksumCalculator = new CRC32();
-
-    /** main cancel montior for all search support */
-    private final IProgressMonitor fMonitor = new NullProgressMonitor();
-
-    private JSPSearchSupport() {
-        // force use of single instance
-    }
-
-    /**
-     * This operation ensures that the live resource's search markers show up in
-     * the open editor. It also allows the ability to pass in a ProgressMonitor
-     */
-    private class SearchJob extends Job implements IJavaSearchConstants {
-
-        String fSearchText = ""; //$NON-NLS-1$
-
-        IJavaSearchScope fScope = null;
-
-        int fSearchFor = FIELD;
-
-        int fLimitTo = ALL_OCCURRENCES;
-
-        int fMatchMode = SearchPattern.R_PATTERN_MATCH;
-
-        boolean fIsCaseSensitive = false;
-
-        SearchRequestor fRequestor = null;
-
-        IJavaElement fElement = null;
-
-        // constructor w/ java element
-        public SearchJob(IJavaElement element, IJavaSearchScope scope, SearchRequestor requestor) {
-
-            super(JSPCoreMessages.JSP_Search + element.getElementName());
-            this.fElement = element;
-            this.fScope = scope;
-            this.fRequestor = requestor;
-        }
-
-        // constructor w/ search text
-        public SearchJob(String searchText, IJavaSearchScope scope, int searchFor, int limitTo, int matchMode, boolean isCaseSensitive, SearchRequestor requestor) {
-
-            super(JSPCoreMessages.JSP_Search + searchText);
-            this.fSearchText = searchText;
-            this.fScope = scope;
-            this.fSearchFor = searchFor;
-            this.fLimitTo = limitTo;
-            this.fMatchMode = matchMode;
-            this.fIsCaseSensitive = isCaseSensitive;
-            this.fRequestor = requestor;
-        }
-
-        public IStatus run(IProgressMonitor jobMonitor) {
-
-            if (jobMonitor != null && jobMonitor.isCanceled())
-                return Status.CANCEL_STATUS;
-            if (JSPSearchSupport.getInstance().isCanceled())
-                return Status.CANCEL_STATUS;
-
-            SearchPattern javaSearchPattern = null;
-            // if an element is available, use that to create search pattern
-            // (eg. LocalVariable)
-            // otherwise use the text and other paramters
-            if (this.fElement != null)
-                javaSearchPattern = SearchPattern.createPattern(this.fElement, this.fLimitTo);
-            else
-                javaSearchPattern = SearchPattern.createPattern(this.fSearchText, this.fSearchFor, this.fLimitTo, this.fMatchMode);
-
-            if (javaSearchPattern != null) {
-                JSPSearchParticipant[] participants = { getSearchParticipant() };
-                SearchEngine engine = new SearchEngine();
-                try {
-                    if (jobMonitor != null)
-                        jobMonitor.beginTask("", IProgressMonitor.UNKNOWN); //$NON-NLS-1$
-                    engine.search(javaSearchPattern, participants, this.fScope, this.fRequestor, jobMonitor);
-                } catch (CoreException e) {
-                    if (DEBUG)
-                        Logger.logException(e);
-                }
-                // non-CoreExceptions will permanently stall the Worker thread
-                catch (Exception e) {
-                    if (DEBUG)
-                        Logger.logException(e);
-                } finally {
-                    if (jobMonitor != null)
-                        jobMonitor.done();
-                }
-            }
-            return Status.OK_STATUS;
-        }
-    }
-
-    // end SearchJob
-    /**
-     * Runnable forces caller to wait until finished (as opposed to using a Job)
-     */
-    private class SearchRunnable implements IWorkspaceRunnable, IJavaSearchConstants {
-
-        String fSearchText = ""; //$NON-NLS-1$
-
-        IJavaSearchScope fScope = null;
-
-        int fSearchFor = FIELD;
-
-        int fLimitTo = ALL_OCCURRENCES;
-
-        int fMatchMode = SearchPattern.R_PATTERN_MATCH;
-
-        boolean fIsCaseSensitive = false;
-
-        SearchRequestor fRequestor = null;
-
-        IJavaElement fElement = null;
-
-        // constructor w/ java element
-        public SearchRunnable(IJavaElement element, IJavaSearchScope scope, SearchRequestor requestor) {
-
-            this.fElement = element;
-            this.fScope = scope;
-            this.fRequestor = requestor;
-        }
-
-        // constructor w/ search text
-        public SearchRunnable(String searchText, IJavaSearchScope scope, int searchFor, int limitTo, int matchMode, boolean isCaseSensitive, SearchRequestor requestor) {
-
-            this.fSearchText = searchText;
-            this.fScope = scope;
-            this.fSearchFor = searchFor;
-            this.fLimitTo = limitTo;
-            this.fMatchMode = matchMode;
-            this.fIsCaseSensitive = isCaseSensitive;
-            this.fRequestor = requestor;
-        }
-
-        public void run(IProgressMonitor monitor) throws CoreException {
-
-            if (monitor != null && monitor.isCanceled())
-                return;
-            if (JSPSearchSupport.getInstance().isCanceled())
-                return;
-
-            SearchPattern javaSearchPattern = null;
-            // if an element is available, use that to create search pattern
-            // (eg. LocalVariable)
-            // otherwise use the text and other paramters
-            if (this.fElement != null)
-                javaSearchPattern = SearchPattern.createPattern(this.fElement, fLimitTo);
-            else
-                javaSearchPattern = SearchPattern.createPattern(fSearchText, fSearchFor, fLimitTo, fMatchMode);
-
-            if (javaSearchPattern != null) {
-                JSPSearchParticipant[] participants = { getSearchParticipant() };
-                SearchEngine engine = new SearchEngine();
-                try {
-                    if (monitor != null)
-                        monitor.beginTask("", 0); //$NON-NLS-1$
-                    engine.search(javaSearchPattern, participants, fScope, fRequestor, monitor);
-                } catch (CoreException e) {
-                    Logger.logException(e);
-                    //throw e;
-                }
-                // non-CoreExceptions will permanently stall the Worker thread
-                catch (Exception e) {
-                    Logger.logException(e);
-                } finally {
-                    if (monitor != null)
-                        monitor.done();
-                }
-            }
-        }
-    }
-
-    // end SearchRunnable
-
-    /**
-     * Clients should access the methods of this class via the single instance
-     * via getInstance()
-     * 
-     * @return
-     */
-    public synchronized static JSPSearchSupport getInstance() {
-
-        if (singleton == null)
-            singleton = new JSPSearchSupport();
-        return singleton;
-    }
-
-    /**
-     * Utility method to check if a file is a jsp file (since this is done
-     * frequently)
-     */
-    public static boolean isJsp(IFile file) {
-    	// (pa) 20051025 removing deep content type check
-    	// because this method is called frequently
-    	// and IO is expensive
-        boolean isJsp = false;
-
-        if (file != null && file.exists()) {
-        	
-            IContentType contentTypeJSP = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-            // check this before description, it's less expensive
-            if (contentTypeJSP.isAssociatedWith(file.getName())) {
-            	isJsp = true;
-            }
-        }
-
-        return isJsp;
-    }
-
-    /**
-     * schedules a search document representing this JSP file for indexing (by
-     * the java indexer)
-     * 
-     * @param file
-     *            the JSP file
-     * @return true if indexing was successful, false otherwise
-     * @throws CoreException
-     */
-    public SearchDocument addJspFile(IFile file) {
-        if (JSPSearchSupport.getInstance().isCanceled() || !file.isAccessible()) {
-            return null;
-        }
-
-        if (DEBUG)
-            System.out.println("adding JSP file:" + file.getFullPath()); //$NON-NLS-1$
-
-        // create
-        SearchDocument delegate = createSearchDocument(file);
-        // null if not a jsp file
-        if (delegate != null) {
-            try {
-                getSearchParticipant().scheduleDocumentIndexing(delegate, computeIndexLocation(file.getParent().getFullPath()));
-            } catch (Exception e) {
-                // ensure that failure here doesn't keep other documents from
-                // being indexed
-                // if peformed in a batch call (like JSPIndexManager)
-                if (DEBUG)
-                    e.printStackTrace();
-            }
-        }
-
-        if (DEBUG)
-            System.out.println("scheduled" + delegate + "for indexing"); //$NON-NLS-1$ //$NON-NLS-2$
-
-        return delegate;
-    }
-    
-    /**
-     * Perform a java search w/ the given parameters. Runs in a background Job
-     * (results may still come in after this method call)
-     * 
-     * @param searchText
-     *            the string of text to search on
-     * @param searchFor
-     *            IJavaSearchConstants.TYPE, METHOD, FIELD, PACKAGE, etc...
-     * @param limitTo
-     *            IJavaSearchConstants.DECLARATIONS,
-     *            IJavaSearchConstants.REFERENCES,
-     *            IJavaSearchConstants.IMPLEMENTORS, or
-     *            IJavaSearchConstants.ALL_OCCURRENCES
-     * @param matchMode
-     *            allow * wildcards or not
-     * @param isCaseSensitive
-     * @param requestor
-     *            passed in to accept search matches (and do "something" with
-     *            them)
-     */
-    public void search(String searchText, IJavaSearchScope scope, int searchFor, int limitTo, int matchMode, boolean isCaseSensitive, SearchRequestor requestor) {
-
-        JSPIndexManager.getInstance().rebuildIndexIfNeeded();
-
-        SearchJob job = new SearchJob(searchText, scope, searchFor, limitTo, matchMode, isCaseSensitive, requestor);
-        setCanceled(false);
-        job.setUser(true);
-        // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=5032
-        // pops up user operation blocked dialog if you perform a long search,
-        // then open a file because it locks the workspace
-        //job.setRule(ResourcesPlugin.getWorkspace().getRoot());
-        job.schedule();
-    }
-
-    /**
-     * Search for an IJavaElement, constrained by the given parameters. Runs in
-     * a background Job (results may still come in after this method call)
-     * 
-     * @param element
-     * @param scope
-     * @param requestor
-     */
-    public void search(IJavaElement element, IJavaSearchScope scope, SearchRequestor requestor) {
-
-        JSPIndexManager.getInstance().rebuildIndexIfNeeded();
-
-        SearchJob job = new SearchJob(element, scope, requestor);
-        setCanceled(false);
-        job.setUser(true);
-        // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=5032
-        //job.setRule(ResourcesPlugin.getWorkspace().getRoot());
-        job.schedule();
-    }
-
-    /**
-     * Search for an IJavaElement, constrained by the given parameters. Runs in
-     * an IWorkspace runnable (results will be reported by the end of this
-     * method)
-     * 
-     * @param element
-     * @param scope
-     * @param requestor
-     */
-    public void searchRunnable(IJavaElement element, IJavaSearchScope scope, SearchRequestor requestor) {
-
-        JSPIndexManager.getInstance().rebuildIndexIfNeeded();
-
-        SearchRunnable searchRunnable = new SearchRunnable(element, scope, requestor);
-        try {
-            setCanceled(false);
-            ResourcesPlugin.getWorkspace().run(searchRunnable, JSPSearchSupport.getInstance().getProgressMonitor());
-        } catch (CoreException e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * @param jspFile
-     * @return SearchDocument if the file is not null, exists, and is a JSP
-     *         file, otherwise null.
-     */
-    private SearchDocument createSearchDocument(IFile jspFile) {
-
-        JavaSearchDocumentDelegate delegate = null;
-        if (jspFile != null && jspFile.exists() && isJsp(jspFile)) {
-
-            delegate = new JavaSearchDocumentDelegate(new JSPSearchDocument(jspFile.getFullPath().toString(), getSearchParticipant()));
-        }
-        return delegate;
-
-    }
-
-    /**
-     * Centralized place to access JSPSearchDocuments (used by
-     * JSPSearchParticipant and JSPSearchRequestor)
-     * 
-     * @param searchDocPath
-     * @param doc
-     * @return the JSPSearchDocument or null if one is not found
-     */
-    public SearchDocument getSearchDocument(String searchDocPath) {
-         
-        SearchDocument delegate = null;
-        IFile f = fileForCUPath(searchDocPath);
-        if (f != null) {
-            delegate = createSearchDocument(f);
-        } else {
-            // handle failure case... (file deleted maybe?)
-        }
-        return delegate;
-    }
-
-    /**
-     * Unmangles the searchDocPath and returns the corresponding JSP file.
-     * 
-     * @param searchDocPath
-     */
-    private IFile fileForCUPath(String searchDocPath) {
-    
-        String[] split = searchDocPath.split("/"); //$NON-NLS-1$
-        String classname = split[split.length - 1];
-
-        // ignore anything but .java matches (like .class binary matches)
-        if(!searchDocPath.endsWith(".java")) { //$NON-NLS-1$
-            return null;
-        }
-
-        String filePath = JSP2ServletNameUtil.unmangle(classname);
-       
-        // try absolute path
-        IFile f = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(filePath));
-        // workspace relative then
-        if(f == null) {
-            // https://bugs.eclipse.org/bugs/show_bug.cgi?id=86009
-            // must have a project name as well
-            // which would mean >= 2 path segments
-            IPath path = new Path(filePath);
-            if(path.segmentCount() >= 2) {
-                f = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-            }
-        }
-        return f;
-    }
-
-    JSPSearchParticipant getSearchParticipant() {
-
-        if (this.fParticipant == null)
-            this.fParticipant = new JSPSearchParticipant();
-        return this.fParticipant;
-    }
-
-    // This is called from JSPPathIndexer
-    // pa_TODO
-    //how can we make sure participant indexLocations are updated at startup?
-    public final IPath computeIndexLocation(IPath containerPath) {
-
-        IPath indexLocation = null;
-        // we don't want to inadvertently use a JDT Index
-        // we want to be sure to use the Index from the JSP location
-        //Object obj = indexLocations.get(containerPath);
-        //if (obj != null) {
-        //    indexLocation = (String) obj;
-        //} else {
-            // create index entry
-            String pathString = containerPath.toOSString();
-            this.fChecksumCalculator.reset();
-            this.fChecksumCalculator.update(pathString.getBytes());
-            String fileName = Long.toString(this.fChecksumCalculator.getValue()) + ".index"; //$NON-NLS-1$
-            // this is the only difference from
-            // IndexManager#computeIndexLocation(...)
-            indexLocation = getModelJspPluginWorkingLocation().append(fileName);
-
-            // pa_TODO need to add to java path too, so JDT search support knows
-            // there should be a non internal way to do this.
-            // https://bugs.eclipse.org/bugs/show_bug.cgi?id=77564
-            JavaModelManager.getIndexManager().indexLocations.put(containerPath, indexLocation);
-        //}
-        return indexLocation;
-    }
-
-    // copied from JDT IndexManager
-    public IPath getModelJspPluginWorkingLocation() {
-
-        if (this.fJspPluginLocation != null)
-            return this.fJspPluginLocation;
-
-        // Append the folder name "jspsearch" to keep the state location area cleaner
-        IPath stateLocation = JSPCorePlugin.getDefault().getStateLocation().append("jspsearch");
-
-        // pa_TODO workaround for
-        // https://bugs.eclipse.org/bugs/show_bug.cgi?id=62267
-        // copied from IndexManager
-        String device = stateLocation.getDevice();
-        if (device != null && device.charAt(0) == '/')
-            stateLocation = stateLocation.setDevice(device.substring(1));
-
-        // ensure that it exists on disk
-        File folder = new File(stateLocation.toOSString());
-		if (!folder.isDirectory()) {
-			try {
-				folder.mkdir();
-			}
-			catch (SecurityException e) {
-			}
-		}
-
-        return this.fJspPluginLocation = stateLocation;
-    }
-
-    /**
-     * JSP Indexing and Search jobs check this
-     * 
-     * @return
-     */
-    public synchronized final void setCanceled(boolean cancel) {
-    	//System.out.println("search support monitor" + fMonitor);
-        fMonitor.setCanceled(cancel);
-    }
-
-    /**
-     * JSP Indexing and Search jobs check this
-     * 
-     * @return
-     */
-    public synchronized final boolean isCanceled() {
-
-        return fMonitor.isCanceled();
-    }
-
-    /**
-     * JSP Indexing and Search jobs check this
-     * 
-     * @return
-     */
-    public final IProgressMonitor getProgressMonitor() {
-
-        return this.fMonitor;
-    }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JavaSearchDocumentDelegate.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JavaSearchDocumentDelegate.java
deleted file mode 100644
index 2e07148..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JavaSearchDocumentDelegate.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jdt.core.search.SearchDocument;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationExtension;
-
-
-/**
- * Wrapper method to set getPath() path to be the path of the compilation unit 
- * for the jsp file. (since it's a final method, it needs to be set via constructor)
- * 
- * @author pavery
- */
-public class JavaSearchDocumentDelegate extends SearchDocument {
-	
-	private JSPSearchDocument fJSPSearchDoc = null;
-	
-	public JavaSearchDocumentDelegate(JSPSearchDocument jspSearchDoc) {
-		
-		super(jspSearchDoc.getPath(), jspSearchDoc.getParticipant());
-		this.fJSPSearchDoc = jspSearchDoc;
-	}
-
-	public byte[] getByteContents() {
-		
-		return this.fJSPSearchDoc.getByteContents();
-	}
-
-	public char[] getCharContents() {
-		
-		return this.fJSPSearchDoc.getCharContents();
-	}
-	
-	public String getJavaText() {
-		return this.fJSPSearchDoc.getJavaText();
-	}
-
-	public String getEncoding() {
-		
-		return this.fJSPSearchDoc.getEncoding();
-	}
-	
-	public IFile getFile() {
-		
-		return this.fJSPSearchDoc.getFile();
-	}
-	
-	public JSPTranslationExtension getJspTranslation() {
-		
-		return this.fJSPSearchDoc.getJSPTranslation();
-	}
-	
-	public int getJspOffset(int javaOffset) {
-		
-		return this.fJSPSearchDoc.getJspOffset(javaOffset);
-	}
-	
-	public void release() {
-		this.fJSPSearchDoc.release();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/NullSearchDocument.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/NullSearchDocument.java
deleted file mode 100644
index ad99a10..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/NullSearchDocument.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.java.search;
-
-import org.eclipse.jdt.core.search.SearchDocument;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslator;
-
-
-
-/**
- * An empty servlet, safe for Java search participation
- * 
- * @author pavery
- */
-public class NullSearchDocument extends SearchDocument {
-	
-	StringBuffer fEmptyServletBuffer = null;
-	
-	public NullSearchDocument(String documentPath) {
-		super(documentPath, new JSPSearchParticipant()); //$NON-NLS-1$
-		this.fEmptyServletBuffer = new JSPTranslator().getEmptyTranslation();
-	}
-	
-	public byte[] getByteContents() {
-		return this.fEmptyServletBuffer.toString().getBytes();
-	}
-	
-	public char[] getCharContents() {
-		return this.fEmptyServletBuffer.toString().toCharArray();
-	}
-	
-	public String getEncoding() {
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/EmbeddedTypeStateData.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/EmbeddedTypeStateData.java
deleted file mode 100644
index 9ee8a41..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/EmbeddedTypeStateData.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelhandler;
-
-
-
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.EmbeddedTypeHandler;
-
-/**
- * This class is only for remembering old and new embedded handlers, 
- * in the event a re-init is needed.
- */
-public class EmbeddedTypeStateData {
-
-
-	EmbeddedTypeHandler oldHandler;
-	EmbeddedTypeHandler newHandler;
-
-	public EmbeddedTypeStateData(EmbeddedTypeHandler oldHandler, EmbeddedTypeHandler newHandler) {
-		this.oldHandler = oldHandler;
-		this.newHandler = newHandler;
-	}
-
-	public EmbeddedTypeHandler getNewHandler() {
-		return newHandler;
-	}
-
-	public EmbeddedTypeHandler getOldHandler() {
-		return oldHandler;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/JSPModelLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/JSPModelLoader.java
deleted file mode 100644
index a646956..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/JSPModelLoader.java
+++ /dev/null
@@ -1,648 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelhandler;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentPartitioner;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentProperties;
-import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapter;
-import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapterFactory;
-import org.eclipse.jst.jsp.core.internal.document.PageDirectiveWatcherFactory;
-import org.eclipse.jst.jsp.core.internal.domdocument.DOMModelForJSP;
-import org.eclipse.jst.jsp.core.internal.encoding.IJSPHeadContentDetector;
-import org.eclipse.jst.jsp.core.internal.encoding.JSPDocumentHeadContentDetector;
-import org.eclipse.jst.jsp.core.internal.encoding.JSPDocumentLoader;
-import org.eclipse.jst.jsp.core.internal.modelquery.JSPModelQueryAdapterImpl;
-import org.eclipse.jst.jsp.core.internal.modelquery.ModelQueryAdapterFactoryForJSP;
-import org.eclipse.jst.jsp.core.internal.parser.JSPReParser;
-import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.IContentDescriptionForJSP;
-import org.eclipse.jst.jsp.core.internal.text.StructuredTextPartitionerForJSP;
-import org.eclipse.wst.html.core.internal.provisional.contenttype.ContentTypeFamilyForHTML;
-import org.eclipse.wst.html.core.internal.provisional.contenttype.ContentTypeIdForHTML;
-import org.eclipse.wst.html.core.internal.text.StructuredTextPartitionerForHTML;
-import org.eclipse.wst.sse.core.internal.PropagatingAdapter;
-import org.eclipse.wst.sse.core.internal.document.DocumentReader;
-import org.eclipse.wst.sse.core.internal.document.IDocumentLoader;
-import org.eclipse.wst.sse.core.internal.document.StructuredDocumentFactory;
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.EmbeddedTypeHandler;
-import org.eclipse.wst.sse.core.internal.ltk.parser.JSPCapableParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
-import org.eclipse.wst.sse.core.internal.model.AbstractModelLoader;
-import org.eclipse.wst.sse.core.internal.modelhandler.EmbeddedTypeRegistry;
-import org.eclipse.wst.sse.core.internal.modelhandler.EmbeddedTypeRegistryImpl;
-import org.eclipse.wst.sse.core.internal.provisional.IModelLoader;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument;
-import org.eclipse.wst.sse.core.internal.util.Assert;
-import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.xml.core.internal.DebugAdapterFactory;
-import org.eclipse.wst.xml.core.internal.document.DOMModelImpl;
-import org.eclipse.wst.xml.core.internal.propagate.PropagatingAdapterFactoryImpl;
-import org.eclipse.wst.xml.core.internal.provisional.contenttype.ContentTypeIdForXML;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapter;
-import org.eclipse.wst.xml.core.internal.text.rules.StructuredTextPartitionerForXML;
-import org.w3c.dom.Document;
-
-public class JSPModelLoader extends AbstractModelLoader {
-	protected final int MAX_BUFFERED_SIZE_FOR_RESET_MARK = 200000;
-
-	/**
-	 * DMW - Note: I think the embeddedTypeRegistry in IModelManager can be
-	 * removed
-	 */
-	private EmbeddedTypeRegistry embeddedContentTypeRegistry;
-	private final static String DEFAULT_MIME_TYPE = "text/html"; //$NON-NLS-1$
-	private final static String DEFAULT_LANGUAGE = "java"; //$NON-NLS-1$
-
-	public JSPModelLoader() {
-		super();
-	}
-
-	/**
-	 * Gets the embeddedContentTypeRegistry.
-	 * 
-	 * @return Returns a EmbeddedContentTypeRegistry
-	 */
-	private EmbeddedTypeRegistry getEmbeddedContentTypeRegistry() {
-		if (embeddedContentTypeRegistry == null) {
-			embeddedContentTypeRegistry = EmbeddedTypeRegistryImpl.getInstance();
-		}
-		return embeddedContentTypeRegistry;
-	}
-
-	public IStructuredModel newModel() {
-		DOMModelForJSP model = new DOMModelForJSP();
-		return model;
-	}
-
-	/**
-	 * For JSP files, text/html is the default content type. This may want
-	 * this different for types like jsv (jsp for voice xml) For now, hard
-	 * code to new instance. In future, should get instance from registry.
-	 * 
-	 * Specification cites HTML as the default contentType.
-	 */
-	private EmbeddedTypeHandler getJSPDefaultEmbeddedType(IStructuredModel model) {
-		EmbeddedTypeRegistry reg = getEmbeddedContentTypeRegistry();
-
-		String mimeType = null;
-		// default embedded type for fragments
-		if (model != null) {
-			IFile file = getFile(model);
-			if (file != null) {
-				mimeType = JSPFContentProperties.getProperty(JSPFContentProperties.JSPCONTENTTYPE, file, true);
-			}
-		}
-		mimeType = mimeType == null ? getDefaultMimeType() : mimeType;
-		return reg.getTypeFor(mimeType);
-	}
-
-	/**
-	 * Method getDefaultMimeType.
-	 * 
-	 * @return String
-	 */
-	private String getDefaultMimeType() {
-		return DEFAULT_MIME_TYPE;
-	}
-
-	/**
-	 * This method must return a new instance of IStructuredDocument, that has
-	 * been initialized with appropriate parser. For many loaders, the
-	 * (default) parser used is known for any input. For others, the correct
-	 * parser (and its initialization) is normall dependent on the content of
-	 * the file. This no-argument method should assume "empty input" and would
-	 * therefore return the default parser for the default contentType.
-	 * 
-	 * If the parser is to handle tag libraries, it must have a TaglibSupport
-	 * object with a valid URIResolver and this IStructuredDocument attached
-	 * to it before the contents are set on the IStructuredDocument.
-	 */
-	public IStructuredDocument newStructuredDocument() {
-		IStructuredDocument structuredDocument = StructuredDocumentFactory.getNewStructuredDocumentInstance(getParser());
-		((BasicStructuredDocument) structuredDocument).setReParser(new JSPReParser());
-		// structuredDocument.setDocumentPartitioner(new
-		// JSPJavaDocumentPartioner());
-		// even though this is an "empty model" ... we want it to have at
-		// least the
-		// default embeddeded content type handler
-		EmbeddedTypeHandler embeddedType = getJSPDefaultEmbeddedType(null);
-		embeddedType.initializeParser((JSPCapableParser) structuredDocument.getParser());
-		return structuredDocument;
-	}
-
-	public RegionParser getParser() {
-		// remember, the Loader
-		// will need to finish initialization of parser
-		// based on "embedded content"
-		return new JSPSourceParser();
-	}
-
-	protected void preLoadAdapt(IStructuredModel structuredModel) {
-		super.preLoadAdapt(structuredModel);
-		IDOMModel domModel = (IDOMModel) structuredModel;
-		//
-		// document must have already been set for this to
-		// work.
-		Document document = domModel.getDocument();
-		Assert.isNotNull(document);
-		// if there is a model in the adapter, this will adapt it to
-		// first node. After that the PropagatingAdater spreads over the
-		// children being
-		// created. Each time that happends, a side effect is to
-		// also "spread" sprecific registered adapters,
-		// they two can propigate is needed.
-		// This 'get' causes first to be be attached.
-		PropagatingAdapter propagatingAdapter = (PropagatingAdapter) ((INodeNotifier) document).getAdapterFor(PropagatingAdapter.class);
-		// may make this easier to use in futue
-		propagatingAdapter.addAdaptOnCreateFactory(new PageDirectiveWatcherFactory());
-		if (Debug.debugNotificationAndEvents) {
-			propagatingAdapter.addAdaptOnCreateFactory(new DebugAdapterFactory());
-		}
-		// For JSPs, the ModelQueryAdapter must be "attached" to the document
-		// before content is set in the model, so taglib initization can
-		// take place.
-		((INodeNotifier) document).getAdapterFor(ModelQueryAdapter.class);
-		//
-
-	}
-
-	/**
-	 * This method must return those factories which must be attached to the
-	 * structuredModel before content is applied.
-	 */
-	public List getAdapterFactories() {
-		List result = new ArrayList();
-		INodeAdapterFactory factory = null;
-		//
-		factory = new ModelQueryAdapterFactoryForJSP();
-		result.add(factory);
-		factory = new PropagatingAdapterFactoryImpl();
-		result.add(factory);
-		factory = new PageDirectiveAdapterFactory();
-		result.add(factory);
-
-		return result;
-	}
-
-
-	public IJSPHeadContentDetector getHeadParser() {
-		return new JSPDocumentHeadContentDetector();
-	}
-
-	private IContentDescription getContentDescription(IDocument doc) {
-		if (doc == null)
-			return null;
-		DocumentReader reader = new DocumentReader(doc);
-		return getContentDescription(reader);
-	}
-
-	/**
-	 * Returns content description for an input stream Assumes it's JSP
-	 * content. Closes the input stream when finished.
-	 * 
-	 * @param reader
-	 * @return the IContentDescription for in, or null if in is null
-	 */
-	private IContentDescription getContentDescription(Reader reader) {
-
-		if (reader == null)
-			return null;
-
-		IContentDescription desc = null;
-		try {
-
-			IContentType contentTypeJSP = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-			desc = contentTypeJSP.getDescriptionFor(reader, IContentDescription.ALL);
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (reader != null) {
-				try {
-					reader.close();
-				}
-				catch (IOException e) {
-					Logger.logException(e);
-				}
-			}
-		}
-		return desc;
-	}
-
-	private IFile getFile(IStructuredModel model) {
-		if (model != null) {
-			String location = model.getBaseLocation();
-			if (location != null) {
-				IPath path = new Path(location);
-				if (!path.toFile().exists() && path.segmentCount() > 1) {
-					return ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-				}
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Method getLanguage.
-	 * 
-	 * @param model
-	 * @return String
-	 */
-	private String getLanguage(IStructuredModel model) {
-		String result = null;
-		// first check the model (document itself) to see if contains
-		result = getLanguageFromStructuredDocument(model.getStructuredDocument());
-		// Note: if model contains an unsupported
-		// language, we'll even return it,
-		// since who knows what future holds.
-
-		// get default language specified in properties page
-		IFile file = getFile(model);
-		result = JSPFContentProperties.getProperty(JSPFContentProperties.JSPLANGUAGE, file, true);
-
-		// always return something
-		if (result == null) {
-			result = DEFAULT_LANGUAGE;
-		}
-		return result;
-	}
-
-	/**
-	 * Method getLanguageFromStructuredDocument.
-	 * 
-	 * @param structuredDocument
-	 * @return String
-	 */
-	private String getLanguageFromStructuredDocument(IStructuredDocument structuredDocument) {
-		if (structuredDocument == null)
-			return null;
-		String result = null;
-		// bascially same algorithm as get encoding or
-		// get content type from structuredDocument.
-		IJSPHeadContentDetector localHeadParser = getHeadParser();
-		// we can be assured that its already been
-		// parsed. If not call parseHeaderForPageDirective()
-		// before calling getLanguage;
-		localHeadParser.set(structuredDocument);
-		try {
-			result = localHeadParser.getLanguage();
-		}
-		catch (IOException e) {
-			// impossible
-			// TODO need to reconsider design to avoid
-			throw new Error(e);
-		}
-		return result;
-	}
-
-	/**
-	 * This is "reinitialize" since there should always be at least the
-	 * default one assigned, before we start checking the stream
-	 */
-	private void reInitializeEmbeddedType(IStructuredModel model, EmbeddedTypeHandler oldEmbeddedContentType, EmbeddedTypeHandler newEmbeddedContentType) {
-		// check program logic
-		Assert.isNotNull(oldEmbeddedContentType, "Program error: invalid call during model initialization"); //$NON-NLS-1$
-		// once we know the embedded content type, we need to set it in the
-		// PageDirectiveAdapter ... the order of initialization is
-		// critical here, the doc must have been created, but its contents not
-		// set yet,
-		// and all factories must have been set up also.
-		IDOMModel domModel = (IDOMModel) model;
-		IStructuredDocument structuredDocument = model.getStructuredDocument();
-		IDOMDocument document = domModel.getDocument();
-		PageDirectiveAdapter pageDirectiveAdapter = (PageDirectiveAdapter) document.getExistingAdapter(PageDirectiveAdapter.class);
-		// ==> // PropagatingAdapter propagatingAdapter = (PropagatingAdapter)
-		// ((INodeNotifier)
-		// document).getExistingAdapter(PropagatingAdapter.class);
-		// ==> // ModelQueryAdapter modelQueryAdapter = (ModelQueryAdapter)
-		// ((INodeNotifier)
-		// document).getExistingAdapter(ModelQueryAdapter.class);
-		oldEmbeddedContentType.uninitializeFactoryRegistry(model.getFactoryRegistry());
-		oldEmbeddedContentType.uninitializeParser((JSPCapableParser) structuredDocument.getParser());
-		// since 'document' is not recreated in this
-		// reinit path, we need to remove all adapters,
-		// except for the propagated adapters (including page
-		// directive adapter, and model query adapter).
-		// to accomplish this, we'll just remove all, then
-		// add back with a call to pre-load adapt.
-		// let clients decide to unload adapters from document
-		// Collection oldAdapters = document.getAdapters();
-		// Iterator oldAdaptersIterator = oldAdapters.iterator();
-		// while (oldAdaptersIterator.hasNext()) {
-		// INodeAdapter oldAdapter = (INodeAdapter)
-		// oldAdaptersIterator.next();
-		// if (oldAdapter != pageDirectiveAdapter && oldAdapter !=
-		// propagatingAdapter && oldAdapter != modelQueryAdapter) {
-		// // DO NOT remove directly!
-		// // can change contents while in notifity loop!
-		// //oldAdaptersIterator.remove();
-		// document.removeAdapter(oldAdapter);
-		// }
-		// }
-		// DMW: I believe something like the following is needed,
-		// since releases cached adapters
-		// if (document instanceof DocumentImpl) {
-		// ((DocumentImpl) document).releaseDocumentType();
-		// ((DocumentImpl) document).releaseStyleSheets();
-		// }
-		// remember, embedded type factories are automatically cleared when
-		// embededType changed
-		pageDirectiveAdapter.setEmbeddedType(newEmbeddedContentType);
-		// // but still need to clear the page directive watchers, and let
-		// them be rediscovered (with new, accurate node as target)
-		// pageDirectiveAdapter.clearPageWatchers();
-		if (newEmbeddedContentType != null) {
-
-			// need to null out or else ModelParserAdapter
-			// won't get reinitialized
-			((DOMModelImpl) model).setModelParser(null);
-
-			newEmbeddedContentType.initializeFactoryRegistry(model.getFactoryRegistry());
-			newEmbeddedContentType.initializeParser((JSPCapableParser) structuredDocument.getParser());
-
-			// partitioner setup is the responsibility of this loader
-			IDocumentPartitioner documentPartitioner = structuredDocument.getDocumentPartitioner();
-			// ISSUE: this logic is flawed, not sure of original intent, but
-			// added null/type checks for safety.
-			if (documentPartitioner != null && documentPartitioner instanceof StructuredTextPartitionerForJSP) {
-				if (newEmbeddedContentType.getFamilyId().equals(ContentTypeIdForXML.ContentTypeID_XML)) {
-					((StructuredTextPartitionerForJSP) documentPartitioner).setEmbeddedPartitioner(new StructuredTextPartitionerForXML());
-				}
-				else if (newEmbeddedContentType.getFamilyId().equals(ContentTypeIdForHTML.ContentTypeID_HTML)) {
-					((StructuredTextPartitionerForJSP) documentPartitioner).setEmbeddedPartitioner(new StructuredTextPartitionerForHTML());
-				}
-			}
-		}
-		// adding language here, in this convienent central
-		// location, but some obvious renaming or refactoring
-		// wouldn't hurt, in future.
-		// I needed to add this language setting for JSP Fragment support
-		// Note: this is the one that counts, since at this point,
-		// the model has an ID, so we can look up IFile, etc.
-		String language = getLanguage(model);
-		if (language != null && language.length() > 0) {
-			pageDirectiveAdapter.setLanguage(language);
-		}
-	}
-
-	/**
-	 * This is "reinitialize" since there should always be at least the
-	 * default one assigned, before we start checking the stream
-	 */
-	private void initCloneOfEmbeddedType(IStructuredModel model, EmbeddedTypeHandler oldEmbeddedContentType, EmbeddedTypeHandler newEmbeddedContentType) {
-		// check program logic
-		Assert.isNotNull(oldEmbeddedContentType, "Program error: invalid call during model initialization"); //$NON-NLS-1$
-		// once we know the embedded content type, we need to set it in the
-		// PageDirectiveAdapter ... the order of initialization is
-		// critical here, the doc must have been created, but its contents not
-		// set yet,
-		// and all factories must have been set up also.
-		IDOMModel domModel = (IDOMModel) model;
-		IStructuredDocument structuredDocument = model.getStructuredDocument();
-		IDOMDocument document = domModel.getDocument();
-		PageDirectiveAdapter pageDirectiveAdapter = (PageDirectiveAdapter) document.getAdapterFor(PageDirectiveAdapter.class);
-		// ==> // PropagatingAdapter propagatingAdapter = (PropagatingAdapter)
-		// ((INodeNotifier) document).getAdapterFor(PropagatingAdapter.class);
-		// ==> // ModelQueryAdapter modelQueryAdapter = (ModelQueryAdapter)
-		// ((INodeNotifier) document).getAdapterFor(ModelQueryAdapter.class);
-		// because, even in the clone case, the model has been paritally
-		// intialized with
-		// the old embedded type (during createModel), we need to unitialize
-		// parts of it, based on the old (or default) ones
-		oldEmbeddedContentType.uninitializeFactoryRegistry(model.getFactoryRegistry());
-		oldEmbeddedContentType.uninitializeParser((JSPCapableParser) structuredDocument.getParser());
-		// remember, embedded type factories are automatically cleared when
-		// embededType changed
-		pageDirectiveAdapter.setEmbeddedType(newEmbeddedContentType);
-		if (newEmbeddedContentType != null) {
-			newEmbeddedContentType.initializeFactoryRegistry(model.getFactoryRegistry());
-			newEmbeddedContentType.initializeParser((JSPCapableParser) structuredDocument.getParser());
-		}
-		// adding language here, in this convienent central
-		// location, but some obvious renaming or refactoring
-		// wouldn't hurt, in future.
-		// I needed to add this language setting for JSP Fragment support
-		// Note: this is the one that counts, since at this point,
-		// the model has an ID, so we can look up IFile, etc.
-		String language = getLanguage(model);
-		if (language != null && language.length() > 0) {
-			pageDirectiveAdapter.setLanguage(language);
-		}
-	}
-
-	private EmbeddedTypeHandler getEmbeddedType(IStructuredModel model) {
-		Document doc = ((IDOMModel) model).getDocument();
-		PageDirectiveAdapter pageDirectiveAdapter = (PageDirectiveAdapter) ((INodeNotifier) doc).getAdapterFor(PageDirectiveAdapter.class);
-		EmbeddedTypeHandler embeddedHandler = pageDirectiveAdapter.getEmbeddedType();
-		return embeddedHandler;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.sse.core.internal.model.AbstractModelLoader#initEmbeddedTypePre(org.eclipse.wst.sse.core.internal.provisional.IStructuredModel)
-	 */
-	protected void initEmbeddedTypePre(IStructuredModel model) {
-		JSPModelLoader.this.initEmbeddedTypePre(model, model.getStructuredDocument());
-	}
-
-	protected void initEmbeddedTypePre(IStructuredModel model, IStructuredDocument structuredDocument) {
-
-		// note: this will currently only work for models backed by files
-		EmbeddedTypeHandler embeddedContentType = null;
-		IDOMModel domModel = (IDOMModel) model;
-
-		if (embeddedContentType == null) {
-			IContentDescription desc = getContentDescription(structuredDocument);
-			if (desc != null) {
-				Object prop = null;
-
-				prop = desc.getProperty(IContentDescriptionForJSP.CONTENT_FAMILY_ATTRIBUTE);
-				if (prop != null) {
-					if (ContentTypeFamilyForHTML.HTML_FAMILY.equals(prop)) {
-						embeddedContentType = EmbeddedTypeRegistryImpl.getInstance().getTypeFor("text/html");
-					}
-				}
-
-				if (embeddedContentType == null) {
-
-					prop = desc.getProperty(IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE);
-					if (prop != null) {
-						embeddedContentType = EmbeddedTypeRegistryImpl.getInstance().getTypeFor((String) prop);
-					}
-				}
-			}
-		}
-
-		IDOMDocument document = domModel.getDocument();
-		PageDirectiveAdapter pageDirectiveAdapter = (PageDirectiveAdapter) document.getAdapterFor(PageDirectiveAdapter.class);
-
-		if (embeddedContentType != null) {
-			pageDirectiveAdapter.setEmbeddedType(embeddedContentType);
-			embeddedContentType.initializeFactoryRegistry(model.getFactoryRegistry());
-		}
-		else {
-			// use default embeddedType if it couldn't determine one
-			embeddedContentType = getJSPDefaultEmbeddedType(model);
-			pageDirectiveAdapter.setEmbeddedType(embeddedContentType);
-			embeddedContentType.initializeFactoryRegistry(model.getFactoryRegistry());
-		}
-	}
-
-	protected void initEmbeddedTypePost(IStructuredModel model) {
-		// should already be initialized (from initEmbeddedTypePre)
-		// via IContentDescription
-		setLanguageInPageDirective(model);
-	}
-
-	/**
-	 * As part of the model cloning process, ensure that the new model has the
-	 * same embedded content type handler as the old model, and that it is
-	 * properly initialized
-	 */
-	protected void initEmbeddedType(IStructuredModel oldModel, IStructuredModel newModel) {
-		EmbeddedTypeHandler existingEmbeddedType = getEmbeddedType(oldModel);
-		if (existingEmbeddedType == null) {
-			initEmbeddedTypePre(newModel, newModel.getStructuredDocument());
-			initEmbeddedTypePost(newModel);
-		}
-		else {
-			EmbeddedTypeHandler newEmbeddedContentType = existingEmbeddedType.newInstance();
-			// initEmbeddedType(newModel);
-			initCloneOfEmbeddedType(newModel, existingEmbeddedType, newEmbeddedContentType);
-			setLanguageInPageDirective(newModel);
-		}
-	}
-
-	protected void setLanguageInPageDirective(IStructuredModel newModel) {
-		if (newModel instanceof IDOMModel) {
-			IDOMDocument document = ((IDOMModel) newModel).getDocument();
-			PageDirectiveAdapter pageDirectiveAdapter = (PageDirectiveAdapter) document.getAdapterFor(PageDirectiveAdapter.class);
-			String language = getLanguage(newModel);
-			pageDirectiveAdapter.setLanguage(language);
-		}
-	}
-
-	public IStructuredModel reinitialize(IStructuredModel model) {
-		EmbeddedTypeHandler oldHandler = null;
-		EmbeddedTypeHandler newHandler = null;
-		Object reinitStateData = model.getReinitializeStateData();
-		if (reinitStateData instanceof EmbeddedTypeStateData) {
-			EmbeddedTypeStateData oldStateData = (EmbeddedTypeStateData) reinitStateData;
-			oldHandler = oldStateData.getOldHandler();
-			newHandler = oldStateData.getNewHandler();
-			// note. We should already have the new handler in the model's
-			// (documents) adapters,
-			// so need need to use the old one to undo the old state data
-			reInitializeEmbeddedType(model, oldHandler, newHandler);
-		}
-		else {
-			// for language ... we someday MIGHT have to do something
-			// here, but for now, we don't have any model-side language
-			// sensitive adapters.
-		}
-		return super.reinitialize(model);
-	}
-
-	public IModelLoader newInstance() {
-		return new JSPModelLoader();
-	}
-
-	public IDocumentLoader getDocumentLoader() {
-		if (documentLoaderInstance == null) {
-			documentLoaderInstance = new JSPDocumentLoader();
-		}
-		return documentLoaderInstance;
-	}
-
-	/**
-	 * Ensures that an InputStream has mark/reset support.
-	 */
-	public static InputStream getMarkSupportedStream(InputStream original) {
-		if (original == null)
-			return null;
-		if (original.markSupported())
-			return original;
-		return new BufferedInputStream(original);
-	}
-
-	protected byte[] getBytes(InputStream inputStream, int max) throws IOException {
-		byte[] smallBuffer = new byte[max];
-		byte[] returnBuffer = null;
-		int nRead = inputStream.read(smallBuffer, 0, max);
-		if (nRead < max) {
-			// empty file will return -1;
-			if (nRead < 0)
-				nRead = 0;
-			byte[] smallerBuffer = new byte[nRead];
-			System.arraycopy(smallBuffer, 0, smallerBuffer, 0, nRead);
-			returnBuffer = smallerBuffer;
-		}
-		else {
-			returnBuffer = smallBuffer;
-		}
-		return returnBuffer;
-	}
-
-	public IStructuredModel createModel(IStructuredModel oldModel) {
-		IStructuredModel model = super.createModel(oldModel);
-		// For JSPs, the ModelQueryAdapter must be "attached" to the document
-		// before content is set in the model, so taglib initialization can
-		// take place.
-		// In this "clone model" case, we create a ModelQuery adapter
-		// create a new instance from the old data. Note: I think this
-		// "forced fit" only works here since the implementation of
-		// ModelQueryAdapter does not
-		// have to be released.
-
-		ModelQueryAdapter modelQueryAdapter = getModelQueryAdapter(model);
-		if (modelQueryAdapter == null) {
-			modelQueryAdapter = getModelQueryAdapter(oldModel);
-			IDOMDocument document = ((IDOMModel) model).getDocument();
-			document.addAdapter(new JSPModelQueryAdapterImpl(modelQueryAdapter.getCMDocumentCache(), modelQueryAdapter.getModelQuery(), modelQueryAdapter.getIdResolver()));
-
-		}
-
-
-
-		return model;
-	}
-
-	private ModelQueryAdapter getModelQueryAdapter(IStructuredModel model) {
-		IDOMDocument document = ((IDOMModel) model).getDocument();
-
-		ModelQueryAdapter modelQueryAdapter = (ModelQueryAdapter) ((INodeNotifier) document).getAdapterFor(ModelQueryAdapter.class);
-		return modelQueryAdapter;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/ModelHandlerForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/ModelHandlerForJSP.java
deleted file mode 100644
index b139f25..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/ModelHandlerForJSP.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelhandler;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.encoding.JSPDocumentHeadContentDetector;
-import org.eclipse.jst.jsp.core.internal.encoding.JSPDocumentLoader;
-import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapterFactory;
-import org.eclipse.jst.jsp.core.internal.java.TagTranslationAdapterFactory;
-import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;
-import org.eclipse.wst.sse.core.internal.document.IDocumentLoader;
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.AbstractModelHandler;
-import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
-import org.eclipse.wst.sse.core.internal.provisional.IModelLoader;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-
-public class ModelHandlerForJSP extends AbstractModelHandler {
-
-	/**
-	 * Needs to match what's in plugin registry. In fact, can be overwritten
-	 * at run time with what's in registry! (so should never be 'final')
-	 */
-	static String AssociatedContentTypeID = "org.eclipse.jst.jsp.core.jspsource"; //$NON-NLS-1$
-	/**
-	 * Needs to match what's in plugin registry. In fact, can be overwritten
-	 * at run time with what's in registry! (so should never be 'final')
-	 */
-	private static String ModelHandlerID = "org.eclipse.jst.jsp.core.modelhandler"; //$NON-NLS-1$
-
-
-	public ModelHandlerForJSP() {
-		super();
-		setId(ModelHandlerID);
-		setAssociatedContentTypeId(AssociatedContentTypeID);
-	}
-
-	protected void addJSPTagName(JSPSourceParser parser, String tagname) {
-		BlockMarker bm = new BlockMarker(tagname, null, DOMJSPRegionContexts.JSP_CONTENT, true);
-		parser.addBlockMarker(bm);
-	}
-
-	public IModelLoader getModelLoader() {
-		return new JSPModelLoader();
-	}
-
-	public Preferences getPreferences() {
-		return JSPCorePlugin.getDefault().getPluginPreferences();
-	}
-
-	public IDocumentCharsetDetector getEncodingDetector() {
-		return new JSPDocumentHeadContentDetector();
-	}
-
-	public IDocumentLoader getDocumentLoader() {
-		return new JSPDocumentLoader();
-	}
-
-	public static void ensureTranslationAdapterFactory(IStructuredModel sm) {
-		if (sm.getFactoryRegistry().getFactoryFor(IJSPTranslation.class) == null) {
-			/*
-			 * Check for tag/tagx files, otherwise add the JSP translation
-			 * factory for better compatibility with other possible subtypes
-			 * of JSP.
-			 */
-			IContentType thisContentType = Platform.getContentTypeManager().getContentType(sm.getContentTypeIdentifier());
-			IContentType tagContentType = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSPTAG);
-			if (thisContentType.isKindOf(tagContentType)) {
-				INodeAdapterFactory factory = new TagTranslationAdapterFactory();
-				sm.getFactoryRegistry().addFactory(factory);
-			}
-			else {
-				INodeAdapterFactory factory = null;
-//				if (false) {
-//					IContentType textContentType = Platform.getContentTypeManager().getContentType(IContentTypeManager.CT_TEXT);
-//					IContentType jspContentType = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-//					/*
-//					 * This IAdapterManager call is temporary placeholder code
-//					 * that should not be relied upon in any way!
-//					 */
-//					if (thisContentType.isKindOf(jspContentType)) {
-//						IContentType testContentType = thisContentType;
-//						INodeAdapterFactory holdFactory = null;
-//						while (!testContentType.equals(textContentType) && holdFactory == null) {
-//							holdFactory = (INodeAdapterFactory) Platform.getAdapterManager().getAdapter(testContentType.getId(), IJSPTranslation.class.getName());
-//							testContentType = testContentType.getBaseType();
-//						}
-//					}
-//				}
-				if (factory == null) {
-					factory = new JSPTranslationAdapterFactory();
-				}
-
-				sm.getFactoryRegistry().addFactory(factory);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/ModelHandlerForTag.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/ModelHandlerForTag.java
deleted file mode 100644
index 1cb5f63..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/ModelHandlerForTag.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelhandler;
-
-import org.eclipse.wst.sse.core.internal.provisional.IModelLoader;
-
-public class ModelHandlerForTag extends ModelHandlerForJSP {
-
-	/**
-	 * Needs to match what's in plugin registry. In fact, can be overwritten
-	 * at run time with what's in registry! (so should never be 'final')
-	 */
-	static String AssociatedContentTypeID = "org.eclipse.jst.jsp.core.tagsource"; //$NON-NLS-1$
-	/**
-	 * Needs to match what's in plugin registry. In fact, can be overwritten
-	 * at run time with what's in registry! (so should never be 'final')
-	 */
-	private static String ModelHandlerID = "org.eclipse.jst.jsp.core.modelhandler.tag"; //$NON-NLS-1$
-
-
-	public ModelHandlerForTag() {
-		super();
-		setId(ModelHandlerID);
-		setAssociatedContentTypeId(AssociatedContentTypeID);
-	}
-
-	public IModelLoader getModelLoader() {
-		return new TagModelLoader();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/TagModelLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/TagModelLoader.java
deleted file mode 100644
index b13da79..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/TagModelLoader.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelhandler;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jst.jsp.core.internal.modelquery.ModelQueryAdapterFactoryForTag;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapter;
-
-public class TagModelLoader extends JSPModelLoader {
-
-	public TagModelLoader() {
-	}
-
-	public List getAdapterFactories() {
-		List factories = super.getAdapterFactories();
-		/*
-		 * Replace the default JSP model query by using our own factory
-		 */
-
-		Iterator i = factories.iterator();
-		while (i.hasNext()) {
-			if (((INodeAdapterFactory) i.next()).isFactoryForType(ModelQueryAdapter.class)) {
-				i.remove();
-			}
-		}
-
-		factories.add(new ModelQueryAdapterFactoryForTag());
-		return factories;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryAdapterImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryAdapterImpl.java
deleted file mode 100644
index 6350e54..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryAdapterImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelquery;
-
-
-
-import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.contentmodel.util.CMDocumentCache;
-import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapterImpl;
-
-
-public class JSPModelQueryAdapterImpl extends ModelQueryAdapterImpl {
-	public JSPModelQueryAdapterImpl(CMDocumentCache cmDocumentCache, ModelQuery modelQuery, URIResolver idResolver) {
-		super(cmDocumentCache, modelQuery, idResolver);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryAssociationProvider.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryAssociationProvider.java
deleted file mode 100644
index c689f5c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryAssociationProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelquery;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.SimpleAssociationProvider;
-
-/**
- * @deprecated
- */
-public class JSPModelQueryAssociationProvider extends SimpleAssociationProvider {
-
-	/**
-	 * @param modelQueryCMProvider
-	 *            org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQueryCMProvider
-	 */
-	public JSPModelQueryAssociationProvider() {
-		super(new JSPModelQueryCMProvider());
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryCMProvider.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryCMProvider.java
deleted file mode 100644
index 5b77a58..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryCMProvider.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelquery;
-
-import java.util.List;
-
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jst.jsp.core.internal.contentmodel.JSPCMDocumentFactory;
-import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQueryCMProvider;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.Node;
-
-/**
- * CMDocument provider for HTML and JSP documents.
- */
-public class JSPModelQueryCMProvider implements ModelQueryCMProvider {
-
-	protected JSPModelQueryCMProvider() {
-		super();
-	}
-
-	/**
-	 * Returns the CMDocument that corresponds to the DOM Node. or null if no
-	 * CMDocument is appropriate for the DOM Node.
-	 */
-	public CMDocument getCorrespondingCMDocument(Node node) {
-		CMDocument jcmdoc = null;
-		if (node instanceof IDOMNode) {
-			IDOMModel model = ((IDOMNode) node).getModel();
-			String modelPath = model.getBaseLocation();
-			if (modelPath != null && !IModelManager.UNMANAGED_MODEL.equals(modelPath)) {
-				float version = DeploymentDescriptorPropertyCache.getInstance().getJSPVersion(new Path(modelPath));
-				jcmdoc = JSPCMDocumentFactory.getCMDocument(version);
-			}
-		}
-		if (jcmdoc == null) {
-			jcmdoc = JSPCMDocumentFactory.getCMDocument();
-		}
-		
-		CMDocument result = null;
-		try {
-			if (node.getNodeType() == Node.ELEMENT_NODE) {
-				String elementName = node.getNodeName();
-
-				// test to see if this node belongs to JSP's CMDocument (case
-				// sensitive)
-				CMElementDeclaration dec = (CMElementDeclaration) jcmdoc.getElements().getNamedItem(elementName);
-				if (dec != null) {
-					result = jcmdoc;
-				}
-			}
-
-			String prefix = node.getPrefix();
-
-			if (result == null && prefix != null && prefix.length() > 0 && node instanceof IDOMNode) {
-				// check position dependent
-				IDOMNode xmlNode = (IDOMNode) node;
-				TLDCMDocumentManager tldmgr = TaglibController.getTLDCMDocumentManager(xmlNode.getStructuredDocument());
-				if (tldmgr != null) {
-					List documents = tldmgr.getCMDocumentTrackers(node.getPrefix(), xmlNode.getStartOffset());
-					// there shouldn't be more than one cmdocument returned
-					if (documents != null && documents.size() > 0)
-						result = (CMDocument) documents.get(0);
-				}
-			}
-		}
-		catch (Exception e) {
-			e.printStackTrace();
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryImpl.java
deleted file mode 100644
index 18ee575..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/JSPModelQueryImpl.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelquery;
-
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapter;
-import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
-import org.eclipse.wst.html.core.internal.provisional.contenttype.ContentTypeFamilyForHTML;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.ModelQueryImpl;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.SimpleAssociationProvider;
-import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapter;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class JSPModelQueryImpl extends ModelQueryImpl {
-
-	// ISSUE: jspModel doesn't seem used?
-	protected IStructuredModel jspModel = null;
-	private HashMap embeddedModelQueries = new HashMap();
-
-	public JSPModelQueryImpl(IStructuredModel model, URIResolver resolver) {
-		super(new SimpleAssociationProvider(new JSPModelQueryCMProvider()));
-		jspModel = model;
-	}
-
-	/*
-	 * @see ModelQuery#getCMElementDeclaration(Element)
-	 */
-	public CMElementDeclaration getCMElementDeclaration(Element element) {
-		CMElementDeclaration result = super.getCMElementDeclaration(element);
-		if (result == null) {
-			ModelQuery query = getEmbeddedModelQuery(element);
-			if (query != null) {
-				result = query.getCMElementDeclaration(element);
-			}
-		}
-		return result;
-	}
-
-	/*
-	 * @see ModelQuery#getCorrespondingCMDocument(Node)
-	 */
-	public CMDocument getCorrespondingCMDocument(Node node) {
-		CMDocument doc = super.getCorrespondingCMDocument(node);
-		if (doc == null) {
-			ModelQuery query = getEmbeddedModelQuery(node);
-			if (query != null) {
-				doc = query.getCorrespondingCMDocument(node);
-			}
-		}
-		return doc;
-	}
-
-	/*
-	 * @see ModelQuery#getCMNode(Node)
-	 */
-	public CMNode getCMNode(Node node) {
-		CMNode result = super.getCMNode(node);
-		if (result == null) {
-			ModelQuery query = getEmbeddedModelQuery(node);
-			if (query != null) {
-				result = query.getCMNode(node);
-			}
-		}
-		return result;
-	}
-
-	public List getAvailableContent(Element element, CMElementDeclaration ed, int includeOptions) {
-		ModelQuery emq = getEmbeddedModelQuery(element);
-		if (emq != null)
-			return emq.getAvailableContent(element, ed, includeOptions);
-		else
-			return super.getAvailableContent(element, ed, includeOptions);
-	}
-
-	// ISSUE: shouldn't this be private?
-	protected ModelQuery getEmbeddedModelQuery(Node node) {
-		ModelQuery embeddedModelQuery = null;
-
-		if (node instanceof INodeNotifier) { 
-			Node ownerNode = node.getOwnerDocument();
-			if (ownerNode == null) {
-				// then must be the document itself
-				ownerNode = node; 
-			}
-			PageDirectiveAdapter pageDirectiveAdapter = (PageDirectiveAdapter) ((INodeNotifier) ownerNode).getAdapterFor(PageDirectiveAdapter.class);
-			if (pageDirectiveAdapter != null) {
-
-				String effectiveContentType = null;
-				ModelQuery potentialModelQueryObject = null;
-
-				String familyId = pageDirectiveAdapter.getEmbeddedType().getFamilyId();
-				if (ContentTypeFamilyForHTML.HTML_FAMILY.equals(familyId)) {
-					effectiveContentType = "text/html";
-				}
-				else {
-					effectiveContentType = pageDirectiveAdapter.getContentType();
-				}
-				
-				potentialModelQueryObject = (ModelQuery) embeddedModelQueries.get(effectiveContentType);
-				
-				if (potentialModelQueryObject == null) {
-					ModelQueryAdapter embeddedAdapter = (ModelQueryAdapter) pageDirectiveAdapter.adapt((INodeNotifier) node, ModelQueryAdapter.class);
-					if (embeddedAdapter != null) {
-						// we will cache one model query per content type
-						embeddedModelQuery = embeddedAdapter.getModelQuery();
-						embeddedModelQueries.put(effectiveContentType, embeddedModelQuery);
-					}
-				}
-				else {
-					embeddedModelQuery = potentialModelQueryObject;
-				}
-			}
-		}
-		return embeddedModelQuery;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery#getCMAttributeDeclaration(org.w3c.dom.Attr)
-	 */
-	public CMAttributeDeclaration getCMAttributeDeclaration(Attr attr) {
-		CMAttributeDeclaration result = super.getCMAttributeDeclaration(attr);
-		if (result == null) {
-			ModelQuery query = getEmbeddedModelQuery(attr);
-			if (query != null) {
-				result = query.getCMAttributeDeclaration(attr);
-			}
-		}
-		return result;
-	}
-	
-	/**
-	 * NOT API -- this is provided, and is public, only to make some JUnit testing 
-	 * more straightforward. It will be changed in future, and from release to release.
-	 * 
-	 * @param node
-	 * @return
-	 */
-	public ModelQuery internalTestOnly_getEmbeddedModelQuery(Node node) {
-		return getEmbeddedModelQuery(node);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/ModelQueryAdapterFactoryForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/ModelQueryAdapterFactoryForJSP.java
deleted file mode 100644
index 5149774..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/ModelQueryAdapterFactoryForJSP.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelquery;
-
-import java.io.File;
-import java.net.URI;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
-import org.eclipse.wst.sse.core.internal.provisional.AbstractAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.IModelStateListener;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.contentmodel.util.CMDocumentCache;
-import org.eclipse.wst.xml.core.internal.modelquery.XMLCatalogIdResolver;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapter;
-
-public class ModelQueryAdapterFactoryForJSP extends AbstractAdapterFactory implements IModelStateListener {
-
-	protected JSPModelQueryAdapterImpl modelQueryAdapterImpl;
-
-	protected IStructuredModel stateNotifier = null;
-
-	public ModelQueryAdapterFactoryForJSP() {
-		this(ModelQueryAdapter.class, true);
-	}
-
-	/**
-	 * ModelQueryAdapterFactoryForJSP constructor comment.
-	 * 
-	 * @param adapterKey
-	 *            java.lang.Object
-	 * @param registerAdapters
-	 *            boolean
-	 */
-	public ModelQueryAdapterFactoryForJSP(Object key, boolean registerAdapters) {
-		super(key, registerAdapters);
-	}
-
-	public INodeAdapterFactory copy() {
-		return new ModelQueryAdapterFactoryForJSP(getAdapterKey(), isShouldRegisterAdapter());
-	}
-
-	/**
-	 * createAdapter method comment.
-	 */
-	protected INodeAdapter createAdapter(INodeNotifier target) {
-		if (Debug.displayInfo)
-			System.out.println("-----------------------ModelQueryAdapterFactoryForJSP.createAdapter" + target); //$NON-NLS-1$
-		if (modelQueryAdapterImpl == null) {
-			if (target instanceof IDOMNode) {
-				IDOMNode xmlNode = (IDOMNode) target;
-				IStructuredModel model = stateNotifier = xmlNode.getModel();
-				if (model.getBaseLocation() != null) {
-					stateNotifier.addModelStateListener(this);
-				}
-
-				org.eclipse.wst.sse.core.internal.util.URIResolver resolver = model.getResolver();
-				if (Debug.displayInfo)
-					System.out.println("----------------ModelQueryAdapterFactoryForJSP... baseLocation : " + resolver.getFileBaseLocation()); //$NON-NLS-1$
-
-				/**
-				 * XMLCatalogIdResolver currently requires a filesystem
-				 * location string. Customarily this will be what is in the
-				 * deprecated SSE URIResolver and required by the Common URI
-				 * Resolver.
-				 */
-				URIResolver idResolver = null;
-				if (resolver != null) {
-					idResolver = new XMLCatalogIdResolver(resolver.getFileBaseLocation(), resolver);
-				}
-				else {
-					/*
-					 * 203649 - this block may be necessary due to ordering of
-					 * setting the resolver into the model
-					 */
-					String baseLocation = null;
-					String modelsBaseLocation = model.getBaseLocation();
-					if (modelsBaseLocation != null) {
-						File file = new Path(modelsBaseLocation).toFile();
-						if (file.exists()) {
-							baseLocation = file.getAbsolutePath();
-						}
-						else {
-							IPath basePath = new Path(model.getBaseLocation());
-							IResource derivedResource = null;
-							if (basePath.segmentCount() > 1)
-								derivedResource = ResourcesPlugin.getWorkspace().getRoot().getFile(basePath);
-							else
-								derivedResource = ResourcesPlugin.getWorkspace().getRoot().getProject(basePath.segment(0));
-							IPath derivedPath = derivedResource.getLocation();
-							if (derivedPath != null) {
-								baseLocation = derivedPath.toString();
-							}
-							else {
-								URI uri = derivedResource.getLocationURI();
-								if (uri != null) {
-									baseLocation = uri.toString();
-								}
-							}
-						}
-						if(baseLocation == null) {
-							baseLocation = modelsBaseLocation;
-						}
-					}
-					idResolver = new XMLCatalogIdResolver(baseLocation, null);
-				}
-
-				ModelQuery modelQuery = createModelQuery(model, idResolver);
-				modelQuery.setEditMode(ModelQuery.EDIT_MODE_UNCONSTRAINED);
-				modelQueryAdapterImpl = new JSPModelQueryAdapterImpl(new CMDocumentCache(), modelQuery, idResolver);
-			}
-		}
-		return modelQueryAdapterImpl;
-	}
-
-	ModelQuery createModelQuery(IStructuredModel model, URIResolver resolver) {
-		return new JSPModelQueryImpl(model, resolver);
-	}
-
-	/**
-	 * @see IModelStateListener#modelAboutToBeChanged(IStructuredModel)
-	 */
-	public void modelAboutToBeChanged(IStructuredModel model) {
-	}
-
-	/**
-	 * @see IModelStateListener#modelChanged(IStructuredModel)
-	 */
-	public void modelChanged(IStructuredModel model) {
-	}
-
-	/**
-	 * @see IModelStateListener#modelDirtyStateChanged(IStructuredModel,
-	 *      boolean)
-	 */
-	public void modelDirtyStateChanged(IStructuredModel model, boolean isDirty) {
-	}
-
-	/**
-	 * @see IModelStateListener#modelResourceDeleted(IStructuredModel)
-	 */
-	public void modelResourceDeleted(IStructuredModel model) {
-	}
-
-	/**
-	 * @see IModelStateListener#modelResourceMoved(IStructuredModel,
-	 *      IStructuredModel)
-	 */
-	public void modelResourceMoved(IStructuredModel oldModel, IStructuredModel newModel) {
-		// if oldModel != newModel, bad things might happen with the adapter
-		stateNotifier.removeModelStateListener(this);
-		stateNotifier = newModel;
-		updateResolver(stateNotifier);
-		stateNotifier.addModelStateListener(this);
-	}
-
-
-	public void release() {
-		super.release();
-		if (stateNotifier != null) {
-			stateNotifier.removeModelStateListener(this);
-		}
-		stateNotifier = null;
-		if (modelQueryAdapterImpl != null) {
-			modelQueryAdapterImpl.release();
-		}
-	}
-
-	protected void updateResolver(IStructuredModel model) {
-		String baseLocation = model.getBaseLocation();
-		IFile baseFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(model.getBaseLocation()));
-		if (baseFile != null) {
-			if (baseFile.getLocation() != null) {
-				baseLocation = baseFile.getLocation().toString();
-			}
-			if (baseLocation == null && baseFile.getLocationURI() != null) {
-				baseLocation = baseFile.getLocationURI().toString();
-			}
-			if (baseLocation == null) {
-				baseLocation = baseFile.getFullPath().toString();
-			}
-		}
-		else {
-			baseLocation = model.getBaseLocation();
-		}
-		modelQueryAdapterImpl.setIdResolver(new XMLCatalogIdResolver(baseLocation, model.getResolver()));
-	}
-
-	public void modelAboutToBeReinitialized(IStructuredModel structuredModel) {
-		// TODO Auto-generated method stub
-
-	}
-
-	public void modelReinitialized(IStructuredModel structuredModel) {
-		updateResolver(structuredModel);
-
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/ModelQueryAdapterFactoryForTag.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/ModelQueryAdapterFactoryForTag.java
deleted file mode 100644
index 443c8eb..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/ModelQueryAdapterFactoryForTag.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelquery;
-
-import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.ModelQueryImpl;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.SimpleAssociationProvider;
-
-public class ModelQueryAdapterFactoryForTag extends ModelQueryAdapterFactoryForJSP {
-
-	public ModelQueryAdapterFactoryForTag() {
-	}
-
-	public ModelQueryAdapterFactoryForTag(Object key, boolean registerAdapters) {
-		super(key, registerAdapters);
-	}
-
-	public INodeAdapterFactory copy() {
-		return new ModelQueryAdapterFactoryForTag(getAdapterKey(), isShouldRegisterAdapter());
-	}
-
-	ModelQuery createModelQuery(IStructuredModel model, URIResolver resolver) {
-		return new ModelQueryImpl(new SimpleAssociationProvider(new TagModelQueryCMProvider()));
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/TagModelQueryCMProvider.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/TagModelQueryCMProvider.java
deleted file mode 100644
index a411467..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelquery/TagModelQueryCMProvider.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.modelquery;
-
-
-
-import java.util.List;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.eclipse.wst.html.core.internal.contentmodel.HTMLCMDocumentFactory;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQueryCMProvider;
-import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMDocType;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.Node;
-
-/**
- * CMDocument provider for HTML and JSP documents.
- */
-public class TagModelQueryCMProvider implements ModelQueryCMProvider {
-
-	protected TagModelQueryCMProvider() {
-		super();
-	}
-
-	/**
-	 * Returns the CMDocument that corresponds to the DOM Node. or null if no
-	 * CMDocument is appropriate for the DOM Node.
-	 */
-	public CMDocument getCorrespondingCMDocument(Node node) {
-		CMDocument tagdoc = HTMLCMDocumentFactory.getCMDocument(CMDocType.TAG20_DOC_TYPE);
-
-		CMDocument result = null;
-		try {
-			if (node.getNodeType() == Node.ELEMENT_NODE) {
-				String elementName = node.getNodeName();
-
-				// test to see if this node belongs to JSP's CMDocument (case
-				// sensitive)
-				CMElementDeclaration dec = (CMElementDeclaration) tagdoc.getElements().getNamedItem(elementName);
-				if (dec != null) {
-					result = tagdoc;
-				}
-			}
-
-			String prefix = node.getPrefix();
-
-			if (result == null && prefix != null && prefix.length() > 0 && node instanceof IDOMNode) {
-				// check position dependent
-				IDOMNode xmlNode = (IDOMNode) node;
-				TLDCMDocumentManager tldmgr = TaglibController.getTLDCMDocumentManager(xmlNode.getStructuredDocument());
-				if (tldmgr != null) {
-					List documents = tldmgr.getCMDocumentTrackers(node.getPrefix(), xmlNode.getStartOffset());
-					// there shouldn't be more than one cmdocument returned
-					if (documents != null && documents.size() > 0)
-						result = (CMDocument) documents.get(0);
-				}
-			}
-		}
-		catch (Exception e) {
-			e.printStackTrace();
-		}
-		if (result == null) {
-			result = tagdoc;
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPDirectiveStructuredDocumentRegion.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPDirectiveStructuredDocumentRegion.java
deleted file mode 100644
index 963a70d..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPDirectiveStructuredDocumentRegion.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.parser;
-
-import org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentEvent;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.xml.core.internal.text.XMLStructuredDocumentRegion;
-
-public class JSPDirectiveStructuredDocumentRegion extends XMLStructuredDocumentRegion {
-	/**
-	 * JSPDirectiveStructuredDocumentRegion constructor comment.
-	 */
-	public JSPDirectiveStructuredDocumentRegion() {
-		super();
-	}
-
-	protected StructuredDocumentEvent reparse(Object requester, String changes, int requestStart, int lengthToReplace) {
-		return null;
-	}
-
-	// This is a language specific method (e.g. HTML, Java, Prolog, etc.) so
-	// could/should be made configurable.
-	public StructuredDocumentEvent updateModel(Object requester, String changes, int requestStart, int lengthToReplace, IStructuredDocumentRegion flatnode) {
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java
deleted file mode 100644
index fcb0642..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPReParser.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.parser;
-
-
-import java.util.Iterator;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP11TLDNames;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionParser;
-import org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentEvent;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegionList;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredTextReParser;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.text.CoreNodeList;
-import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.xml.core.internal.parser.XMLStructuredDocumentReParser;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-public class JSPReParser extends XMLStructuredDocumentReParser {
-
-	/**
-	 * Allow a reparser to check for extra syntactic cases that require
-	 * parsing beyond the flatNode boundary.
-	 * 
-	 * This implementation adds JSP language markers (comments are handled
-	 * elsewhere).
-	 */
-	protected StructuredDocumentEvent checkForCrossStructuredDocumentRegionSyntax() {
-		StructuredDocumentEvent result = super.checkForCrossStructuredDocumentRegionSyntax();
-		// None of the superclass' cases were valid, so check for JSP cases
-		if (result == null) {
-			result = checkForJSP();
-		}
-		return result;
-	}
-
-	/**
-	 * A change to a JSP tag can result in all being reparsed.
-	 */
-	private StructuredDocumentEvent checkForJSP() {
-		StructuredDocumentEvent result = null;
-		result = checkForCriticalKey("<%"); //$NON-NLS-1$
-		if (result == null)
-			result = checkForCriticalKey("<%="); //$NON-NLS-1$
-		if (result == null)
-			result = checkForCriticalKey("<%!"); //$NON-NLS-1$
-		if (result == null)
-			result = checkForCriticalKey("%>"); //$NON-NLS-1$
-
-		return result;
-	}
-
-	/**
-	 * If a comment start or end tag is being added or deleted, we'll rescan
-	 * the whole document. The reason is that content that is revealed or
-	 * commented out can effect the interpretation of the rest of the
-	 * document. Note: for now this is very XML/JSP specific, can
-	 * refactor/improve later.
-	 */
-	protected StructuredDocumentEvent checkForComments() {
-
-		StructuredDocumentEvent result = super.checkForComments();
-
-		if (result == null)
-			result = checkForCriticalKey("<%--"); //$NON-NLS-1$
-		if (result == null)
-			result = checkForCriticalKey("--%>"); //$NON-NLS-1$
-		// we'll also check for these degenerate cases
-		if (result == null)
-			result = checkForCriticalKey("<%---%>"); //$NON-NLS-1$
-
-		return result;
-	}
-
-	/**
-	 * The core reparsing method ... after the dirty start and dirty end have
-	 * been calculated elsewhere. - this method overrides, does not extend
-	 * super's method. changes/fixes to super may have to be made here as
-	 * well.
-	 */
-	protected StructuredDocumentEvent reparse(IStructuredDocumentRegion dirtyStart, IStructuredDocumentRegion dirtyEnd) {
-		StructuredDocumentEvent result = null;
-		int rescanStart = -1;
-		int rescanEnd = -1;
-		boolean firstTime = false;
-		boolean detectedBreakingChange = false;
-
-		//
-		// "save" the oldNodes (that may be replaced) in a list
-		CoreNodeList oldNodes = formOldNodes(dirtyStart, dirtyEnd);
-
-		if (containsBreakingChange(oldNodes) || isBreakingWithNestedTag(dirtyStart, dirtyEnd)) {
-			if (Debug.debugTaglibs)
-				System.out.println("reparse: is taglib or include"); //$NON-NLS-1$
-			detectedBreakingChange = true;
-			rescanStart = 0;
-			rescanEnd = fStructuredDocument.getLength() + fLengthDifference;
-			oldNodes = formOldNodes(fStructuredDocument.getFirstStructuredDocumentRegion(), fStructuredDocument.getLastStructuredDocumentRegion());
-			clearTaglibInfo();
-		}
-		else if (dirtyStart == null || dirtyEnd == null) {
-			// dirtyStart or dirty end are null, then that means we didn't
-			// have a
-			// cached node, which means we have an empty document, so we
-			// just need to rescan the changes
-			rescanStart = 0;
-			rescanEnd = fChanges.length();
-			firstTime = true;
-		}
-		else {
-			// set the start of the text to rescan
-			rescanStart = dirtyStart.getStart();
-			//
-			// set the end of the text to rescan
-			// notice we use the same rationale as for the rescanStart,
-			// with the added caveat that length has to be added to it,
-			// to compensate for the new text which has been added or deleted.
-			// If changes has zero length, then "length" will be negative,
-			// since
-			// we are deleting text. Otherwise, use the difference between
-			// what's selected to be replaced and the length of the new text.
-			rescanEnd = dirtyEnd.getEnd() + fLengthDifference;
-		}
-
-		// now that we have the old stuff "saved" away, update the document
-		// with the changes.
-		fStructuredDocument.updateDocumentData(fStart, fLengthToReplace, fChanges);
-		// ------------------ now the real work
-		result = core_reparse(rescanStart, rescanEnd, oldNodes, firstTime);
-		//
-
-		// if we did not detect a breaking type of change at the beginning,
-		// but
-		// do now, then reparse all! If we did detect them, then we may or may
-		// not detect again, but presumably we've already set up to re-parsed
-		// everthing, so no need to do again.
-		if ((!detectedBreakingChange) && (containsBreakingChange(oldNodes))) {
-			clearTaglibInfo();
-			// reparse all
-			oldNodes = formOldNodes(fStructuredDocument.getFirstStructuredDocumentRegion(), fStructuredDocument.getLastStructuredDocumentRegion());
-			result = core_reparse(0, fStructuredDocument.getLength(), oldNodes, firstTime);
-		}
-
-		// event is returned to the caller, incase there is
-		// some optimization they can do
-		return result;
-	}
-
-	/**
-	 * Verifies that the regions given, representing the contents of a
-	 * IStructuredDocumentRegion, contain regions that could alter the
-	 * behavior of the parser or the parsing of areas outside of the regions
-	 * given.
-	 */
-	private boolean isBreakingChange(IStructuredDocumentRegion node, ITextRegionList regions) {
-		return isTaglibOrInclude(node, regions) || isJspRoot(regions);
-	}
-
-	/**
-	 * Verifies that the regions given, representing the regions touched by a
-	 * text change have: 1) ...an insertion at the textEndOffset of an
-	 * XML_TAG_OPEN that's in it's own IStructuredDocumentRegion and preceded
-	 * by an unended IStructuredDocumentRegion 2) ...a deletion happening in
-	 * an XML_EMPTY_TAG_CLOSE that ends a ITextRegionContainer 3) ...an
-	 * insertion happening with a ' <' character somewhere in an XML attribute
-	 * name or value 4) ...a deletion of a normal XML_TAG_CLOSE since
-	 * subsequent tags become attribute values
-	 */
-
-	private boolean isBreakingWithNestedTag(boolean changesIncludeA_lt, boolean delsIncludeA_gt, IStructuredDocumentRegion parent, ITextRegion region) {
-		boolean result = false;
-
-		IStructuredDocumentRegion previous = parent.getPrevious();
-		// case 1 test
-		if (parent.getRegions().size() == 1 && region.getType() == DOMRegionContext.XML_TAG_OPEN && (previous == null || (!previous.isEnded() || previous.getType() == DOMRegionContext.XML_CONTENT))) {
-			result = true;
-		}
-		// case 2 test
-		if (region instanceof ITextRegionContainer) {
-			ITextRegionContainer container = (ITextRegionContainer) region;
-			ITextRegion internal = container.getRegions().get(container.getRegions().size() - 1);
-			if (internal.getType() == DOMRegionContext.WHITE_SPACE && container.getRegions().size() >= 2)
-				internal = container.getRegions().get(container.getRegions().size() - 2);
-			if (internal.getType() == DOMRegionContext.XML_EMPTY_TAG_CLOSE) {
-				result = true;
-			}
-		}
-		// case 3 test
-		if (changesIncludeA_lt && (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME || region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)) {
-			result = true;
-		}
-		// case 4 test
-		if (delsIncludeA_gt && region.getType() == DOMRegionContext.XML_TAG_CLOSE) {
-			result = true;
-		}
-		return result;
-	}
-
-	/**
-	 * Verifies that the regions given, representing the contents of a
-	 * IStructuredDocumentRegion, includes a jsp:root tag
-	 */
-	private boolean isJspRoot(ITextRegionList regions) {
-		return regions.size() > 1 && regions.get(0).getType() == DOMRegionContext.XML_TAG_OPEN && regions.get(1).getType() == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME;
-	}
-
-	/**
-	 * Verifies that the regions given, representing the contents of a
-	 * IStructuredDocumentRegion, includes a valid taglib directive or include
-	 * directive
-	 */
-	private boolean isTaglibOrInclude(IStructuredDocumentRegion node, ITextRegionList regions) {
-		boolean sizeAndTypesMatch = (regions.size() > 1) && (regions.get(1).getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) && (regions.get(0).getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN || regions.get(0).getType() == DOMRegionContext.XML_TAG_OPEN);
-		if (!sizeAndTypesMatch)
-			return false;
-		ITextRegion region = regions.get(1);
-		String directiveName = node.getText(region);
-		return sizeAndTypesMatch && (directiveName.equals(JSP11TLDNames.TAGLIB) || directiveName.equals(JSP11TLDNames.INCLUDE) || directiveName.equals(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB) || directiveName.equals(JSP12Namespace.ElementName.DIRECTIVE_INCLUDE));
-	}
-
-	private void clearTaglibInfo() {
-		if (Debug.debugTaglibs)
-			System.out.println("clearing taglib info"); //$NON-NLS-1$
-		RegionParser parser = fStructuredDocument.getParser();
-		if (parser instanceof StructuredDocumentRegionParser)
-			((StructuredDocumentRegionParser) parser).resetHandlers();
-	}
-
-	private boolean containsBreakingChange(IStructuredDocumentRegionList list) {
-		boolean contains = false;
-		for (int i = 0; i < list.getLength(); i++) {
-			IStructuredDocumentRegion node = list.item(i);
-			if (isBreakingChange(node, node.getRegions())) {
-				contains = true;
-				break;
-			}
-		}
-		return contains;
-	}
-
-	protected IStructuredDocumentRegion findDirtyEnd(int end) {
-
-		IStructuredDocumentRegion result = super.findDirtyEnd(end);
-
-		// if not well formed, get one past, if its not null
-
-		// now, if any of to-be-scanned flatnodes are the start of a jsp
-		// region, we'll
-		// reparse all the way to the end, to be sure we detect embedded
-		// regions (or not-embedded regions) correctly.
-		// notice we don't need to do if we're only processing one node.
-		// notice too we have a strong assumption here that dirtyStart has
-		// already been found!
-		//
-		// note that dirtyEnd is not checked in the do-block below, so we'll
-		// check it first.
-		if (isJSPEmbeddedStartOrEnd(result)) {
-			result = fStructuredDocument.getLastStructuredDocumentRegion();
-		}
-		else {
-			// when end node and start node are the same, we only need the
-			// above
-			// check, otherwise, there's a few cases that we'll search the
-			// rest of the
-			// flatnodes needlessly.
-			if (result != dirtyStart) {
-				IStructuredDocumentRegion searchNode = dirtyStart;
-				do {
-					if (isJSPEmbeddedStartOrEnd(searchNode)) {
-						result = fStructuredDocument.getLastStructuredDocumentRegion();
-						break;
-					}
-					else {
-						searchNode = searchNode.getNext();
-					}
-					// if we get to the current dirty end, or end of
-					// flatnodes, without finding JSP region then we
-					// don't need to check further
-				}
-				while ((searchNode != result) && (searchNode != null));
-			}
-		}
-		// result should never be null, but cachedNode needs to be protected
-		// from being changed to null
-		if (result != null)
-			fStructuredDocument.setCachedDocumentRegion(result);
-		dirtyEnd = result;
-		return dirtyEnd;
-	}
-
-	private boolean isBreakingWithNestedTag(IStructuredDocumentRegion start, IStructuredDocumentRegion end) {
-		boolean result = false;
-		boolean changesIncludeA_lt = fChanges != null && fChanges.indexOf('<') >= 0;
-		boolean delsIncludeA_gt = fDeletedText != null && fDeletedText.indexOf('>') >= 0;
-
-		// List regions = new ArrayList();
-		IStructuredDocumentRegion node = start;
-		int endReplace = fStart + fLengthToReplace;
-		while (end != null && node != end.getNext()) {
-			Iterator i = node.getRegions().iterator();
-			while (i.hasNext()) {
-				ITextRegion region = (ITextRegion) i.next();
-				if (intersects(node, region, fStart, endReplace)) {
-
-					result = isBreakingWithNestedTag(changesIncludeA_lt, delsIncludeA_gt, node, region);
-
-					if (result)
-						break;
-				}
-			}
-			node = node.getNext();
-			if (result)
-				break;
-		}
-		return result;
-	}
-
-	private boolean intersects(IStructuredDocumentRegion node, ITextRegion region, int low, int high) {
-		int start = node.getStartOffset(region);
-		int end = node.getEndOffset(region);
-		return (end >= low && start <= high) || (start <= low && end >= low) || (start <= high && end >= high);
-	}
-
-	/**
-	 * Returns true if potentially could be a jsp embedded region. Things like
-	 * JSP Declaration can't be embedded.
-	 */
-	private boolean isJSPEmbeddedStartOrEnd(IStructuredDocumentRegion flatNode) {
-		boolean result = false;
-		String type = flatNode.getType();
-		result = ((type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) || (type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) || (type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN));
-		return result;
-	}
-
-	/**
-	 * extends super class behavior
-	 */
-	protected boolean isPartOfBlockRegion(IStructuredDocumentRegion flatNode) {
-		boolean result = false;
-		String type = flatNode.getType();
-		result = ((type == DOMJSPRegionContexts.JSP_CLOSE) || (type == DOMJSPRegionContexts.JSP_CONTENT) || super.isPartOfBlockRegion(flatNode));
-		return result;
-	}
-
-	public IStructuredTextReParser newInstance() {
-		return new JSPReParser();
-	}
-
-	public StructuredDocumentEvent quickCheck() {
-		if (containsBreakingChange(new CoreNodeList(dirtyStart, dirtyEnd)))
-			return null;
-		return super.quickCheck();
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java
deleted file mode 100644
index 280e3ff..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.parser;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
-import org.eclipse.jst.jsp.core.internal.parser.internal.JSPTokenizer;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.ltk.parser.BlockTokenizer;
-import org.eclipse.wst.sse.core.internal.ltk.parser.JSPCapableParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionHandler;
-import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionHandlerExtension;
-import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.TagMarker;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.text.IRegionComparible;
-import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-/**
- * Takes input from the JSPTokenizer and creates a tag list
- */
-
-public class JSPSourceParser extends XMLSourceParser implements JSPCapableParser {
-	protected class NestablePrefixHandler implements StructuredDocumentRegionHandler, StructuredDocumentRegionHandlerExtension {
-
-		private static final String XMLNS = "xmlns:"; //$NON-NLS-1$
-
-		/**
-		 * Enables a TLD owning the given prefix loaded from the given URI at
-		 * the anchorFlatNode. The list of additionalCMDocuments will claim to
-		 * not know any of its tags at positions earlier than that
-		 * IStructuredDocumentRegion's position.
-		 * 
-		 * For taglib directives, the taglib is the anchor while taglibs
-		 * registered through include directives use the primary include
-		 * directive as their anchor.
-		 */
-		protected void enableForTaglib(String prefix, IStructuredDocumentRegion anchorFlatNode) {
-			if (prefix == null)
-				return;
-			List tagmarkers = ((JSPTokenizer) getTokenizer()).getNestablePrefixes();
-			for (int i = 0; i < tagmarkers.size(); i++) {
-				if (((TagMarker) tagmarkers.get(i)).getTagName().equals(prefix))
-					return;
-			}
-			((JSPTokenizer) getTokenizer()).getNestablePrefixes().add(new TagMarker(prefix, anchorFlatNode));
-		}
-
-		public void nodeParsed(IStructuredDocumentRegion aCoreFlatNode) {
-			// could test > 1, but since we only care if there are 8 (<%@,
-			// taglib, uri, =, where, prefix, =, what) [or 4 for includes]
-			if (aCoreFlatNode.getNumberOfRegions() > 4 && aCoreFlatNode.getRegions().get(1).getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-				ITextRegion name = aCoreFlatNode.getRegions().get(1);
-				try {
-					int offset = aCoreFlatNode.getStartOffset(name);
-					int length = name.getTextLength();
-					boolean taglibdetected = false;
-					boolean taglibdirectivedetected = false;
-					if (fCharSequenceSource instanceof IRegionComparible) {
-						taglibdetected = ((IRegionComparible) fCharSequenceSource).regionMatches(offset, length, JSP12TLDNames.TAGLIB);
-						taglibdirectivedetected = ((IRegionComparible) fCharSequenceSource).regionMatches(offset, length, JSP12Namespace.ElementName.DIRECTIVE_TAGLIB);
-					}
-					else {
-						// old fashioned way
-						String directiveName = getText(offset, length);
-						taglibdetected = directiveName.equals(JSP12TLDNames.TAGLIB);
-						taglibdirectivedetected = directiveName.equals(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB);
-					}
-					boolean processDirectiveName = taglibdetected || taglibdirectivedetected;
-					if (processDirectiveName) {
-						processTaglib(aCoreFlatNode);
-					}
-				}
-				catch (StringIndexOutOfBoundsException sioobExc) {
-					// do nothing
-				}
-			}
-			// could test > 1, but since we only care if there are 5 (<,
-			// jsp:root, xmlns:prefix, =, where)
-			else if (aCoreFlatNode.getNumberOfRegions() > 4 && (aCoreFlatNode.getRegions().get(1)).getType() == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME) {
-				processJSPRoot(aCoreFlatNode);
-			}
-		}
-
-		protected void processJSPRoot(IStructuredDocumentRegion taglibFlatNode) {
-			ITextRegionList regions = taglibFlatNode.getRegions();
-			String prefix = null;
-			boolean taglib = false;
-			try {
-				for (int i = 0; i < regions.size(); i++) {
-					ITextRegion region = regions.get(i);
-					if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-						int offset = taglibFlatNode.getStartOffset(region);
-						int length = region.getTextLength();
-
-						String name = getText(offset, length);
-						if (name.startsWith(XMLNS) && name.length() > XMLNS.length()) { //$NON-NLS-1$
-							prefix = name.substring(6);
-							taglib = true;
-						}
-						else {
-							prefix = null;
-							taglib = false;
-						}
-					}
-					else if (taglib && region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-						prefix = StringUtils.strip(prefix);
-						if (prefix != null && prefix.length() > 0) {
-							enableForTaglib(prefix, taglibFlatNode);
-							prefix = null;
-						}
-					}
-				}
-			}
-			catch (StringIndexOutOfBoundsException sioobExc) {
-				// nothing to be done
-				prefix = null;
-			}
-		}
-
-		/**
-		 * Pulls the prefix from the given taglib directive
-		 * IStructuredDocumentRegion and makes sure the prefix is nestable.
-		 */
-		protected void processTaglib(IStructuredDocumentRegion taglibFlatNode) {
-			ITextRegionList regions = taglibFlatNode.getRegions();
-			String prefix = null;
-			boolean prefixname = false;
-			try {
-				for (int i = 0; i < regions.size(); i++) {
-					ITextRegion region = regions.get(i);
-					if (region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-						if (fCharSequenceSource != null && fCharSequenceSource instanceof IRegionComparible) {
-							int offset = taglibFlatNode.getStartOffset(region);
-							int length = region.getTextLength();
-							prefixname = ((IRegionComparible) fCharSequenceSource).regionMatches(offset, length, JSP12TLDNames.PREFIX);
-						}
-						else {
-							// old fashioned way
-							prefixname = (getText(taglibFlatNode.getStartOffset(region), region.getTextLength()).equals(JSP12TLDNames.PREFIX));
-						}
-					}
-					else if (prefixname && region.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-						prefix = getText(taglibFlatNode.getStartOffset(region), region.getTextLength());
-					}
-				}
-			}
-			catch (StringIndexOutOfBoundsException sioobExc) {
-				// nothing to be done
-				prefix = null;
-			}
-			prefix = StringUtils.strip(prefix);
-			if (prefix != null && prefix.length() > 0) {
-				enableForTaglib(prefix, taglibFlatNode);
-			}
-		}
-
-		public void resetNodes() {
-			Iterator tagmarkers = ((JSPTokenizer) getTokenizer()).getNestablePrefixes().iterator();
-			while (tagmarkers.hasNext()) {
-				if (!((TagMarker) tagmarkers.next()).isGlobal())
-					tagmarkers.remove();
-			}
-		}
-
-		public void setStructuredDocument(IStructuredDocument newDocument) {
-			resetNodes();
-			getStructuredDocumentRegionHandlers().remove(this);
-			if (newDocument != null && newDocument.getParser() instanceof StructuredDocumentRegionParser) {
-				((StructuredDocumentRegionParser) newDocument.getParser()).addStructuredDocumentRegionHandler(this);
-			}
-		}
-	}
-
-	/**
-	 * JSPSourceParser constructor comment.
-	 */
-	public JSPSourceParser() {
-		super();
-	}
-
-	public void addNestablePrefix(TagMarker marker) {
-		((JSPTokenizer) getTokenizer()).addNestablePrefix(marker);
-	}
-
-	public List getNestablePrefixes() {
-		return ((JSPTokenizer) getTokenizer()).getNestablePrefixes();
-	}
-
-	protected BlockTokenizer getTokenizer() {
-		if (fTokenizer == null) {
-			fTokenizer = new JSPTokenizer();
-			getStructuredDocumentRegionHandlers().add(new NestablePrefixHandler());
-		}
-		return fTokenizer;
-	}
-
-
-	public RegionParser newInstance() {
-		JSPSourceParser newInstance = new JSPSourceParser();
-		newInstance.setTokenizer(getTokenizer().newInstance());
-		return newInstance;
-	}
-
-	protected IStructuredDocumentRegion parseNodes() {
-		// regions are initially reported as complete offsets within the
-		// scanned input
-		// they are adjusted here to be indexes from the currentNode's start
-		// offset
-		IStructuredDocumentRegion headNode = null;
-		IStructuredDocumentRegion lastNode = null;
-		ITextRegion region = null;
-		// DMW: 2/12/03. Made current node local variable, since
-		// we changed class to not require state
-		IStructuredDocumentRegion currentNode = null;
-		String type = null;
-
-		while ((region = getNextRegion()) != null) {
-			type = region.getType();
-			// these types (might) demand a IStructuredDocumentRegion for each
-			// of them
-			if (type == DOMRegionContext.BLOCK_TEXT) {
-				if (currentNode != null && currentNode.getLastRegion().getType() == DOMRegionContext.BLOCK_TEXT) {
-					// multiple block texts indicated embedded containers; no
-					// new IStructuredDocumentRegion
-					currentNode.addRegion(region);
-					currentNode.setLength(region.getStart() + region.getLength() - currentNode.getStart());
-					region.adjustStart(-currentNode.getStart());
-					// DW, 4/16/2003 token regions no longer have parents
-					// region.setParent(currentNode);
-					if (region instanceof ITextRegionContainer) {
-						((ITextRegionContainer) region).setParent(currentNode);
-					}
-				}
-				else {
-					// not continuing a IStructuredDocumentRegion
-					if (currentNode != null) {
-						// ensure that any existing node is at least
-						// terminated
-						if (!currentNode.isEnded()) {
-							currentNode.setLength(region.getStart() - currentNode.getStart());
-							// fCurrentNode.setTextLength(region.getStart() -
-							// fCurrentNode.getStart());
-						}
-						lastNode = currentNode;
-					}
-					fireNodeParsed(currentNode);
-					currentNode = createStructuredDocumentRegion(type);
-					if (lastNode != null) {
-						lastNode.setNext(currentNode);
-					}
-					currentNode.setPrevious(lastNode);
-					currentNode.setStart(region.getStart());
-					currentNode.setLength(region.getStart() + region.getLength() - currentNode.getStart());
-					currentNode.setEnded(true);
-					region.adjustStart(-currentNode.getStart());
-					currentNode.addRegion(region);
-					// DW, 4/16/2003 token regions no longer have parents
-					// region.setParent(currentNode);
-					if (region instanceof ITextRegionContainer) {
-						((ITextRegionContainer) region).setParent(currentNode);
-					}
-
-				}
-			}
-			// the following contexts OPEN new StructuredDocumentRegions
-			else if ((currentNode != null && currentNode.isEnded()) || (type == DOMRegionContext.XML_CONTENT) || (type == DOMRegionContext.XML_CHAR_REFERENCE) || (type == DOMRegionContext.XML_ENTITY_REFERENCE) || (type == DOMRegionContext.XML_PI_OPEN) || (type == DOMRegionContext.XML_TAG_OPEN) || (type == DOMRegionContext.XML_END_TAG_OPEN) || (type == DOMRegionContext.XML_COMMENT_OPEN) || (type == DOMRegionContext.XML_CDATA_OPEN) || (type == DOMRegionContext.XML_DECLARATION_OPEN) || (type == DOMJSPRegionContexts.JSP_COMMENT_OPEN) || (type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN) || (type == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN) || (type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) || (type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) || (type == DOMJSPRegionContexts.JSP_CLOSE) || type == DOMJSPRegionContexts.JSP_EL_OPEN) {
-				if (currentNode != null) {
-					// ensure that any existing node is at least terminated
-					if (!currentNode.isEnded()) {
-						currentNode.setLength(region.getStart() - currentNode.getStart());
-						// fCurrentNode.setTextLength(region.getStart() -
-						// fCurrentNode.getStart());
-					}
-					lastNode = currentNode;
-				}
-				fireNodeParsed(currentNode);
-				currentNode = createStructuredDocumentRegion(type);
-				if (lastNode != null) {
-					lastNode.setNext(currentNode);
-				}
-				currentNode.setPrevious(lastNode);
-				currentNode.setStart(region.getStart());
-				currentNode.addRegion(region);
-				currentNode.setLength(region.getStart() + region.getLength() - currentNode.getStart());
-				region.adjustStart(-currentNode.getStart());
-				// DW, 4/16/2003 token regions no longer have parents
-				// region.setParent(currentNode);
-				if (region instanceof ITextRegionContainer) {
-					((ITextRegionContainer) region).setParent(currentNode);
-				}
-
-			}
-			// the following contexts NEITHER open nor close
-			// StructuredDocumentRegions; just add to them
-			else if ((type == DOMRegionContext.XML_TAG_NAME) || (type == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) || (type == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) || (type == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) || (type == DOMRegionContext.XML_COMMENT_TEXT) || (type == DOMRegionContext.XML_PI_CONTENT) || (type == DOMRegionContext.XML_DOCTYPE_INTERNAL_SUBSET) || (type == DOMJSPRegionContexts.JSP_COMMENT_TEXT) || (type == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME) || (type == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) || type == DOMJSPRegionContexts.JSP_EL_CONTENT) {
-				currentNode.addRegion(region);
-				currentNode.setLength(region.getStart() + region.getLength() - currentNode.getStart());
-				region.adjustStart(-currentNode.getStart());
-				// DW, 4/16/2003 token regions no longer have parents
-				// region.setParent(currentNode);
-				if (region instanceof ITextRegionContainer) {
-					((ITextRegionContainer) region).setParent(currentNode);
-				}
-			}
-			// the following contexts close off StructuredDocumentRegions
-			// cleanly
-			else if ((type == DOMRegionContext.XML_PI_CLOSE) || (type == DOMRegionContext.XML_TAG_CLOSE) || (type == DOMRegionContext.XML_EMPTY_TAG_CLOSE) || (type == DOMRegionContext.XML_COMMENT_CLOSE) || (type == DOMRegionContext.XML_CDATA_CLOSE) || (type == DOMJSPRegionContexts.JSP_CLOSE) || (type == DOMJSPRegionContexts.JSP_COMMENT_CLOSE) || (type == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE) || (type == DOMRegionContext.XML_DECLARATION_CLOSE) || type == DOMJSPRegionContexts.JSP_EL_CLOSE) {
-				currentNode.setEnded(true);
-				currentNode.setLength(region.getStart() + region.getLength() - currentNode.getStart());
-				currentNode.addRegion(region);
-				region.adjustStart(-currentNode.getStart());
-				// DW, 4/16/2003 token regions no longer have parents
-				// region.setParent(currentNode);
-				if (region instanceof ITextRegionContainer) {
-					((ITextRegionContainer) region).setParent(currentNode);
-				}
-			}
-			// this is extremely rare, but valid
-			else if (type == DOMRegionContext.WHITE_SPACE) {
-				ITextRegion lastRegion = currentNode.getLastRegion();
-				// pack the embedded container with this region
-				if (lastRegion instanceof ITextRegionContainer) {
-					ITextRegionContainer container = (ITextRegionContainer) lastRegion;
-					container.getRegions().add(region);
-					// DW, 4/16/2003 container regions have parent. Probably a
-					// better place to set,
-					// but for now, will (re)set each time through
-					container.setParent(currentNode);
-					// DW, 4/16/2003 token regions no longer have parents
-					// region.setParent(container);
-					region.adjustStart(container.getLength() - region.getStart());
-				}
-				currentNode.getLastRegion().adjustLength(region.getLength());
-				currentNode.adjustLength(region.getLength());
-			}
-			else if (type == DOMRegionContext.UNDEFINED && currentNode != null) {
-				// skip on a very-first region situation as the default
-				// behavior is good enough
-				// combine with previous if also undefined
-				if (currentNode.getLastRegion() != null && currentNode.getLastRegion().getType() == DOMRegionContext.UNDEFINED) {
-					currentNode.getLastRegion().adjustLength(region.getLength());
-					currentNode.adjustLength(region.getLength());
-				}
-				// previous wasn't undefined
-				else {
-					currentNode.addRegion(region);
-					currentNode.setLength(region.getStart() + region.getLength() - currentNode.getStart());
-					region.adjustStart(-currentNode.getStart());
-				}
-				if (region instanceof ITextRegionContainer) {
-					((ITextRegionContainer) region).setParent(currentNode);
-				}
-			}
-			else {
-				// if an unknown type is the first region in the document,
-				// ensure that a node exists
-				if (currentNode == null) {
-					currentNode = createStructuredDocumentRegion(type);
-					currentNode.setStart(region.getStart());
-				}
-				currentNode.addRegion(region);
-				currentNode.setLength(region.getStart() + region.getLength() - currentNode.getStart());
-				region.adjustStart(-currentNode.getStart());
-				// DW, 4/16/2003 token regions no longer have parents
-				// region.setParent(currentNode);
-				if (region instanceof ITextRegionContainer) {
-					((ITextRegionContainer) region).setParent(currentNode);
-				}
-
-				if (Debug.debugTokenizer)
-					System.out.println(getClass().getName() + " found region of not specifically handled type " + region.getType() + " @ " + region.getStart() + "[" + region.getLength() + "]");//$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
-
-			}
-
-			// these regions also get their own node, so close them cleanly
-			// NOTE: these regions have new StructuredDocumentRegions created
-			// for them above; it may
-			// be more readable if that is handled here as well, but the
-			// current layout
-			// ensures that they open StructuredDocumentRegions the same way
-			if ((type == DOMRegionContext.XML_CONTENT) || (type == DOMRegionContext.XML_CHAR_REFERENCE) || (type == DOMRegionContext.XML_ENTITY_REFERENCE) || (type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN) || (type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) || (type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) || (type == DOMJSPRegionContexts.JSP_CONTENT) || (type == DOMJSPRegionContexts.JSP_CLOSE)) {
-				currentNode.setEnded(true);
-			}
-			if (headNode == null && currentNode != null) {
-				headNode = currentNode;
-			}
-		}
-		if (currentNode != null) {
-			fireNodeParsed(currentNode);
-			currentNode.setPrevious(lastNode);
-		}
-		primReset();
-		return headNode;
-	}
-
-	public void removeNestablePrefix(String tagName) {
-		((JSPTokenizer) getTokenizer()).removeNestablePrefix(tagName);
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java
deleted file mode 100644
index 0d36dae..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPParserRegionFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.parser.internal;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.parser.ForeignRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.xml.core.internal.parser.regions.XMLParserRegionFactory;
-
-/**
- * 
- * This region factory is very specific to the parser output, and the specific
- * implementation classes for various regions.
- */
-public class JSPParserRegionFactory extends XMLParserRegionFactory {
-	public JSPParserRegionFactory() {
-		super();
-	}
-
-	public ITextRegion createToken(String context, int start, int textLength, int length, String lang, String surroundingTag) {
-		ITextRegion newRegion = null;
-		if (context == DOMJSPRegionContexts.JSP_CONTENT) {
-			newRegion = new ForeignRegion(context, start, textLength, length);
-		}
-		else
-			newRegion = super.createToken(context, start, textLength, length, lang, surroundingTag);
-		return newRegion;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPStructuredRegionFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPStructuredRegionFactory.java
deleted file mode 100644
index 498ed94..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPStructuredRegionFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.parser.internal;
-
-import org.eclipse.jst.jsp.core.internal.parser.JSPDirectiveStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.xml.core.internal.parser.XMLStructuredRegionFactory;
-
-/**
- * A simple class to generate instances of StructuredRegions. 
- */
-public class JSPStructuredRegionFactory extends XMLStructuredRegionFactory {
-
-	public static IStructuredDocumentRegion createRegion(int type) {
-		IStructuredDocumentRegion instance = null;
-		switch (type) {
-			case JSP_DIRECTIVE :
-				instance = new JSPDirectiveStructuredDocumentRegion();
-				break;
-			default :
-				instance = XMLStructuredRegionFactory.createRegion(type);
-		}
-		return instance;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
deleted file mode 100644
index e3d5ff8..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
+++ /dev/null
@@ -1,3943 +0,0 @@
-/* The following code was generated by JFlex 1.2.2 on 2/19/09 5:27 PM */
-
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Frits Jalvingh - contributions for bug 150794
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.parser.internal;
-
-import java.io.CharArrayReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jst.jsp.core.internal.contenttype.BooleanStack;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
-import org.eclipse.wst.sse.core.internal.ltk.parser.BlockTokenizer;
-import org.eclipse.wst.sse.core.internal.ltk.parser.TagMarker;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.parser.ContextRegionContainer;
-import org.eclipse.wst.xml.core.internal.parser.IntStack;
-
-
-/**
- * This class is a scanner generated by 
- * <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
- * on 2/19/09 5:27 PM from the specification file
- * <tt>file:/D:/dev/workspaces/wtp3isolation/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex</tt>
- */
-public class JSPTokenizer implements BlockTokenizer, DOMJSPRegionContexts {
-
-  /** this character denotes the end of file */
-  final public static int YYEOF = -1;
-
-  /** lexical states */
-  final public static int ST_JSP_VBL_DQUOTES = 52;
-  final public static int ST_JSP_VBL_SQUOTES = 51;
-  final public static int ST_JSP_VBL_SQUOTES_END = 53;
-  final public static int ST_XML_COMMENT_END = 4;
-  final public static int ST_JSP_DIRECTIVE_ATTRIBUTE_VALUE = 21;
-  final public static int ST_JSP_EL_SQUOTES_END = 46;
-  final public static int ST_JSP_EL_DQUOTES = 45;
-  final public static int ST_JSP_EL = 43;
-  final public static int ST_BLOCK_TAG_SCAN = 36;
-  final public static int ST_JSP_EL_SQUOTES = 44;
-  final public static int ST_DHTML_ATTRIBUTE_VALUE = 14;
-  final public static int ST_XML_PI_ATTRIBUTE_NAME = 8;
-  final public static int ST_DHTML_TAG_CLOSE = 15;
-  final public static int ST_XML_ATTRIBUTE_VALUE_DQUOTED = 42;
-  final public static int ST_DHTML_EQUALS = 13;
-  final public static int ST_XML_PI_ATTRIBUTE_VALUE = 10;
-  final public static int ST_XML_ATTRIBUTE_VALUE = 25;
-  final public static int ST_JSP_VBL = 50;
-  final public static int ST_JSP_SQUOTED_VBL = 56;
-  final public static int ST_XML_ATTRIBUTE_VALUE_SQUOTED = 41;
-  final public static int ST_XML_ATTRIBUTE_NAME = 23;
-  final public static int ST_XML_EQUALS = 24;
-  final public static int YYINITIAL = 0;
-  final public static int ST_JSP_DIRECTIVE_ATTRIBUTE_NAME = 19;
-  final public static int ST_JSP_CONTENT = 16;
-  final public static int ST_XML_DOCTYPE_ID_SYSTEM = 31;
-  final public static int ST_XML_ELEMENT_DECLARATION = 32;
-  final public static int ST_XML_DECLARATION_CLOSE = 27;
-  final public static int ST_JSP_DIRECTIVE_EQUALS = 20;
-  final public static int ST_JSP_VBL_DQUOTES_END = 54;
-  final public static int ST_JSP_DQUOTED_EL = 48;
-  final public static int ST_XML_DOCTYPE_DECLARATION = 28;
-  final public static int ST_CDATA_END = 2;
-  final public static int ST_PI_WS = 6;
-  final public static int ST_CDATA_TEXT = 1;
-  final public static int ST_JSP_DIRECTIVE_NAME_WHITESPACE = 18;
-  final public static int ST_XML_ELEMENT_DECLARATION_CONTENT = 33;
-  final public static int ST_XML_ATTLIST_DECLARATION = 34;
-  final public static int ST_JSP_EL_DQUOTES_END = 47;
-  final public static int ST_JSP_SQUOTED_EL = 49;
-  final public static int ST_JSP_COMMENT_END = 39;
-  final public static int ST_XML_PI_EQUALS = 9;
-  final public static int ST_XML_ATTLIST_DECLARATION_CONTENT = 35;
-  final public static int ST_XML_DOCTYPE_ID_PUBLIC = 30;
-  final public static int ST_JSP_DQUOTED_VBL = 55;
-  final public static int ST_DHTML_ATTRIBUTE_NAME = 12;
-  final public static int ST_ABORT_EMBEDDED = 37;
-  final public static int ST_XML_DOCTYPE_EXTERNAL_ID = 29;
-  final public static int ST_JSP_COMMENT = 38;
-  final public static int ST_PI_CONTENT = 7;
-  final public static int ST_BLOCK_TAG_INTERNAL_SCAN = 37;
-  final public static int ST_PI = 5;
-  final public static int ST_XML_DECLARATION = 26;
-  final public static int ST_JSP_DIRECTIVE_NAME = 17;
-  final public static int ST_XML_TAG_NAME = 22;
-  final public static int ST_XML_PI_TAG_CLOSE = 11;
-  final public static int ST_XML_COMMENT = 3;
-  final public static int ST_JSP_ATTRIBUTE_VALUE = 40;
-
-  /** 
-   * Translates characters to character classes
-   */
-  final private static String yycmap_packed = 
-    "\11\0\1\5\1\27\2\0\1\20\22\0\1\20\1\26\1\12\1\66"+
-    "\1\15\1\23\1\13\1\14\1\25\1\25\1\25\1\25\1\25\1\7"+
-    "\1\6\1\3\12\21\1\11\1\73\1\1\1\52\1\2\1\4\1\22"+
-    "\1\41\1\74\1\37\1\40\1\56\1\71\1\63\1\63\1\64\1\63"+
-    "\1\63\1\34\1\32\1\65\1\53\1\55\1\63\1\70\1\67\1\42"+
-    "\1\72\2\63\1\30\1\54\1\63\1\36\1\17\1\24\1\0\1\10"+
-    "\1\0\1\60\1\104\1\75\1\61\1\44\1\71\1\76\1\106\1\47"+
-    "\1\101\1\63\1\35\1\33\1\51\1\50\1\102\1\63\1\45\1\46"+
-    "\1\57\1\103\1\43\1\63\1\31\1\62\1\63\1\16\1\0\1\105"+
-    "\71\0\1\100\10\0\27\77\1\0\37\77\1\0\72\77\2\0\13\77"+
-    "\2\0\10\77\1\0\65\77\1\0\104\77\11\0\44\77\3\0\2\77"+
-    "\4\0\36\77\70\0\131\77\22\0\7\77\16\0\2\100\56\0\106\100"+
-    "\32\0\2\100\44\0\1\77\1\100\3\77\1\0\1\77\1\0\24\77"+
-    "\1\0\54\77\1\0\7\77\3\0\1\77\1\0\1\77\1\0\1\77"+
-    "\1\0\1\77\1\0\22\77\15\0\14\77\1\0\102\77\1\0\14\77"+
-    "\1\0\44\77\1\0\4\100\11\0\65\77\2\0\2\77\2\0\2\77"+
-    "\3\0\34\77\2\0\10\77\2\0\2\77\67\0\46\77\2\0\1\77"+
-    "\7\0\46\77\12\0\21\100\1\0\27\100\1\0\3\100\1\0\1\100"+
-    "\1\0\2\100\1\0\1\100\13\0\33\77\5\0\3\77\56\0\32\77"+
-    "\5\0\1\100\12\77\10\100\15\0\12\100\6\0\1\100\107\77\2\0"+
-    "\5\77\1\0\17\77\1\0\4\77\1\0\1\77\17\100\2\77\2\100"+
-    "\1\0\4\100\2\0\12\100\u0207\0\3\100\1\0\65\77\2\0\1\100"+
-    "\1\77\20\100\3\0\4\100\3\0\12\77\2\100\2\0\12\100\21\0"+
-    "\3\100\1\0\10\77\2\0\2\77\2\0\26\77\1\0\7\77\1\0"+
-    "\1\77\3\0\4\77\2\0\1\100\1\0\7\100\2\0\2\100\2\0"+
-    "\3\100\11\0\1\100\4\0\2\77\1\0\3\77\2\100\2\0\12\100"+
-    "\2\77\20\0\1\100\2\0\6\77\4\0\2\77\2\0\26\77\1\0"+
-    "\7\77\1\0\2\77\1\0\2\77\1\0\2\77\2\0\1\100\1\0"+
-    "\5\100\4\0\2\100\2\0\3\100\13\0\4\77\1\0\1\77\7\0"+
-    "\12\100\2\100\3\77\14\0\3\100\1\0\7\77\1\0\1\77\1\0"+
-    "\3\77\1\0\26\77\1\0\7\77\1\0\2\77\1\0\5\77\2\0"+
-    "\1\100\1\77\10\100\1\0\3\100\1\0\3\100\22\0\1\77\5\0"+
-    "\12\100\21\0\3\100\1\0\10\77\2\0\2\77\2\0\26\77\1\0"+
-    "\7\77\1\0\2\77\2\0\4\77\2\0\1\100\1\77\6\100\3\0"+
-    "\2\100\2\0\3\100\10\0\2\100\4\0\2\77\1\0\3\77\4\0"+
-    "\12\100\22\0\2\100\1\0\6\77\3\0\3\77\1\0\4\77\3\0"+
-    "\2\77\1\0\1\77\1\0\2\77\3\0\2\77\3\0\3\77\3\0"+
-    "\10\77\1\0\3\77\4\0\5\100\3\0\3\100\1\0\4\100\11\0"+
-    "\1\100\17\0\11\100\21\0\3\100\1\0\10\77\1\0\3\77\1\0"+
-    "\27\77\1\0\12\77\1\0\5\77\4\0\7\100\1\0\3\100\1\0"+
-    "\4\100\7\0\2\100\11\0\2\77\4\0\12\100\22\0\2\100\1\0"+
-    "\10\77\1\0\3\77\1\0\27\77\1\0\12\77\1\0\5\77\4\0"+
-    "\7\100\1\0\3\100\1\0\4\100\7\0\2\100\7\0\1\77\1\0"+
-    "\2\77\4\0\12\100\22\0\2\100\1\0\10\77\1\0\3\77\1\0"+
-    "\27\77\1\0\20\77\4\0\6\100\2\0\3\100\1\0\4\100\11\0"+
-    "\1\100\10\0\2\77\4\0\12\100\221\0\56\77\1\0\1\77\1\100"+
-    "\2\77\7\100\5\0\6\77\1\100\10\100\1\0\12\100\47\0\2\77"+
-    "\1\0\1\77\2\0\2\77\1\0\1\77\2\0\1\77\6\0\4\77"+
-    "\1\0\7\77\1\0\3\77\1\0\1\77\1\0\1\77\2\0\2\77"+
-    "\1\0\2\77\1\0\1\77\1\100\2\77\6\100\1\0\2\100\1\77"+
-    "\2\0\5\77\1\0\1\100\1\0\6\100\2\0\12\100\76\0\2\100"+
-    "\6\0\12\100\13\0\1\100\1\0\1\100\1\0\1\100\4\0\2\100"+
-    "\10\77\1\0\41\77\7\0\24\100\1\0\6\100\4\0\6\100\1\0"+
-    "\1\100\1\0\25\100\3\0\7\100\1\0\1\100\346\0\46\77\12\0"+
-    "\47\77\11\0\1\77\1\0\2\77\1\0\3\77\1\0\1\77\1\0"+
-    "\2\77\1\0\5\77\51\0\1\77\1\0\1\77\1\0\1\77\13\0"+
-    "\1\77\1\0\1\77\1\0\1\77\3\0\2\77\3\0\1\77\5\0"+
-    "\3\77\1\0\1\77\1\0\1\77\1\0\1\77\1\0\1\77\3\0"+
-    "\2\77\3\0\2\77\1\0\1\77\50\0\1\77\11\0\1\77\2\0"+
-    "\1\77\2\0\2\77\7\0\2\77\1\0\1\77\1\0\7\77\50\0"+
-    "\1\77\4\0\1\77\10\0\1\77\u0c06\0\234\77\4\0\132\77\6\0"+
-    "\26\77\2\0\6\77\2\0\46\77\2\0\6\77\2\0\10\77\1\0"+
-    "\1\77\1\0\1\77\1\0\1\77\1\0\37\77\2\0\65\77\1\0"+
-    "\7\77\1\0\1\77\3\0\3\77\1\0\7\77\3\0\4\77\2\0"+
-    "\6\77\4\0\15\77\5\0\3\77\1\0\7\77\323\0\15\100\4\0"+
-    "\1\100\104\0\1\77\3\0\2\77\2\0\1\77\121\0\3\77\u0e82\0"+
-    "\1\100\1\0\1\77\31\0\11\77\6\100\1\0\5\100\13\0\124\77"+
-    "\4\0\2\100\2\0\2\100\2\0\132\77\1\0\3\100\6\0\50\77"+
-    "\u1cd3\0\u51a6\77\u0c5a\0\u2ba4\77\134\0\u0800\0\u1ffe\0\2\0";
-
-  /** 
-   * Translates characters to character classes
-   */
-  final private static char [] yycmap = yy_unpack_cmap(yycmap_packed);
-
-  /** 
-   * Translates a state to a row index in the transition table
-   */
-  final private static int yy_rowMap [] = { 
-        0,    71,   142,   213,   284,   355,   426,   497,   568,   639, 
-      710,   781,   852,   923,   994,  1065,  1136,  1207,  1278,  1349, 
-     1420,  1491,  1562,  1633,  1704,  1775,  1846,  1917,  1988,  2059, 
-     2130,  2201,  2272,  2343,  2414,  2485,  2556,  2627,  2698,  2769, 
-     2840,  2911,  2982,  3053,  3124,  3195,  3266,  3337,  3408,  3479, 
-     3550,  3621,  3692,  3763,  3834,  3905,  3976,  4047,  4118,  4189, 
-     4260,  4331,  4402,  4473,  4544,  4473,  4544,  4615,  4473,  4473, 
-     4544,  4686,  4757,  4828,  4899,  4970,  5041,  5112,  5183,  4473, 
-     4544,  5254,  5325,  5396,  4473,  5467,  5467,  5538,  5609,  5680, 
-     5254,  4473,  5751,  5822,  4473,  5893,  5964,  6035,  6106,  4473, 
-     4544,  6177,  6248,  6319,  6390,  6461,  6532,  4473,  6603,  6603, 
-     6674,  6745,  6816,  6887,  6958,  4473,  7029,  7100,  7171,  7242, 
-     7313,  7384,  4473,  7455,  7526,  7597,  7668,  7739,  7810,  7881, 
-     7952,  4473,  8023,  8094,  8165,  8236,  8307,  8378,  8449,  8520, 
-     8520,  8591,  8662,  8733,  8804,  8804,  8875,  8946,  9017,  9088, 
-     9088,  9159,  9230,  9301,  9372,  4473,  9443,  9443,  9514,  9585, 
-     9656,  9727,  4473,  4473,  4544,  4473,  4544,  9798,  9869,  7526, 
-     9940, 10011, 10082, 10153, 10224, 10295, 10366, 10437,  4473, 10508, 
-    10579, 10650, 10721,  4473, 10792, 10863, 10934, 11005,  4473,  4473, 
-    11076,  4473, 11147, 11218, 11147, 11289, 11360, 11289,  4473,  4473, 
-    11431, 11502,  4473, 11573,  4473, 11644, 11715, 11786, 11857, 11928, 
-     4473,  4473, 11999,  4473, 12070, 12141, 12070, 12212, 12283, 12212, 
-     4473,  4473, 12354, 12425, 12496,  4473, 12567, 12638, 12709,  4473, 
-     4473, 12780, 12851, 12922, 12993, 13064,  4473, 13135, 13206, 13277, 
-    13348, 13419, 13490, 13561, 13632,  4473, 13703, 13774, 13845,  4473, 
-     4473,  5467,  5609,  4473, 13916,  5680, 13987,  5751,  5893,  5964, 
-    14058,  6035,  4473, 14129, 14200,  6106, 14271,  4473, 12851,  4473, 
-     6603,  6674,  4473, 14342,  6745, 14413,  4473, 14484, 14555,  7455, 
-    14626,  7668,  4473, 14697,  7739, 14768, 14839, 14910, 14981, 15052, 
-    15123,  8236,  4473, 15194, 15265,  8520,  8591,  4473, 15336, 15407, 
-    15478, 15549, 15620,  8733,  8520,  8804,  8875,  4473,  8946,  9017, 
-     8804,  9088,  9159,  4473, 15691, 15762, 15833, 15904, 15975, 16046, 
-    16117,  9443,  9514,  4473, 16188, 16259, 16330, 16401, 16472, 16543, 
-    16614, 16685,  9869, 10011,  4473, 16756, 16827, 10082, 16898, 16969, 
-    17040, 17111,  4473, 17182,  4473,  4473,  4473,  4473, 17253, 17324, 
-    17395, 17466, 11147,  4473, 17537, 17608, 11289,  4473, 17679, 17750, 
-    17821, 17892, 17963, 18034, 18105, 18176, 18247, 11857, 12070,  4473, 
-    18318, 18389, 12212,  4473, 18460, 18531, 18602, 18673, 18744, 18815, 
-    18886, 18957, 19028,  4473,  4473,  4473, 19099, 19170, 19241, 19312, 
-    19383,  4473, 19454, 19525,  4473,  4473,  4473,  4473,  4473,  4899, 
-    19596, 19667, 19738, 19809, 19880, 19951, 20022, 19951, 20093, 20164, 
-    20093, 20235, 20306, 20377, 20448, 20519, 20590, 20661, 20661, 20732, 
-    20803, 20803, 20874,  9301,  9301,  9301, 20945, 21016, 21087, 21087, 
-    21158,  9656,  9656,  9656, 21229, 21300, 10011, 10082, 21371, 21371, 
-    21442, 21442, 17395, 21513, 10934, 10934, 10934, 21584, 21655, 11147, 
-    11147, 11147, 21726, 21797, 11289, 11289, 11289, 21868, 21939, 11431, 
-    11431, 11431, 17963, 22010, 22081, 11644, 11644, 11644, 18176, 22152, 
-    22223, 11857, 11857, 11857, 22294, 12070, 12070, 12070, 22365, 22436, 
-    12212, 12212, 12212, 22507, 22578, 12354, 12354, 12354, 18744, 22649, 
-    22720, 12567, 12567, 12567, 18957, 22791,  4473,  4473, 22862, 22933, 
-     4473, 23004, 23075, 23146, 23217,  7455,  4473,  4473, 23288, 23359, 
-    23430, 23501, 23572, 15549, 15904,  9301, 23643, 16401,  9656, 23714, 
-     4473,  9869, 10934, 11147, 23785, 11289, 23856, 11431, 23927,  4473, 
-    11644, 23998, 11857, 12070, 24069, 12212, 24140, 12354, 24211,  4473, 
-    12567, 24282, 24353, 24424, 24495, 24566, 24637, 24708, 24779, 24850, 
-    24921, 24992, 25063, 25134, 25205, 25276, 25347, 25418, 25489, 25560, 
-    25631, 25702, 25773, 25844,  4899, 25915, 25986, 26057, 26128, 26199, 
-     4473,  4473, 26270, 26341, 26412, 26483, 17963, 18176, 26554, 26625, 
-    18744, 18957, 26696, 26767, 26838, 26909,  4473,  4473,  4473, 26980, 
-    27051, 27122, 27193, 27264, 27335, 27406, 27477,  7171, 27548, 27619, 
-    27690, 27761, 27832, 27903, 27974,  4473, 28045, 28116,  9301,  9656, 
-    11147, 11289, 12070, 12212, 28187, 28258, 28329, 28400, 28471, 28542, 
-    28613, 28684,  4899, 28755, 28826, 28897, 28968, 29039, 29110, 29181, 
-    29252, 29323, 29394, 29465, 29536, 29607, 29678, 29749, 29820, 29891, 
-    29962, 30033, 30104, 30175, 30246, 30317, 30388, 30459, 30530, 30601, 
-    30672, 30743, 30814, 30885, 30956, 31027, 31098, 31169, 31240,  4473, 
-    31311, 31382, 31453, 31524,  7171, 31595, 31666, 31737, 31808, 31879, 
-    31950, 32021, 32092, 32163, 32234, 32305, 32376, 32447, 32518
-  };
-
-  /** 
-   * The packed transition table of the DFA
-   */
-  final private static String yy_packed = 
-    "\1\72\1\73\11\72\1\74\1\72\1\75\5\72\1\76"+
-    "\42\72\1\77\20\72\1\100\1\101\105\100\1\102\1\103"+
-    "\22\102\1\104\2\102\1\105\57\102\1\106\1\107\105\106"+
-    "\1\102\1\103\5\102\1\110\17\102\1\105\60\102\1\103"+
-    "\2\102\1\111\1\112\2\102\2\113\6\102\1\112\6\102"+
-    "\1\112\1\114\1\115\4\113\1\102\10\113\1\116\2\113"+
-    "\1\102\11\113\1\116\1\113\1\102\4\113\1\102\4\113"+
-    "\1\102\4\113\1\102\1\113\1\102\1\103\2\102\1\111"+
-    "\1\117\12\102\1\117\6\102\1\117\57\102\1\120\1\121"+
-    "\2\120\1\122\22\120\1\105\57\120\1\102\1\103\2\102"+
-    "\1\123\1\112\2\102\2\124\6\102\1\112\6\102\1\112"+
-    "\6\124\1\102\13\124\1\102\13\124\1\102\4\124\1\102"+
-    "\4\124\1\102\4\124\1\102\1\124\1\102\1\103\2\102"+
-    "\1\123\1\112\2\102\2\124\6\102\1\112\6\102\1\112"+
-    "\6\124\1\102\13\124\1\125\13\124\1\102\4\124\1\102"+
-    "\4\124\1\102\4\124\1\102\1\124\1\126\1\103\1\102"+
-    "\1\127\1\130\1\112\4\126\1\131\1\126\1\132\3\126"+
-    "\1\112\6\126\1\112\57\126\1\102\1\103\2\102\1\133"+
-    "\22\102\1\105\60\102\1\103\1\134\1\135\1\102\1\112"+
-    "\2\102\2\136\6\102\1\112\6\102\1\112\6\136\1\102"+
-    "\13\136\1\102\13\136\1\102\4\136\1\102\4\136\1\102"+
-    "\4\136\1\102\1\136\1\102\1\103\1\134\1\135\1\102"+
-    "\1\112\2\102\2\136\6\102\1\112\6\102\1\112\6\136"+
-    "\1\102\13\136\1\137\13\136\1\102\4\136\1\102\4\136"+
-    "\1\102\4\136\1\102\1\136\1\140\1\103\1\134\1\141"+
-    "\1\140\1\112\4\140\1\142\1\140\1\143\3\140\1\112"+
-    "\6\140\1\112\57\140\1\102\1\103\3\102\1\112\12\102"+
-    "\1\112\6\102\1\112\57\102\1\144\1\145\21\144\1\146"+
-    "\63\144\1\102\1\147\3\102\1\112\2\102\2\150\6\102"+
-    "\1\112\2\102\1\151\3\102\1\112\6\150\1\102\13\150"+
-    "\1\102\13\150\1\102\4\150\1\102\4\150\1\102\4\150"+
-    "\1\102\1\150\1\102\1\147\3\102\1\152\12\102\1\152"+
-    "\2\102\1\151\3\102\1\152\60\102\1\147\3\102\1\112"+
-    "\2\102\2\153\6\102\1\112\2\102\1\151\3\102\1\112"+
-    "\6\153\1\102\13\153\1\102\13\153\1\102\4\153\1\102"+
-    "\4\153\1\102\4\153\1\102\1\153\1\102\1\147\3\102"+
-    "\1\112\2\102\2\153\6\102\1\112\2\102\1\151\3\102"+
-    "\1\112\6\153\1\102\13\153\1\154\13\153\1\102\4\153"+
-    "\1\102\4\153\1\102\4\153\1\102\1\153\1\155\1\147"+
-    "\1\102\1\156\1\155\1\112\4\155\1\157\1\155\1\160"+
-    "\3\155\1\112\2\155\1\161\3\155\1\112\57\155\1\162"+
-    "\1\163\1\164\1\165\4\162\2\166\16\162\6\167\1\162"+
-    "\13\167\1\162\13\167\1\162\4\167\1\162\4\167\1\162"+
-    "\1\170\3\167\1\162\1\167\1\102\1\171\1\164\1\165"+
-    "\1\102\1\112\2\102\2\172\6\102\1\112\6\102\1\112"+
-    "\6\172\1\102\13\172\1\102\13\172\1\102\4\172\1\102"+
-    "\4\172\1\102\4\172\1\102\1\172\1\102\1\171\1\164"+
-    "\1\165\1\102\1\112\2\102\2\172\6\102\1\112\6\102"+
-    "\1\112\6\172\1\102\13\172\1\173\13\172\1\102\4\172"+
-    "\1\102\4\172\1\102\4\172\1\102\1\172\1\174\1\175"+
-    "\1\164\1\176\1\174\1\112\4\174\1\177\1\174\1\200"+
-    "\1\201\2\174\1\112\6\174\1\112\36\174\1\202\20\174"+
-    "\1\102\1\203\1\204\2\102\1\112\12\102\1\112\6\102"+
-    "\1\112\10\102\1\205\1\206\2\102\1\207\11\102\1\207"+
-    "\1\102\1\206\1\205\26\102\1\103\1\204\2\102\1\112"+
-    "\12\102\1\112\6\102\1\112\6\102\1\210\51\102\1\103"+
-    "\1\204\2\102\1\112\2\102\2\211\6\102\1\112\6\102"+
-    "\1\112\6\211\1\210\13\211\1\102\13\211\1\102\4\211"+
-    "\1\102\4\211\1\102\4\211\1\102\1\211\1\102\1\103"+
-    "\1\204\2\102\1\112\12\102\1\112\6\102\1\112\6\102"+
-    "\1\210\7\102\1\212\6\102\1\213\11\102\1\212\12\102"+
-    "\1\213\4\102\1\214\1\103\1\204\1\215\1\214\1\112"+
-    "\4\214\1\216\1\214\1\217\3\214\1\112\6\214\1\112"+
-    "\6\214\1\220\50\214\1\221\1\103\1\204\1\222\1\221"+
-    "\1\112\4\221\1\223\1\221\1\224\3\221\1\112\6\221"+
-    "\1\112\6\221\1\225\50\221\1\226\1\103\1\204\1\227"+
-    "\1\226\1\112\4\226\1\230\1\226\1\231\3\226\1\112"+
-    "\6\226\1\112\57\226\1\232\1\233\1\234\104\232\1\235"+
-    "\1\103\1\204\1\236\1\235\1\112\4\235\1\237\1\235"+
-    "\1\240\3\235\1\112\6\235\1\112\57\235\1\241\1\242"+
-    "\1\243\104\241\1\244\1\245\105\244\1\102\1\103\25\102"+
-    "\1\105\57\102\1\246\1\247\105\246\1\102\1\103\5\102"+
-    "\1\250\17\102\1\105\57\102\1\251\1\252\1\164\1\253"+
-    "\1\251\1\112\4\251\1\254\1\251\1\255\1\256\2\251"+
-    "\1\112\6\251\1\112\36\251\1\257\20\251\1\260\1\261"+
-    "\3\260\1\262\6\260\1\263\1\264\2\260\1\262\6\260"+
-    "\1\262\36\260\1\265\20\260\1\266\1\261\3\266\1\267"+
-    "\4\266\1\270\2\266\1\271\2\266\1\267\6\266\1\267"+
-    "\36\266\1\272\20\266\1\273\1\274\10\273\1\275\1\273"+
-    "\1\276\1\277\67\273\1\300\1\273\1\301\1\302\12\301"+
-    "\1\102\12\301\1\303\57\301\1\304\1\305\10\304\1\102"+
-    "\14\304\1\306\57\304\1\102\1\103\12\102\1\307\12\102"+
-    "\1\105\60\102\1\103\10\102\1\310\14\102\1\105\57\102"+
-    "\1\311\1\312\10\311\1\313\4\311\1\314\65\311\1\315"+
-    "\1\311\1\316\1\317\12\316\1\263\2\316\1\320\65\316"+
-    "\1\315\1\316\1\321\1\322\10\321\1\323\1\321\1\324"+
-    "\51\321\1\325\16\321\1\326\1\321\1\327\1\330\12\327"+
-    "\1\102\12\327\1\331\57\327\1\332\1\333\10\332\1\102"+
-    "\14\332\1\334\57\332\1\102\1\103\12\102\1\335\12\102"+
-    "\1\105\60\102\1\103\10\102\1\336\14\102\1\105\57\102"+
-    "\1\337\1\340\10\337\1\313\4\337\1\341\65\337\1\342"+
-    "\1\337\1\343\1\344\12\343\1\263\2\343\1\345\65\343"+
-    "\1\342\1\343\1\72\1\0\11\72\1\0\1\72\1\0"+
-    "\5\72\1\0\42\72\1\0\20\72\3\0\1\346\1\347"+
-    "\16\0\1\350\2\0\1\351\65\0\1\352\2\0\2\353"+
-    "\6\0\1\352\6\0\1\352\6\353\1\0\13\353\1\0"+
-    "\13\353\1\354\4\353\1\0\4\353\1\0\4\353\1\0"+
-    "\1\353\1\355\1\0\11\355\1\0\1\355\1\356\1\357"+
-    "\4\355\1\0\63\355\5\0\1\352\2\0\2\360\6\0"+
-    "\1\352\6\0\1\352\6\360\1\0\13\360\1\0\13\360"+
-    "\1\0\4\360\1\0\4\360\1\0\4\360\1\0\1\360"+
-    "\1\355\1\0\11\355\1\0\2\355\1\361\4\355\1\0"+
-    "\42\355\1\362\20\355\132\0\1\350\2\0\1\363\104\0"+
-    "\1\364\71\0\1\365\101\0\1\366\111\0\1\112\12\0"+
-    "\1\112\6\0\1\112\65\0\4\113\7\0\1\113\6\0"+
-    "\6\113\1\0\13\113\1\0\13\113\1\0\4\113\1\0"+
-    "\11\113\1\0\1\113\6\0\4\113\7\0\1\113\6\0"+
-    "\2\113\2\367\2\113\1\0\13\113\1\0\13\113\1\0"+
-    "\4\113\1\0\11\113\1\0\1\113\6\0\4\113\7\0"+
-    "\1\113\6\0\2\113\1\367\1\370\2\113\1\0\13\113"+
-    "\1\0\13\113\1\0\4\113\1\0\11\113\1\0\1\113"+
-    "\6\0\4\113\7\0\1\113\6\0\2\113\2\371\2\113"+
-    "\1\0\13\113\1\0\13\113\1\0\4\113\1\0\11\113"+
-    "\1\0\1\113\5\0\1\117\12\0\1\117\6\0\1\117"+
-    "\61\0\1\372\106\0\1\373\112\0\4\124\7\0\1\124"+
-    "\6\0\6\124\1\0\13\124\1\0\13\124\1\0\4\124"+
-    "\1\0\11\124\1\0\1\124\1\126\2\0\1\374\1\126"+
-    "\1\0\4\126\1\0\1\126\1\0\3\126\1\0\6\126"+
-    "\1\0\60\126\1\0\1\373\1\374\1\126\1\0\4\126"+
-    "\1\0\1\126\1\0\3\126\1\0\6\126\1\0\57\126"+
-    "\1\375\1\0\10\375\1\376\2\375\1\377\50\375\1\377"+
-    "\20\375\1\u0100\1\0\12\u0100\1\376\1\u0101\50\u0100\1\u0101"+
-    "\20\u0100\2\0\1\134\1\u0102\111\0\4\136\7\0\1\136"+
-    "\6\0\6\136\1\0\13\136\1\0\13\136\1\0\4\136"+
-    "\1\0\11\136\1\0\1\136\1\140\2\0\1\u0103\1\140"+
-    "\1\0\4\140\1\0\1\140\1\0\3\140\1\0\6\140"+
-    "\1\0\60\140\1\0\1\134\1\u0104\1\140\1\0\4\140"+
-    "\1\0\1\140\1\0\3\140\1\0\6\140\1\0\57\140"+
-    "\1\142\1\0\1\u0105\1\u0106\1\142\1\u0105\4\142\1\u0107"+
-    "\1\142\1\u0105\1\u0108\2\142\1\u0105\6\142\1\u0105\36\142"+
-    "\1\u0108\20\142\1\143\1\0\1\u0109\1\u010a\1\143\1\u0109"+
-    "\4\143\1\u0109\1\143\1\u0107\1\u010b\2\143\1\u0109\6\143"+
-    "\1\u0109\36\143\1\u010b\20\143\2\0\1\u010c\127\0\1\350"+
-    "\2\0\1\u010d\66\0\4\150\7\0\1\150\6\0\6\150"+
-    "\1\0\13\150\1\0\13\150\1\0\4\150\1\0\11\150"+
-    "\1\0\1\150\2\0\1\u010e\111\0\1\152\12\0\1\152"+
-    "\6\0\1\152\65\0\4\153\7\0\1\153\6\0\6\153"+
-    "\1\0\13\153\1\0\13\153\1\0\4\153\1\0\11\153"+
-    "\1\0\1\153\1\155\2\0\1\u010f\1\155\1\0\4\155"+
-    "\1\0\1\155\1\0\3\155\1\0\6\155\1\0\57\155"+
-    "\1\u0110\1\0\10\u0110\1\u0111\2\u0110\1\u0112\50\u0110\1\u0112"+
-    "\20\u0110\1\u0113\1\0\12\u0113\1\u0111\1\u0114\50\u0113\1\u0114"+
-    "\20\u0113\1\155\1\0\1\u010e\1\u010f\1\155\1\0\4\155"+
-    "\1\0\1\155\1\0\3\155\1\0\6\155\1\0\57\155"+
-    "\1\162\3\0\24\162\6\0\1\162\13\0\1\162\13\0"+
-    "\1\162\4\0\1\162\4\0\1\162\4\0\1\162\4\0"+
-    "\1\346\17\0\1\350\2\0\1\351\62\0\1\u0115\104\0"+
-    "\1\162\3\0\2\162\4\166\7\162\1\166\6\162\6\167"+
-    "\1\162\13\167\1\162\13\167\1\162\4\167\1\162\4\167"+
-    "\1\166\4\167\1\162\1\167\6\0\4\167\7\0\1\167"+
-    "\6\0\6\167\1\0\13\167\1\0\13\167\1\0\4\167"+
-    "\1\0\11\167\1\0\1\167\6\0\4\167\7\0\1\167"+
-    "\6\0\6\167\1\0\7\167\1\u0116\3\167\1\0\13\167"+
-    "\1\0\4\167\1\0\11\167\1\0\1\167\3\0\1\346"+
-    "\4\0\2\u0117\11\0\1\350\2\0\1\351\1\0\6\u0117"+
-    "\1\0\13\u0117\1\0\13\u0117\1\0\4\u0117\1\0\4\u0117"+
-    "\1\0\4\u0117\1\0\1\u0117\6\0\4\172\7\0\1\172"+
-    "\6\0\6\172\1\0\13\172\1\0\13\172\1\0\4\172"+
-    "\1\0\11\172\1\0\1\172\1\174\2\0\1\u0118\1\174"+
-    "\1\0\4\174\1\0\1\174\1\0\3\174\1\0\6\174"+
-    "\1\0\57\174\3\0\1\346\4\0\2\u0119\11\0\1\350"+
-    "\2\0\1\351\1\0\6\u0119\1\0\13\u0119\1\0\13\u0119"+
-    "\1\0\4\u0119\1\0\4\u0119\1\0\4\u0119\1\0\1\u0119"+
-    "\1\174\1\0\1\u0115\1\u0118\1\174\1\0\4\174\1\0"+
-    "\1\174\1\0\3\174\1\0\6\174\1\0\57\174\1\u011a"+
-    "\1\0\10\u011a\1\u011b\2\u011a\1\u011c\50\u011a\1\u011c\20\u011a"+
-    "\1\u011d\1\0\12\u011d\1\u011b\1\u011e\50\u011d\1\u011e\20\u011d"+
-    "\1\174\2\0\1\u0118\1\174\1\0\4\174\1\0\1\174"+
-    "\1\0\1\174\1\u011f\1\174\1\0\6\174\1\0\60\174"+
-    "\2\0\1\u0118\1\174\1\0\4\174\1\0\1\174\1\0"+
-    "\1\174\1\u0120\1\174\1\0\6\174\1\0\57\174\3\0"+
-    "\1\346\17\0\1\350\2\0\1\u010d\130\0\1\u0121\2\0"+
-    "\1\u0121\75\0\1\u0122\14\0\1\u0122\63\0\2\u0123\51\0"+
-    "\24\u0124\1\u0125\62\u0124\6\0\4\211\7\0\1\211\6\0"+
-    "\6\211\1\0\13\211\1\0\13\211\1\0\4\211\1\0"+
-    "\11\211\1\0\1\211\54\0\1\u0126\5\0\1\u0126\116\0"+
-    "\1\u0127\10\0\1\u0127\3\0\1\214\2\0\1\u0128\1\214"+
-    "\1\0\4\214\1\0\1\214\1\0\3\214\1\0\6\214"+
-    "\1\0\57\214\1\u0129\1\0\10\u0129\1\u012a\2\u0129\1\u012b"+
-    "\50\u0129\1\u012b\20\u0129\1\u012c\1\0\1\u012c\2\u012d\1\u012c"+
-    "\4\u012d\2\u012c\1\u012e\1\u012f\2\u012c\4\u012d\1\u012c\11\u012d"+
-    "\1\u012c\27\u012d\1\u012f\10\u012d\2\u012c\4\u012d\1\u012c\1\u012d"+
-    "\1\220\2\u0124\1\u0130\1\220\1\u0124\4\220\1\u0124\1\220"+
-    "\1\u0124\3\220\1\u0124\3\220\1\u0131\2\220\1\u0124\57\220"+
-    "\1\221\2\0\1\u0132\1\221\1\0\4\221\1\0\1\221"+
-    "\1\0\3\221\1\0\6\221\1\0\57\221\12\u0133\1\u0134"+
-    "\74\u0133\14\u0135\1\u0134\72\u0135\1\225\2\u0124\1\u0136\1\225"+
-    "\1\u0124\4\225\1\u0124\1\225\1\u0124\3\225\1\u0124\3\225"+
-    "\1\u0137\2\225\1\u0124\57\225\1\226\2\0\1\u0138\1\226"+
-    "\1\0\4\226\1\0\1\226\1\0\3\226\1\0\6\226"+
-    "\1\0\57\226\1\u0139\1\0\10\u0139\1\u013a\2\u0139\1\u013b"+
-    "\50\u0139\1\u013b\20\u0139\1\u013c\1\0\1\u013c\2\u013d\1\u013c"+
-    "\4\u013d\2\u013c\1\u013e\1\u013f\2\u013c\4\u013d\1\u013c\11\u013d"+
-    "\1\u013c\27\u013d\1\u013f\10\u013d\2\u013c\4\u013d\1\u013c\1\u013d"+
-    "\2\232\1\0\106\232\1\0\20\232\1\u0140\2\232\1\u0141"+
-    "\60\232\1\235\2\0\1\u0142\1\235\1\0\4\235\1\0"+
-    "\1\235\1\0\3\235\1\0\6\235\1\0\57\235\1\u0143"+
-    "\1\0\10\u0143\1\u0144\2\u0143\1\u0145\50\u0143\1\u0145\20\u0143"+
-    "\1\u0146\1\0\1\u0146\2\u0147\1\u0146\4\u0147\2\u0146\1\u0148"+
-    "\1\u0149\2\u0146\4\u0147\1\u0146\11\u0147\1\u0146\27\u0147\1\u0149"+
-    "\10\u0147\2\u0146\4\u0147\1\u0146\1\u0147\2\241\1\0\106\241"+
-    "\1\0\20\241\1\u014a\2\241\1\u014b\60\241\7\0\1\u014c"+
-    "\77\0\1\251\2\0\1\u014d\1\251\1\0\4\251\1\0"+
-    "\1\251\1\0\3\251\1\0\6\251\1\0\60\251\1\0"+
-    "\1\u0115\1\u014d\1\251\1\0\4\251\1\0\1\251\1\0"+
-    "\3\251\1\0\6\251\1\0\57\251\1\u014e\1\0\10\u014e"+
-    "\1\u014f\2\u014e\1\u0150\1\u014e\1\u0151\46\u014e\1\u0150\20\u014e"+
-    "\1\u0152\1\0\12\u0152\1\u014f\1\u0153\1\u0152\1\u0154\46\u0152"+
-    "\1\u0153\20\u0152\1\251\2\0\1\u014d\1\251\1\0\4\251"+
-    "\1\0\1\251\1\0\1\251\1\u0155\1\251\1\0\6\251"+
-    "\1\0\60\251\2\0\1\u014d\1\251\1\0\4\251\1\0"+
-    "\1\251\1\0\1\251\1\u0156\1\251\1\0\6\251\1\0"+
-    "\57\251\1\260\1\0\12\260\2\0\50\260\1\0\20\260"+
-    "\3\0\1\u0157\17\0\1\350\2\0\1\363\60\0\1\260"+
-    "\1\0\3\260\1\262\6\260\2\0\2\260\1\262\6\260"+
-    "\1\262\36\260\1\0\20\260\5\0\1\u0158\10\0\1\u0159"+
-    "\1\0\1\u0158\6\0\1\u0158\64\0\1\u0158\10\0\1\u015a"+
-    "\1\0\1\u0158\6\0\1\u0158\57\0\1\266\1\0\10\266"+
-    "\1\0\2\266\1\0\50\266\1\0\21\266\1\0\3\266"+
-    "\1\267\4\266\1\0\2\266\1\0\2\266\1\267\6\266"+
-    "\1\267\36\266\1\0\20\266\5\0\1\u0158\10\0\1\u015b"+
-    "\1\0\1\u0158\6\0\1\u0158\64\0\1\u0158\10\0\1\u015c"+
-    "\1\0\1\u0158\6\0\1\u0158\57\0\12\273\1\0\1\273"+
-    "\1\0\1\u015d\67\273\1\0\13\273\1\0\1\273\1\0"+
-    "\1\u015d\5\273\1\u015e\61\273\1\0\13\273\1\0\1\273"+
-    "\1\0\1\273\1\u015f\66\273\1\u0160\1\273\14\u0161\1\u0162"+
-    "\106\u0161\1\u0162\6\u0161\1\u0163\2\u0161\1\u0164\60\u0161\12\u0165"+
-    "\1\u0166\106\u0165\1\u0166\10\u0165\1\u0167\2\u0165\1\u0168\60\u0165"+
-    "\12\311\1\0\4\311\1\u0169\65\311\1\0\13\311\1\0"+
-    "\4\311\1\u0169\3\311\1\u016a\61\311\1\0\13\311\1\u016b"+
-    "\74\311\14\316\1\0\2\316\1\u016c\65\316\1\0\15\316"+
-    "\1\0\2\316\1\u016c\3\316\1\u016d\61\316\1\0\15\316"+
-    "\1\u016e\72\316\12\321\1\0\1\321\1\0\70\321\1\0"+
-    "\13\321\1\0\1\321\1\0\6\321\1\u016f\61\321\1\0"+
-    "\13\321\1\0\1\321\1\0\1\321\1\u0170\66\321\1\0"+
-    "\1\321\14\u0171\1\u0172\106\u0171\1\u0172\6\u0171\1\u0173\2\u0171"+
-    "\1\u0174\60\u0171\12\u0175\1\u0176\106\u0175\1\u0176\10\u0175\1\u0177"+
-    "\2\u0175\1\u0178\60\u0175\12\337\1\0\4\337\1\u0179\65\337"+
-    "\1\0\13\337\1\0\4\337\1\u0179\3\337\1\u017a\61\337"+
-    "\1\0\13\337\1\u017b\74\337\14\343\1\0\2\343\1\u017c"+
-    "\65\343\1\0\15\343\1\0\2\343\1\u017c\3\343\1\u017d"+
-    "\61\343\1\0\15\343\1\u017e\72\343\7\0\1\u017f\12\0"+
-    "\1\u0180\3\0\1\u0181\23\0\1\u0182\43\0\1\u0183\26\0"+
-    "\1\u0184\55\0\1\352\2\0\2\u0185\6\0\1\352\6\0"+
-    "\1\352\6\u0185\1\0\13\u0185\1\0\13\u0185\1\0\4\u0185"+
-    "\1\0\4\u0185\1\0\4\u0185\1\0\1\u0185\1\u0186\1\0"+
-    "\3\u0186\1\u0187\4\353\1\u0186\1\0\4\u0186\1\u0187\1\353"+
-    "\1\u0186\1\0\3\u0186\1\u0187\6\353\1\u0186\13\353\1\u0186"+
-    "\13\353\1\u0186\4\353\1\u0188\11\353\1\u0186\1\353\21\0"+
-    "\1\u0189\7\0\1\u018a\72\0\1\356\71\0\105\357\1\u018b"+
-    "\1\357\1\u0186\1\0\3\u0186\1\u0187\4\360\1\u0186\1\0"+
-    "\4\u0186\1\u0187\1\360\1\u0186\1\0\3\u0186\1\u0187\6\360"+
-    "\1\u0186\13\360\1\u0186\13\360\1\u0186\4\360\1\u018c\11\360"+
-    "\1\u0186\1\360\105\361\1\u018d\1\361\66\0\1\362\56\0"+
-    "\1\u0184\52\0\1\u018e\106\0\1\u018f\112\0\4\113\7\0"+
-    "\1\113\6\0\4\113\2\u0190\1\0\13\113\1\0\13\113"+
-    "\1\0\4\113\1\0\11\113\1\0\1\113\6\0\4\113"+
-    "\7\0\1\113\6\0\4\113\1\u0190\1\u0191\1\0\13\113"+
-    "\1\0\13\113\1\0\4\113\1\0\11\113\1\0\1\113"+
-    "\6\0\4\113\7\0\1\113\6\0\6\113\1\0\13\113"+
-    "\1\0\2\113\1\u0192\10\113\1\0\4\113\1\0\6\113"+
-    "\1\u0192\2\113\1\0\1\113\12\375\1\376\3\375\1\0"+
-    "\70\375\14\u0100\1\376\1\u0100\1\0\70\u0100\1\u0105\1\0"+
-    "\10\u0105\1\u0107\2\u0105\1\u0193\50\u0105\1\u0193\20\u0105\1\142"+
-    "\2\u0105\1\u0106\1\142\1\u0105\4\142\1\u0107\1\142\1\u0105"+
-    "\1\142\1\140\1\142\1\u0105\6\142\1\u0105\57\142\1\u0109"+
-    "\1\0\12\u0109\1\u0107\1\u0194\50\u0109\1\u0194\20\u0109\1\143"+
-    "\2\u0109\1\u010a\1\143\1\u0109\4\143\1\u0109\1\143\1\u0107"+
-    "\1\143\1\140\1\143\1\u0109\6\143\1\u0109\57\143\12\u0110"+
-    "\1\u0111\3\u0110\1\0\70\u0110\14\u0113\1\u0111\1\u0113\1\0"+
-    "\70\u0113\6\0\4\167\7\0\1\167\6\0\6\167\1\0"+
-    "\13\167\1\0\13\167\1\0\4\167\1\0\6\167\1\u0195"+
-    "\2\167\1\0\1\167\6\0\4\u0117\7\0\1\u0117\6\0"+
-    "\6\u0117\1\0\13\u0117\1\0\13\u0117\1\0\4\u0117\1\0"+
-    "\11\u0117\1\0\1\u0117\6\0\4\u0119\7\0\1\u0119\6\0"+
-    "\6\u0119\1\0\13\u0119\1\0\13\u0119\1\0\4\u0119\1\0"+
-    "\11\u0119\1\0\1\u0119\12\u011a\1\u011b\3\u011a\1\0\70\u011a"+
-    "\14\u011d\1\u011b\1\u011d\1\0\70\u011d\1\u0196\2\u0197\1\u0198"+
-    "\1\u0196\1\u0197\4\u0196\1\u0197\1\u0196\1\u0197\3\u0196\1\u0197"+
-    "\6\u0196\1\u0197\55\u0196\1\174\1\u0196\1\u0199\2\u019a\1\u019b"+
-    "\1\u0199\1\u019a\4\u0199\1\u019a\1\u0199\1\u019a\3\u0199\1\u019a"+
-    "\6\u0199\1\u019a\55\u0199\1\174\1\u0199\37\0\1\u019c\35\0"+
-    "\1\u019c\53\0\1\u019d\14\0\1\u019d\73\0\1\u019e\11\0"+
-    "\1\u019e\76\0\1\u019f\20\0\1\u019f\113\0\1\u01a0\7\0"+
-    "\1\u01a0\2\0\12\u0129\1\u012a\3\u0129\1\0\70\u0129\1\u012c"+
-    "\1\0\12\u012c\1\u012a\1\u01a1\50\u012c\1\u01a1\21\u012c\1\0"+
-    "\12\u012c\1\u01a2\1\u01a1\50\u012c\1\u01a1\20\u012c\14\0\1\u01a3"+
-    "\72\0\14\u012c\1\u01a2\1\u012c\1\0\70\u012c\12\u0139\1\u013a"+
-    "\3\u0139\1\0\70\u0139\1\u013c\1\0\12\u013c\1\u013a\1\u01a4"+
-    "\50\u013c\1\u01a4\21\u013c\1\0\12\u013c\1\u01a5\1\u01a4\50\u013c"+
-    "\1\u01a4\20\u013c\14\0\1\u01a6\72\0\14\u013c\1\u01a5\1\u013c"+
-    "\1\0\70\u013c\2\232\1\0\4\232\1\u01a7\12\232\1\u01a8"+
-    "\3\232\1\u01a9\23\232\1\u01aa\36\232\1\0\33\232\1\u01ab"+
-    "\50\232\12\u0143\1\u0144\3\u0143\1\0\70\u0143\1\u0146\1\0"+
-    "\12\u0146\1\u0144\1\u01ac\50\u0146\1\u01ac\21\u0146\1\0\12\u0146"+
-    "\1\u01ad\1\u01ac\50\u0146\1\u01ac\20\u0146\14\0\1\u01ae\72\0"+
-    "\14\u0146\1\u01ad\1\u0146\1\0\70\u0146\2\241\1\0\4\241"+
-    "\1\u01af\12\241\1\u01b0\3\241\1\u01b1\23\241\1\u01b2\36\241"+
-    "\1\0\33\241\1\u01b3\50\241\23\0\1\u01b4\63\0\12\u014e"+
-    "\1\u014f\3\u014e\1\0\71\u014e\1\0\10\u014e\1\u01b5\2\u014e"+
-    "\1\u0150\1\u014e\1\u0151\46\u014e\1\u0150\20\u014e\14\u0152\1\u014f"+
-    "\1\u0152\1\0\71\u0152\1\0\12\u0152\1\u01b6\1\u0153\1\u0152"+
-    "\1\u0154\46\u0152\1\u0153\20\u0152\1\u01b7\2\u0197\1\u01b8\1\u01b7"+
-    "\1\u0197\4\u01b7\1\u0197\1\u01b7\1\u0197\3\u01b7\1\u0197\6\u01b7"+
-    "\1\u0197\55\u01b7\1\251\1\u01b7\1\u01b9\2\u019a\1\u01ba\1\u01b9"+
-    "\1\u019a\4\u01b9\1\u019a\1\u01b9\1\u019a\3\u01b9\1\u019a\6\u01b9"+
-    "\1\u019a\55\u01b9\1\251\1\u01b9\5\0\1\u0158\12\0\1\u0158"+
-    "\6\0\1\u0158\57\0\12\273\1\0\1\273\1\0\1\273"+
-    "\1\u01bb\66\273\1\u0160\10\273\1\u01bc\2\273\1\0\1\273"+
-    "\1\0\1\u015d\4\273\1\u01bd\3\273\1\u01be\23\273\1\u01bf"+
-    "\32\273\1\0\1\273\12\u01bb\1\0\1\u01bb\1\0\70\u01bb"+
-    "\1\0\1\u01bb\12\u0160\1\0\1\u0160\1\0\1\u01c0\67\u0160"+
-    "\1\0\1\u0160\7\u0161\1\u01c1\4\u0161\1\u0162\5\u0161\1\u01c2"+
-    "\3\u0161\1\u01c3\23\u0161\1\u01c4\50\u0161\1\u0162\21\u0161\1\u01c5"+
-    "\50\u0161\7\u0165\1\u01c6\2\u0165\1\u0166\7\u0165\1\u01c7\3\u0165"+
-    "\1\u01c8\23\u0165\1\u01c9\46\u0165\1\u0166\23\u0165\1\u01ca\50\u0165"+
-    "\12\311\1\0\103\311\1\u01cb\2\311\1\0\4\311\1\u0169"+
-    "\2\311\1\u01cc\3\311\1\u01cd\23\311\1\u01ce\32\311\1\0"+
-    "\1\311\17\u01cf\1\u01d0\67\u01cf\14\316\1\0\101\316\1\u01d1"+
-    "\4\316\1\0\2\316\1\u016c\2\316\1\u01d2\3\316\1\u01d3"+
-    "\23\316\1\u01d4\32\316\1\0\1\316\17\u01d5\1\u01d6\67\u01d5"+
-    "\7\321\1\u01d7\2\321\1\0\1\321\1\0\5\321\1\u01d8"+
-    "\3\321\1\u01d9\23\321\1\u01da\32\321\1\0\1\321\7\u0171"+
-    "\1\u01db\4\u0171\1\u0172\5\u0171\1\u01dc\3\u0171\1\u01dd\23\u0171"+
-    "\1\u01de\50\u0171\1\u0172\21\u0171\1\u01df\50\u0171\7\u0175\1\u01e0"+
-    "\2\u0175\1\u0176\7\u0175\1\u01e1\3\u0175\1\u01e2\23\u0175\1\u01e3"+
-    "\46\u0175\1\u0176\23\u0175\1\u01e4\50\u0175\12\337\1\0\103\337"+
-    "\1\u01e5\2\337\1\0\4\337\1\u0179\2\337\1\u01e6\3\337"+
-    "\1\u01e7\23\337\1\u01e8\32\337\1\0\1\337\17\u01e9\1\u01ea"+
-    "\67\u01e9\14\343\1\0\101\343\1\u01eb\4\343\1\0\2\343"+
-    "\1\u017c\2\343\1\u01ec\3\343\1\u01ed\23\343\1\u01ee\32\343"+
-    "\1\0\1\343\17\u01ef\1\u01f0\67\u01ef\7\0\1\u01f1\106\0"+
-    "\1\u01f2\136\0\1\u01f3\47\0\1\u0185\1\0\11\u0185\1\0"+
-    "\7\u0185\1\0\63\u0185\1\u0186\1\0\11\u0186\1\0\7\u0186"+
-    "\1\0\47\u0186\1\0\14\u0186\1\0\3\u0186\1\u0187\5\u0186"+
-    "\1\0\4\u0186\1\u0187\2\u0186\1\0\3\u0186\1\u0187\43\u0186"+
-    "\1\u01f4\13\u0186\21\0\1\u0189\51\0\1\u01f5\34\0\1\u01f6"+
-    "\15\0\3\u01f6\2\0\1\u01f6\11\0\1\u01f6\1\0\2\u01f6"+
-    "\7\0\1\u01f6\2\0\2\u01f6\6\0\1\u01f6\10\0\1\113"+
-    "\1\u01f7\2\113\7\0\1\113\6\0\6\113\1\0\13\113"+
-    "\1\0\13\113\1\0\4\113\1\0\11\113\1\0\1\113"+
-    "\6\0\4\113\7\0\1\113\6\0\6\113\1\0\11\113"+
-    "\1\u01f8\1\113\1\0\1\u01f8\12\113\1\0\4\113\1\0"+
-    "\11\113\1\0\1\113\12\u0105\1\u0107\3\u0105\1\0\70\u0105"+
-    "\14\u0109\1\u0107\1\u0109\1\0\70\u0109\6\0\3\167\1\u01f9"+
-    "\7\0\1\167\6\0\6\167\1\0\13\167\1\0\13\167"+
-    "\1\0\4\167\1\0\11\167\1\0\1\167\1\u0196\2\u0197"+
-    "\1\u0198\1\u0196\1\u0197\4\u0196\1\u0197\1\u0196\1\u0197\3\u0196"+
-    "\1\u0197\6\u0196\1\u0197\55\u0196\1\u01fa\1\u0196\105\u0197\1\u01fb"+
-    "\1\u0197\1\u0199\2\u019a\1\u019b\1\u0199\1\u019a\4\u0199\1\u019a"+
-    "\1\u0199\1\u019a\3\u0199\1\u019a\6\u0199\1\u019a\55\u0199\1\u01fa"+
-    "\1\u0199\105\u019a\1\u01fc\1\u019a\42\0\1\u01fd\14\0\1\u01fd"+
-    "\63\0\2\u01fe\103\0\2\u01ff\115\0\1\u0200\14\0\1\u0200"+
-    "\63\0\2\u0201\51\0\14\u012c\1\u012a\1\u012c\1\0\70\u012c"+
-    "\3\0\2\u0202\1\0\4\u0202\2\0\1\u012e\1\u0202\2\0"+
-    "\4\u0202\1\0\11\u0202\1\0\40\u0202\2\0\4\u0202\1\0"+
-    "\1\u0202\14\u013c\1\u013a\1\u013c\1\0\70\u013c\3\0\2\u0203"+
-    "\1\0\4\u0203\2\0\1\u013e\1\u0203\2\0\4\u0203\1\0"+
-    "\11\u0203\1\0\40\u0203\2\0\4\u0203\1\0\1\u0203\2\232"+
-    "\1\0\4\232\1\u0204\101\232\1\0\34\232\1\u0205\47\232"+
-    "\14\u0146\1\u0144\1\u0146\1\0\70\u0146\3\0\2\u0206\1\0"+
-    "\4\u0206\2\0\1\u0148\1\u0206\2\0\4\u0206\1\0\11\u0206"+
-    "\1\0\40\u0206\2\0\4\u0206\1\0\1\u0206\2\241\1\0"+
-    "\4\241\1\u0207\101\241\1\0\34\241\1\u0208\47\241\2\0"+
-    "\1\u0209\104\0\1\u01b7\2\u0197\1\u01b8\1\u01b7\1\u0197\4\u01b7"+
-    "\1\u0197\1\u01b7\1\u0197\3\u01b7\1\u0197\6\u01b7\1\u0197\55\u01b7"+
-    "\1\u020a\1\u01b7\1\u01b9\2\u019a\1\u01ba\1\u01b9\1\u019a\4\u01b9"+
-    "\1\u019a\1\u01b9\1\u019a\3\u01b9\1\u019a\6\u01b9\1\u019a\55\u01b9"+
-    "\1\u020a\1\u01b9\7\273\1\u020b\2\273\1\0\1\273\1\0"+
-    "\1\u015d\67\273\1\0\1\273\12\u0160\1\0\1\u0160\1\0"+
-    "\1\u0160\1\0\70\u0160\7\u0161\1\u020c\4\u0161\1\u0162\106\u0161"+
-    "\1\u0162\22\u0161\1\u020d\47\u0161\7\u0165\1\u020e\2\u0165\1\u0166"+
-    "\106\u0165\1\u0166\24\u0165\1\u020f\47\u0165\7\311\1\u0210\2\311"+
-    "\1\0\4\311\1\u0169\65\311\1\0\1\311\12\u0211\1\u0212"+
-    "\72\u0211\1\0\1\u0211\7\316\1\u0213\4\316\1\0\2\316"+
-    "\1\u016c\65\316\1\0\1\316\14\u0214\1\u0212\70\u0214\1\0"+
-    "\1\u0214\7\321\1\u0215\2\321\1\0\1\321\1\0\70\321"+
-    "\1\0\1\321\7\u0171\1\u0216\4\u0171\1\u0172\106\u0171\1\u0172"+
-    "\22\u0171\1\u0217\47\u0171\7\u0175\1\u0218\2\u0175\1\u0176\106\u0175"+
-    "\1\u0176\24\u0175\1\u0219\47\u0175\7\337\1\u021a\2\337\1\0"+
-    "\4\337\1\u0179\65\337\1\0\1\337\12\u021b\1\u021c\72\u021b"+
-    "\1\0\1\u021b\7\343\1\u021d\4\343\1\0\2\343\1\u017c"+
-    "\65\343\1\0\1\343\14\u021e\1\u021c\70\u021e\1\0\1\u021e"+
-    "\40\0\1\u021f\141\0\1\u01f4\34\0\1\u01f6\15\0\3\u01f6"+
-    "\2\0\1\u01f6\11\0\1\u01f6\1\0\2\u01f6\7\0\1\u01f6"+
-    "\1\0\1\u01f5\2\u01f6\6\0\1\u01f6\10\0\4\113\7\0"+
-    "\1\113\6\0\6\113\1\0\7\113\1\u0220\3\113\1\0"+
-    "\13\113\1\0\4\113\1\0\11\113\1\0\1\113\6\0"+
-    "\4\113\7\0\1\113\6\0\6\113\1\0\6\113\1\u0221"+
-    "\4\113\1\0\13\113\1\0\1\113\1\u0221\2\113\1\0"+
-    "\11\113\1\0\1\113\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\6\167\1\u0222\4\167\1\0\6\167\1\u0223"+
-    "\4\167\1\0\4\167\1\0\11\167\1\0\1\167\54\0"+
-    "\1\u0224\5\0\1\u0224\73\0\1\u0225\14\0\1\u0225\66\0"+
-    "\1\u0226\11\0\1\u0226\74\0\1\u0227\11\0\1\u0227\77\0"+
-    "\1\u0228\14\0\1\u0228\22\0\2\232\1\0\35\232\1\u0229"+
-    "\46\232\2\241\1\0\35\241\1\u022a\46\241\14\u0161\1\u0162"+
-    "\23\u0161\1\u022b\46\u0161\12\u0165\1\u0166\25\u0165\1\u022c\46\u0165"+
-    "\12\u0211\1\u01cf\4\u0211\1\u022d\65\u0211\1\u01cf\1\u0211\14\u0214"+
-    "\1\u01d5\2\u0214\1\u022e\65\u0214\1\u01d5\1\u0214\14\u0171\1\u0172"+
-    "\23\u0171\1\u022f\46\u0171\12\u0175\1\u0176\25\u0175\1\u0230\46\u0175"+
-    "\12\u021b\1\u01e9\4\u021b\1\u0231\65\u021b\1\u01e9\1\u021b\14\u021e"+
-    "\1\u01ef\2\u021e\1\u0232\65\u021e\1\u01ef\1\u021e\41\0\1\u0233"+
-    "\53\0\4\113\7\0\1\113\6\0\6\113\1\0\13\113"+
-    "\1\0\4\113\1\u0234\6\113\1\0\4\113\1\0\11\113"+
-    "\1\0\1\113\6\0\4\113\7\0\1\113\6\0\6\113"+
-    "\1\0\3\113\1\u0235\7\113\1\0\4\113\1\u0235\6\113"+
-    "\1\0\4\113\1\0\11\113\1\0\1\113\6\0\4\167"+
-    "\7\0\1\167\6\0\6\167\1\0\11\167\1\u0236\1\167"+
-    "\1\0\13\167\1\0\4\167\1\0\11\167\1\0\1\167"+
-    "\6\0\4\167\7\0\1\167\6\0\6\167\1\0\10\167"+
-    "\1\u0237\2\167\1\0\13\167\1\0\4\167\1\0\11\167"+
-    "\1\0\1\167\55\0\1\u0238\24\0\1\u0238\52\0\1\u0239"+
-    "\20\0\1\u0239\70\0\1\u023a\13\0\1\u023a\53\0\2\u023b"+
-    "\112\0\1\u023c\35\0\1\u023c\11\0\2\232\1\0\36\232"+
-    "\1\u023d\45\232\2\241\1\0\36\241\1\u023e\45\241\14\u0161"+
-    "\1\u0162\24\u0161\1\u023f\45\u0161\12\u0165\1\u0166\26\u0165\1\u0240"+
-    "\45\u0165\12\u0211\1\u0241\4\u0211\1\u022d\65\u0211\1\u01cf\1\u0211"+
-    "\14\u0214\1\u0242\2\u0214\1\u022e\65\u0214\1\u01d5\1\u0214\14\u0171"+
-    "\1\u0172\24\u0171\1\u0243\45\u0171\12\u0175\1\u0176\26\u0175\1\u0244"+
-    "\45\u0175\12\u021b\1\u0245\4\u021b\1\u0231\65\u021b\1\u01e9\1\u021b"+
-    "\14\u021e\1\u0246\2\u021e\1\u0232\65\u021e\1\u01ef\1\u021e\42\0"+
-    "\1\u0247\52\0\4\113\7\0\1\113\6\0\6\113\1\0"+
-    "\13\113\1\0\7\113\1\u0248\3\113\1\0\4\113\1\0"+
-    "\11\113\1\0\1\113\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\11\167\1\u0249\1\167\1\0\13\167\1\0"+
-    "\4\167\1\0\11\167\1\0\1\167\6\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\6\167\1\u024a\4\167\1\0"+
-    "\13\167\1\0\4\167\1\0\11\167\1\0\1\167\44\0"+
-    "\1\u024b\11\0\1\u024b\72\0\1\u024c\14\0\1\u024c\71\0"+
-    "\1\u024d\14\0\1\u024d\27\0\2\232\1\0\37\232\1\u024e"+
-    "\44\232\2\241\1\0\37\241\1\u024f\44\241\14\u0161\1\u0162"+
-    "\25\u0161\1\u0250\44\u0161\12\u0165\1\u0166\27\u0165\1\u0251\44\u0165"+
-    "\14\u0171\1\u0172\25\u0171\1\u0252\44\u0171\12\u0175\1\u0176\27\u0175"+
-    "\1\u0253\44\u0175\41\0\1\u0254\53\0\4\113\7\0\1\113"+
-    "\6\0\5\113\1\u0255\1\0\13\113\1\0\13\113\1\0"+
-    "\4\113\1\0\11\113\1\0\1\113\6\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\13\167\1\0\4\167\1\u0256"+
-    "\6\167\1\0\4\167\1\0\11\167\1\0\1\167\6\0"+
-    "\4\167\7\0\1\167\6\0\6\167\1\0\5\167\1\u0257"+
-    "\5\167\1\0\13\167\1\0\4\167\1\0\11\167\1\0"+
-    "\1\167\2\232\1\0\36\232\1\u0258\45\232\2\241\1\0"+
-    "\36\241\1\u0259\45\241\14\u0161\1\u0162\24\u0161\1\u025a\45\u0161"+
-    "\12\u0165\1\u0166\26\u0165\1\u025b\45\u0165\14\u0171\1\u0172\24\u0171"+
-    "\1\u025c\45\u0171\12\u0175\1\u0176\26\u0175\1\u025d\45\u0175\36\0"+
-    "\1\u025e\56\0\4\113\7\0\1\113\6\0\6\113\1\0"+
-    "\5\113\1\u025f\5\113\1\0\13\113\1\0\4\113\1\0"+
-    "\11\113\1\0\1\113\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\13\167\1\0\13\167\1\0\4\167\1\0"+
-    "\1\167\1\u0260\7\167\1\0\1\167\2\232\1\0\33\232"+
-    "\1\u0261\50\232\2\241\1\0\33\241\1\u0262\50\241\14\u0161"+
-    "\1\u0162\21\u0161\1\u0263\50\u0161\12\u0165\1\u0166\23\u0165\1\u0264"+
-    "\50\u0165\14\u0171\1\u0172\21\u0171\1\u0265\50\u0171\12\u0175\1\u0176"+
-    "\23\u0175\1\u0266\50\u0175\6\0\4\113\7\0\1\113\6\0"+
-    "\6\113\1\0\7\113\1\u0267\3\113\1\0\13\113\1\0"+
-    "\4\113\1\0\11\113\1\0\1\113\6\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\13\167\1\0\4\167\1\u0268"+
-    "\6\167\1\0\4\167\1\0\11\167\1\0\1\167\6\0"+
-    "\4\113\7\0\1\113\6\0\6\113\1\0\13\113\1\0"+
-    "\13\113\1\0\4\113\1\0\11\113\1\0\1\u0269\6\0"+
-    "\4\167\7\0\1\167\6\0\6\167\1\0\10\167\1\u026a"+
-    "\2\167\1\0\13\167\1\0\4\167\1\0\11\167\1\0"+
-    "\1\167\6\0\4\113\7\0\1\113\6\0\6\113\1\0"+
-    "\5\113\1\u026b\5\113\1\0\13\113\1\0\4\113\1\0"+
-    "\11\113\1\0\1\113\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\4\167\1\u026c\6\167\1\0\13\167\1\0"+
-    "\4\167\1\0\11\167\1\0\1\167\6\0\4\113\7\0"+
-    "\1\113\6\0\6\113\1\0\5\113\1\u026d\5\113\1\0"+
-    "\13\113\1\0\4\113\1\0\11\113\1\0\1\113\6\0"+
-    "\4\167\7\0\1\167\6\0\6\167\1\0\5\167\1\u026e"+
-    "\5\167\1\0\13\167\1\0\4\167\1\0\11\167\1\0"+
-    "\1\167\6\0\4\113\7\0\1\113\6\0\6\113\1\0"+
-    "\13\113\1\0\4\113\1\u026f\6\113\1\0\4\113\1\0"+
-    "\11\113\1\0\1\113\6\u0270\4\u0271\7\u0270\1\u0271\5\u0270"+
-    "\1\0\6\u0271\1\u0270\13\u0271\1\u0270\13\u0271\1\u0270\4\u0271"+
-    "\1\u0270\11\u0271\1\u0270\1\u0271\43\0\1\u0272\3\0\1\u0273"+
-    "\7\0\1\u0274\1\u0275\21\0\1\u0276\12\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\4\167\1\u0277\3\167\1\u0278"+
-    "\2\167\1\0\4\167\1\u0279\1\u027a\5\167\1\0\4\167"+
-    "\1\0\6\167\1\u027b\2\167\1\0\1\167\60\0\1\u027c"+
-    "\77\0\1\u027d\115\0\1\u027e\105\0\1\u027f\107\0\1\u0280"+
-    "\34\0\4\167\7\0\1\167\6\0\6\167\1\0\13\167"+
-    "\1\0\5\167\1\u0281\5\167\1\0\4\167\1\0\11\167"+
-    "\1\0\1\167\6\0\4\167\7\0\1\167\6\0\6\167"+
-    "\1\0\12\167\1\u0282\1\0\13\167\1\0\4\167\1\0"+
-    "\11\167\1\0\1\167\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\13\167\1\0\5\167\1\u0283\5\167\1\0"+
-    "\4\167\1\0\11\167\1\0\1\167\6\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\13\167\1\0\4\167\1\u0284"+
-    "\6\167\1\0\4\167\1\0\11\167\1\0\1\167\6\0"+
-    "\4\167\7\0\1\167\6\0\6\167\1\0\13\167\1\0"+
-    "\5\167\1\u0285\5\167\1\0\4\167\1\0\11\167\1\0"+
-    "\1\167\45\0\1\u0286\136\0\1\u0287\107\0\1\u0288\67\0"+
-    "\1\u0289\125\0\1\u028a\16\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\6\167\1\u028b\4\167\1\0\13\167\1\0"+
-    "\4\167\1\0\11\167\1\0\1\167\6\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\13\167\1\0\13\167\1\0"+
-    "\4\167\1\0\1\167\1\u028c\7\167\1\0\1\167\6\0"+
-    "\4\167\7\0\1\167\6\0\6\167\1\0\13\167\1\0"+
-    "\13\167\1\0\4\167\1\0\2\167\1\u028d\6\167\1\0"+
-    "\1\167\6\0\4\167\7\0\1\167\6\0\6\167\1\0"+
-    "\13\167\1\0\4\167\1\u028e\6\167\1\0\4\167\1\0"+
-    "\11\167\1\0\1\167\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\13\167\1\0\13\167\1\0\4\167\1\0"+
-    "\2\167\1\u028f\6\167\1\0\1\167\47\0\1\u0290\74\0"+
-    "\1\u0291\106\0\1\u0292\116\0\1\u0293\105\0\1\u0294\50\0"+
-    "\4\167\7\0\1\167\6\0\6\167\1\0\10\167\1\u0295"+
-    "\2\167\1\0\13\167\1\0\4\167\1\0\11\167\1\0"+
-    "\1\167\6\0\4\167\7\0\1\167\6\0\5\167\1\u0296"+
-    "\1\0\13\167\1\0\13\167\1\0\4\167\1\0\11\167"+
-    "\1\0\1\167\6\0\4\167\7\0\1\167\6\0\5\167"+
-    "\1\u0297\1\0\13\167\1\0\13\167\1\0\4\167\1\0"+
-    "\11\167\1\0\1\167\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\6\167\1\u0298\4\167\1\0\13\167\1\0"+
-    "\4\167\1\0\11\167\1\0\1\167\6\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\5\167\1\u0299\5\167\1\0"+
-    "\13\167\1\0\4\167\1\0\11\167\1\0\1\167\60\0"+
-    "\1\u029a\131\0\1\u029b\52\0\1\u029c\106\0\1\u029d\45\0"+
-    "\4\167\7\0\1\167\6\0\6\167\1\0\13\167\1\0"+
-    "\5\167\1\u029e\5\167\1\0\4\167\1\0\11\167\1\0"+
-    "\1\167\6\0\4\167\7\0\1\167\6\0\6\167\1\0"+
-    "\13\167\1\0\13\167\1\0\4\167\1\0\7\167\1\u029f"+
-    "\1\167\1\0\1\167\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\10\167\1\u02a0\2\167\1\0\13\167\1\0"+
-    "\4\167\1\0\11\167\1\0\1\167\6\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\10\167\1\u02a1\2\167\1\0"+
-    "\13\167\1\0\4\167\1\0\11\167\1\0\1\167\104\0"+
-    "\1\u02a2\63\0\1\u028a\131\0\1\u0294\106\0\1\u02a3\10\0"+
-    "\4\167\7\0\1\167\6\0\6\167\1\0\13\167\1\0"+
-    "\13\167\1\0\4\167\1\0\10\167\1\u02a4\1\0\1\167"+
-    "\6\0\4\167\7\0\1\167\6\0\6\167\1\0\13\167"+
-    "\1\0\6\167\1\u028f\4\167\1\0\4\167\1\0\11\167"+
-    "\1\0\1\167\6\0\4\167\7\0\1\167\6\0\6\167"+
-    "\1\0\13\167\1\0\13\167\1\0\4\167\1\0\10\167"+
-    "\1\u0299\1\0\1\167\6\0\4\167\7\0\1\167\6\0"+
-    "\6\167\1\0\13\167\1\0\13\167\1\0\4\167\1\0"+
-    "\10\167\1\u02a5\1\0\1\167\35\0\1\u028a\154\0\1\u02a6"+
-    "\11\0\4\167\7\0\1\167\6\0\5\167\1\u028f\1\0"+
-    "\13\167\1\0\13\167\1\0\4\167\1\0\11\167\1\0"+
-    "\1\167\6\0\4\167\7\0\1\167\6\0\6\167\1\0"+
-    "\13\167\1\0\13\167\1\0\4\167\1\0\7\167\1\u02a7"+
-    "\1\167\1\0\1\167\57\0\1\u028a\35\0\4\167\7\0"+
-    "\1\167\6\0\6\167\1\0\13\167\1\0\4\167\1\u028f"+
-    "\6\167\1\0\4\167\1\0\11\167\1\0\1\167";
-
-  /** 
-   * The transition table of the DFA
-   */
-  final private static int yytrans [] = yy_unpack(yy_packed);
-
-
-  /* error codes */
-  final private static int YY_UNKNOWN_ERROR = 0;
-  // final private static int YY_ILLEGAL_STATE = 1;
-  final private static int YY_NO_MATCH = 2;
-  final private static int YY_PUSHBACK_2BIG = 3;
-
-  /* error messages for the codes above */
-  final private static String YY_ERROR_MSG[] = {
-    "Unkown internal scanner error",		//$NON-NLS-1$
-    "Internal error: unknown state",		//$NON-NLS-1$
-    "Error: could not match input",		//$NON-NLS-1$
-    "Error: pushback value was too large"	//$NON-NLS-1$
-  };
-
-  /**
-   * YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
-   */
-  private final static byte YY_ATTRIBUTE[] = {
-     1,  0,  0,  0,  0,  1,  0,  0,  1,  1,  1,  0,  1,  1,  1,  1, 
-     0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
-     1,  1,  1,  1,  0,  0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  0, 
-     0,  0,  1,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  9, 
-     1,  9,  1,  1,  9,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  9, 
-     1,  1,  1,  1,  9,  1,  1,  1,  1,  1,  1,  9,  1,  1,  9,  1, 
-     1,  1,  1,  9,  1,  1,  1,  1,  1,  1,  1,  9,  1,  1,  1,  1, 
-     1,  1,  1,  9,  1,  1,  1,  1,  1,  1,  9,  1,  1,  1,  1,  1, 
-     1,  1,  1,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  9,  1,  1,  1,  1, 
-     1,  1,  9,  9,  1,  9,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 
-     1,  1,  9,  1,  1,  1,  1,  9,  1,  1,  1,  1,  9,  9,  1,  9, 
-     3,  3,  3,  3,  3,  3,  9,  9,  1,  1,  9,  1,  9,  1,  1,  1, 
-     1,  1,  9,  9,  1,  9,  3,  3,  3,  3,  3,  3,  9,  9,  1,  1, 
-     1,  9,  1,  1,  1,  9,  9,  1,  1,  0,  1,  0,  9,  1,  2,  1, 
-     2,  1,  0,  0,  0,  9,  1,  1,  1,  9,  9,  0,  0,  9,  0,  0, 
-     0,  0,  0,  0,  0,  0,  9,  1,  0,  0,  1,  9,  0,  9,  0,  0, 
-     9,  0,  0,  0,  9,  1,  1,  0,  1,  0,  9,  0,  0,  0,  1,  1, 
-     0,  0,  0,  0,  9,  0,  0,  0,  0,  9,  0,  0,  0,  1,  0,  0, 
-     1,  0,  0,  9,  0,  0,  1,  0,  0,  9,  0,  0,  0,  1,  0,  1, 
-     1,  0,  0,  9,  0,  0,  0,  1,  0,  1,  1,  0,  0,  0,  9,  0, 
-     0,  0,  0,  0,  1,  1,  9,  1,  9,  9,  9,  9,  1,  1,  1,  1, 
-     2, 13,  3,  2,  2, 13,  3,  2,  0,  1,  1,  0,  1,  1,  1,  1, 
-     2, 13,  3,  2,  2, 13,  3,  2,  0,  1,  1,  0,  1,  1,  0,  9, 
-     9,  9,  0,  0,  1,  1,  1,  9,  0,  0, 13,  9, 13,  9,  9,  1, 
-     1,  1,  0,  0,  1,  3,  2,  2,  3,  2,  2,  0,  0,  0,  0,  0, 
-     0,  1,  0,  0,  1,  0,  1,  1,  1,  1,  1,  0,  1,  0,  1,  1, 
-     1,  1,  1,  0,  1,  1,  3,  2,  3,  2,  1,  1,  1,  1,  1,  0, 
-     2,  3,  3,  3,  2,  2,  3,  3,  3,  2,  1,  1,  1,  1,  0,  0, 
-     1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  2,  3,  3,  3,  2,  2, 
-     3,  3,  3,  2,  1,  1,  1,  1,  0,  0,  1,  1,  1,  1,  0,  0, 
-     9,  9,  0,  1,  9,  0,  1,  1,  1,  5, 13, 13,  0,  0,  0,  0, 
-     0,  0,  0,  1,  1,  0,  1,  1,  9,  5,  1,  3,  2,  3,  2,  1, 
-     0,  9,  1,  0,  1,  3,  2,  3,  2,  1,  0,  9,  1,  0,  0,  1, 
-     1,  1,  1,  0,  0,  0,  0,  0,  1,  1,  2,  2,  0,  0,  2,  2, 
-     0,  0,  0,  1,  1,  1,  1,  0,  0,  0,  9,  9,  1,  1,  2,  2, 
-     1,  1,  2,  2,  1,  1,  0,  1,  1,  1,  9,  9,  9,  1,  1,  2, 
-     2,  2,  2,  0,  1,  1,  1,  1,  1,  2,  2,  2,  2,  9,  1,  1, 
-     1,  1,  3,  3,  3,  3,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0, 
-     1,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  0,  0,  0,  0,  0, 
-     1,  1,  1,  1,  1,  0,  0,  1,  0,  0,  1,  1,  1,  1,  1,  0, 
-     0,  0,  0,  9,  1,  1,  1,  1,  1,  0,  0,  0,  0,  1,  1,  1, 
-     1,  0,  0,  1,  1,  0,  1
-  };
-
-  /** the input device */
-  private java.io.Reader yy_reader;
-
-  /** the current state of the DFA */
-  private int yy_state;
-
-  /** the current lexical state */
-  private int yy_lexical_state = YYINITIAL;
-
-  /** this buffer contains the current text to be matched and is
-      the source of the yytext() string */
-  private char yy_buffer[] = new char[16384];
-
-  /** the textposition at the last accepting state */
-  private int yy_markedPos;
-
-  /** the textposition at the last state to be included in yytext */
-  private int yy_pushbackPos;
-
-  /** the current text position in the buffer */
-  private int yy_currentPos;
-
-  /** startRead marks the beginning of the yytext() string in the buffer */
-  private int yy_startRead;
-
-  /** endRead marks the last character in the buffer, that has been read
-      from input */
-  private int yy_endRead;
-
-  /** number of newlines encountered up to the start of the matched text */
-  private int yyline;
-
-  /** the number of characters up to the start of the matched text */
-  private int yychar;
-
-  /**
-   * the number of characters from the last newline up to the start of the 
-   * matched text
-   */
-  // private int yycolumn; 
-
-  /** 
-   * yy_atBOL == true <=> the scanner is currently at the beginning of a line
-   */
-  // private boolean yy_atBOL;
-
-  /** yy_atEOF == true <=> the scanner has returned a value for EOF */
-  private boolean yy_atEOF;
-
-  /** denotes if the user-EOF-code has already been executed */
-  private boolean yy_eof_done;
-
-  /* user code: */
-	private int fTokenCount = 0;
- 
-	// required holders for white-space compacting
-	private boolean fShouldLoadBuffered = false;
-	private String fBufferedContext = null;
-	private int fBufferedStart = 1;
-	private int fBufferedLength = 0;
-	private ContextRegionContainer fBufferedEmbeddedContainer = null;
-	private String f_context = null;
-
-	// state stack for handling embedded regions
-	private IntStack fStateStack = new IntStack();
-	// a "hint" as to what an embedded region should be evaluated
-	private String fEmbeddedHint = UNDEFINED;
-	// a "hint" as to what state to enter once an embedded region has
-	//   been completed
-	private int fEmbeddedPostState = YYINITIAL;
-	
-	private BooleanStack fJspTagStack = new BooleanStack();
-	
-	// the container used to create embedded regions
-	private ContextRegionContainer fEmbeddedContainer = null;
-	private static final String PROXY_CONTEXT = "PROXY_CONTEXT";
-
-	private String context = null;
-	private int start = 0;
-	private int textLength = 0;
-	private int length = 0;
-
-	// offset for tracking position specific block tags
-	private int fOffset = 0;
-	
-	// the name of the current tag being opened
-	private String fCurrentTagName = null;
-
-	// the name of the current tag inside of an embedded region
-	private String internalTagName = null;
-	private String internalContext = null;
-
-	// the list of tag name BlockMarkers
-	private List fBlockMarkers = new ArrayList(0);
-	private List fNestablePrefixes = new ArrayList(1);
-	
-	// where the last internal container block was found
-	private int fLastInternalBlockStart = -1;
-
-	// required to not seek text blocks on an end tag
-	private boolean fIsBlockingEnabled = false;
-	private boolean fIsCaseSensitiveBlocking = true;
-
-	private static final boolean fForbidJSP = false;
-	
-	private int fELlevel = 0;
-
-	private JSPParserRegionFactory fRegionFactory = new JSPParserRegionFactory();
-
-	/**
-	 * user method 
-	 */
-	public final void addBlockMarker(BlockMarker marker) {
-		if(containsTagName(marker.getTagName()))
-			return;
-		fBlockMarkers.add(marker);
-	}
-	/**
-	 * user method
-	 */
-	public final void addNestablePrefix(TagMarker marker) {
-		fNestablePrefixes.add(marker);
-	}
-	/* user method */
-	public List getNestablePrefixes() {
-		return fNestablePrefixes;
-	}
-	/**
-	 * user method
-	 */
-	private boolean isNestable(String tagName) {
-		//Iterator blocks = fNestablePrefixes.iterator();
-		//while(blocks.hasNext()) {
-		//	TagMarker marker = (TagMarker)blocks.next();
-		//	String markerName = marker.getTagName();
-		//	if(tagName.length() > markerName.length() + 1 && tagName.startsWith(markerName) && tagName.charAt(markerName.length()) == ':') {
-		//		return marker.isGlobal() || getOffset() >= marker.getMarker().getStart();
-		//	}
-		//}
-		//return false;
-		return true;
-	}
-	/**
-	 * user method 
-	 */
-	public final void removeNestablePrefix(String name) {
-		if (fNestablePrefixes != null) {
-			Iterator nestables = fNestablePrefixes.iterator();
-			while (nestables.hasNext()) {
-				if (((TagMarker) nestables.next()).getTagName().equalsIgnoreCase(name))
-					nestables.remove();
-			}
-		}
-	}
-	/**
-	 * user method 
-	 */
-	public final void removeBlockMarker(BlockMarker marker) {
-		fBlockMarkers.remove(marker);
-	}
-	/**
-	 * user method 
-	 */
-	public final void removeBlockMarker(String tagname) {
-		if (fBlockMarkers != null) {
-			Iterator blocks = fBlockMarkers.iterator();
-			while (blocks.hasNext()) {
-				if (((BlockMarker) blocks.next()).getTagName().equals(tagname))
-					blocks.remove();
-			}
-		}
-	}
-	/* user method */
-	private final void assembleEmbeddedTagSequence(String startType, String endTagName) {
-		assembleEmbeddedContainer(startType, null, endTagName);
-	}
-	/* user method */
-	private final void assembleEmbeddedContainer(String startType, String[] endTypes) {
-		assembleEmbeddedContainer(startType, endTypes, null);
-	}
-	/* user method */
-	private final void assembleEmbeddedContainer(String startType, String endType) {
-		assembleEmbeddedContainer(startType, new String[]{endType}, null);
-	}
-	/**
-	 *  user method 
-	 * 
-	 * Assembles an embedded container beginning with the given startType as
-	 * the first ContextRegion within it and of the type fEmbeddedHint.  The
-	 * endTypes[] array contains the context types that will cause a successful
-	 * exit.  Use of the endTagName parameter alters this behavior to force an
-	 * exit on an XML_TAG_CLOSE after seeing an XML_TAG_NAME whose significant
-	 * text matches the endTagName String.  All contents in between are
-	 * insignificant, and yes, this means comments are allowed inside.
-	 **/
-	private final void assembleEmbeddedContainer(String startType, String[] endTypes, String endTagName) {
-		// the context of the region being added to the embedded container
-		internalContext = startType;
-		// keep track of where this container began; to provide relative indeces for the regions
-		int containerStart = yychar;
-		boolean notFinished = true;
-		// keep track of where we seem to be so that the endTagName can be checked
-		boolean isInEndTag = false;
-		boolean isInFirstTag = true;
-		// create the embedded container and setup its "type"
-		if (fEmbeddedContainer == null) {
-			fEmbeddedContainer = new ContextRegionContainer();
-			fEmbeddedContainer.setType(fEmbeddedHint);
-			fEmbeddedContainer.setStart(containerStart);
-			// TODO: parent region needs to be set .... but not sure where to get it from 
-			//		fEmbeddedContainer.setParent(parentRegion);
-		}
-		containerStart = fEmbeddedContainer.getStart();
-		while (notFinished) {
-			// add the region to the container
-			if (internalContext != null && internalContext != PROXY_CONTEXT) {
-				ITextRegion newToken = fRegionFactory.createToken(internalContext, yychar - containerStart, yylength(), yylength());
-				fEmbeddedContainer.getRegions().add(newToken);
-				fEmbeddedContainer.setLength(fEmbeddedContainer.getLength() + yylength());
-				fEmbeddedContainer.setTextLength(fEmbeddedContainer.getTextLength() + yylength());
-				// DW, 4/16/2003 token regions no longer have parents
-				//newToken.setParent(fEmbeddedContainer);
-			}
-			try {
-				// longscan determines whether to attempt a blockTagScan within the embedded container
-				boolean longscan = false;
-				// save the tokenizer state in case of a block tag scan
-				int previousState = yystate();
-				String previousCurrentTagName = fCurrentTagName;
-				int previousPostState = fEmbeddedPostState;
-				String previousEmbeddedHint = fEmbeddedHint;
-				// determine if a block tag scan is necessary
-				if (internalContext == XML_TAG_NAME) {
-					internalTagName = yytext();
-					if(!isNestable(internalTagName)) {
-						internalTagName = null;
-						// snagged a tag name we shouldn't have
-						fEmbeddedPostState = ST_ABORT_EMBEDDED;
-						notFinished = false;
-					}
-				}
-				else if (internalContext == XML_TAG_OPEN || internalContext == XML_END_TAG_OPEN) {
-					internalTagName = null;
-				}
-				// do upkeep for endTagName usage; must be here since the next token could be the close
-				if (internalContext == XML_END_TAG_OPEN) {
-					isInEndTag = true;
-				} else if (internalContext == XML_TAG_CLOSE) {
-					isInFirstTag = isInEndTag = false;
-				} else {
-				 	ITextRegionList embeddedRegions = fEmbeddedContainer.getRegions();
-					if (embeddedRegions.size() > 2 && (embeddedRegions.get(embeddedRegions.size()-1)).getType() == XML_TAG_CLOSE && (embeddedRegions.get(embeddedRegions.size() - 3)).getType() == XML_TAG_OPEN && internalTagName != null) {
-						if (containsTagName(internalTagName)) {
-							longscan = true;
-							yybegin(ST_BLOCK_TAG_SCAN);
-						}
-					}
-				}
-				if (longscan)
-					fCurrentTagName = internalTagName;
-				// read the next region and context
-				internalContext = primGetNextToken();
-				if (longscan) {
-					// Returning from a block tag scan requires restoring some state variables
-					// as well as handling the block region and setting up for normal scanning
-					// inside the embedded container
-					ITextRegion newToken = fRegionFactory.createToken(internalContext, yychar - containerStart, yylength(), yylength());
-					fEmbeddedContainer.getRegions().add(newToken);
-					fEmbeddedContainer.setLength(fEmbeddedContainer.getLength() + yylength());
-					fEmbeddedContainer.setTextLength(fEmbeddedContainer.getTextLength() + yylength());
-					// DW, 4/16/2003 token regions no longer have parents
-					// newToken.setParent(fEmbeddedContainer);
-					longscan = false;
-					fEmbeddedPostState = previousPostState;
-					fEmbeddedHint = previousEmbeddedHint;
-					fCurrentTagName = previousCurrentTagName;
-					yybegin(previousState);
-					internalContext = primGetNextToken();
-				}
-			} catch (IOException e) {
-				// primGetNextToken() calls may throw an IOException
-				// catch and do nothing since the isEOF check below
-				// will properly exit if the input was too short
-			} catch (Exception f) {
-				// some other exception happened; never should
-				Logger.logException(f);
-			}
-			boolean isEndingType = yystate() == ST_ABORT_EMBEDDED;
-			if(!isEndingType) {
-				// check for ending context
-				if (endTagName == null) {
-					for (int i = 0; i < endTypes.length; i++) {
-						isEndingType = isEndingType || (internalContext == endTypes[i]);
-					}
-				}
-				else {
-					isEndingType = ((isInEndTag && internalContext == XML_TAG_CLOSE) || (isInFirstTag && internalContext == XML_EMPTY_TAG_CLOSE)) && internalTagName != null && internalTagName.equals(endTagName);
-				}
-			}
-			ITextRegionList embeddedList = fEmbeddedContainer.getRegions();
-			notFinished = notFinished && ((!isEndingType) && !isEOF() && (endTagName != null || internalContext != UNDEFINED) && !(internalContext == PROXY_CONTEXT && (embeddedList.get(embeddedList.size()-1)).getType() == UNDEFINED));
-		}
-		// finish adding the last context
-		if (internalContext != null && internalContext != PROXY_CONTEXT) {
-			ITextRegion newToken = fRegionFactory.createToken(internalContext, yychar - containerStart, yylength(), yylength());
-			fEmbeddedContainer.getRegions().add(newToken);
-			// DW, 4/16/2003 token regions no longer have parents
-			//newToken.setParent(fEmbeddedContainer);
-			fEmbeddedContainer.setLength(yychar - containerStart + yylength());
-			fEmbeddedContainer.setTextLength(yychar - containerStart + yylength());
-		}
-		yybegin(fEmbeddedPostState);
-	}
-	/* user method */
-	public final boolean isCaseSensitiveBlocking() {
-		return fIsCaseSensitiveBlocking;
-	}
-	/* user method */
-	public final void setCaseSensitiveBlocking(boolean newValue) {
-		fIsCaseSensitiveBlocking = newValue;
-	}
-	/* user method */
-	public boolean getBlockMarkerAllowsJSP() {
-		return getBlockMarkerAllowsJSP(fCurrentTagName);
-	}
-	/* user method */
-	public boolean getBlockMarkerAllowsJSP(String name) {
-		Iterator iterator = fBlockMarkers.iterator();
-		while(iterator.hasNext()) {
-			BlockMarker marker = (BlockMarker)iterator.next();
-			boolean casesensitive = marker.isCaseSensitive();
-			if(casesensitive && marker.getTagName().equals(name))
-				return marker.allowsJSP();
-			else if(!casesensitive && marker.getTagName().equalsIgnoreCase(name))
-				return marker.allowsJSP();
-		}
-		return true;
-	}
-	/* user method */
-	public boolean getBlockMarkerCaseSensitivity() {
-		return getBlockMarkerCaseSensitivity(fCurrentTagName);
-	}
-	public boolean getBlockMarkerCaseSensitivity(String name) {
-		Iterator iterator = fBlockMarkers.iterator();
-		while(iterator.hasNext()) {
-			BlockMarker marker = (BlockMarker)iterator.next();
-			boolean casesensitive = marker.isCaseSensitive();
-			if(casesensitive && marker.getTagName().equals(name))
-				return casesensitive;
-			else if(!casesensitive && marker.getTagName().equalsIgnoreCase(name))
-				return casesensitive;
-		}
-		return true;
-	}
-	/* user method */
-	public String getBlockMarkerContext() {
-		return getBlockMarkerContext(fCurrentTagName);
-	}
-	/* user method */
-	public String getBlockMarkerContext(String name) {
-		Iterator iterator = fBlockMarkers.iterator();
-		while(iterator.hasNext()) {
-			BlockMarker marker = (BlockMarker)iterator.next();
-			if(marker.getTagName().equals(name))
-				return marker.getContext();
-		}
-		return BLOCK_TEXT;
-	}
-	/* user method */
-	public List getBlockMarkers() {
-		return fBlockMarkers;
-	}
-	/* user method */
-	public final int getOffset() {
-		return fOffset + yychar;
-	}
-	private final boolean isBlockMarker() {
-		return isBlockMarker(fCurrentTagName);
-	}
-	private final boolean isBlockMarker(String tagName) {
-		if (!fIsBlockingEnabled)
-			return false;
-		return containsTagName(tagName);
-	}
-	/**
-	 * user method
-	 */
-	public final void beginBlockTagScan(String newTagName) {
-		beginBlockMarkerScan(newTagName, BLOCK_TEXT);
-	}
-	/**
-	 * user method
-	 *
-	 * Special tokenizer setup.  Allows tokenization to be initiated at the
-	 * start of a text block within a "newTagName" tag.
-	 *
-	 * Example: 
-	 *	Tokenizer toker = new Tokenizer();
-	 *	toker.setCaseSensitiveBlocking(false);
-	 *	toker.reset(new java.io.StringReader("afiuhqwkejhtasihgalkwhtq</scripter></scr></script>asgdasga"));
-	 *	toker.beginBlockMarkerScan("script", BLOCK_TEXT);
-	 *	toker.getRegions(); 
-	 *
-	 * Returns:
-	 *	BLOCK_TEXT: 0-40
-	 *	XML_END_TAG_OPEN: 41-42
-	 *	XML_TAG_NAME: 43-48
-	 *	XML_TAG_CLOSE: 49-49
-	 *	XML_CONTENT: 50-57
-	 *
-	 */
-	public final void beginBlockMarkerScan(String newTagName, String blockcontext) {
-		yybegin(ST_BLOCK_TAG_SCAN);
-		fCurrentTagName = newTagName;
-	}
-
-/**
- * Method doScan.
- * 
- * Returns a context region for all of the text from the current position upto the end of input or
- * to right *before* the first occurence of searchString
- * 
- * @param searchString - target string to search for ex.: "-->", "</tagname"
- * @param requireTailSeparator - whether the target must be immediately followed by whitespace or '>'
- * @param allowJSP - check for and allow for JSP markup <%%>
- * @param context - the context of the scanned region if non-zero length
- * @param exitState - the state to go to if the region was of non-zero length
- * @param abortState - the state to go to if the searchString was found immediately
- * @return String - the context found: the desired context on a non-zero length match, the abortContext on immediate success
- * @throws IOException
- */
-private final String doScan(String searchString, boolean requireTailSeparator, boolean allowJSP, boolean allowCDATA, String searchContext, int exitState, int immediateFallbackState) throws IOException {
-	boolean stillSearching = true;
-	// Disable further block (probably)
-	fIsBlockingEnabled = false;
-	int searchStringLength = searchString.length();
-	int n = 0;
-	char lastCheckChar;
-	int i;
-	boolean same = false;
-	// Check for JSP starts ("<%") if the tag is global like SCRIPT or STYLE
-	boolean checkJSPs = allowJSP && !fForbidJSP;
-	boolean checkedForJSPsOnce = !checkJSPs;
-	boolean checkedJSPsAtStartOnce = false;
-	
-	while (stillSearching) {
-		n = 0;
-		// Ensure that enough data from the input exists to compare against the search String.
-		n = yy_advance();
-		while(n != YYEOF && yy_currentPos < searchStringLength)
-			n = yy_advance();
-//		c = (char) n;
-		// If the input was too short or we've exhausted the input, stop immediately.
-		if (n == YYEOF && checkedForJSPsOnce) {
-			stillSearching = false;
-		}
-		else {
-			/**
-			 * Look for starting JSPs "<%"
-			 */
-			checkedForJSPsOnce = true;
-			// 1) yy_currentPos - searchStringLength : There's at least searchStringLength of input available; once that's read, check for JSPs
-			// ---
-			// Look for a JSP beginning at current-searchStringLength; if so, backup and switch scanner states to handle it.
-			// Ensure that we've not encountered a complete block (<%%>) that was *shorter* than the closeTagString and
-			// thus found twice at current-targetLength [since the first scan would have come out this far anyway].
-			if(checkJSPs && yy_currentPos > searchStringLength && yy_currentPos - searchStringLength != fLastInternalBlockStart && 
-				yy_buffer[yy_currentPos - searchStringLength] == '<' && yy_buffer[yy_currentPos - searchStringLength + 1] == '%') {
-				fLastInternalBlockStart = yy_markedPos = yy_currentPos - searchStringLength;
-				yy_currentPos = yy_markedPos + 1;
-				int resumeState = yystate();
-				yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
-				if(yy_markedPos == yy_startRead) {
-					String jspContext = primGetNextToken();
-					yybegin(resumeState);
-					return jspContext;
-				}
-				return searchContext;
-			}
-			// 2) yy_currentPos - jspstarter.length : There's not searchStringLength of input available; check for a JSP 2 spots back in what we could read
-			// ---
-			// Look for a JSP beginning at the current position; this case wouldn't be handled by the preceding section
-			// since it relies upon *having* closeTagStringLength amount of input to work as designed.  Must be sure we don't
-			// spill over the end of the buffer while checking.
-			else if(checkJSPs && yy_startRead != fLastInternalBlockStart && yy_currentPos > 0 && yy_currentPos < yy_buffer.length - 1 &&
-					yy_buffer[yy_currentPos - 1] == '<' && yy_buffer[yy_currentPos] == '%') {
-				fLastInternalBlockStart = yy_markedPos = yy_currentPos - 1;
-				yy_currentPos = yy_markedPos + 1;
-				int resumeState = yystate();
-				yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
-				if(yy_markedPos == yy_startRead) {
-					String jspContext = primGetNextToken();
-					yybegin(resumeState);
-					return jspContext;
-				}
-				return searchContext;
-			}
-			// 3) yy_currentPos..(yy_currentPos+jspStartlength-1) : Check at the start of the block one time
-			// ---
-			// Look for a JSP beginning immediately in the block area; this case wouldn't be handled by the preceding section
-			// since it relies upon yy_currentPos equaling exactly the previous end +1 to work as designed.
-			else if(checkJSPs && !checkedJSPsAtStartOnce && yy_startRead != fLastInternalBlockStart && yy_startRead > 0 &&
-					yy_startRead < yy_buffer.length - 1 && yy_buffer[yy_startRead] == '<' && yy_buffer[yy_startRead + 1] == '%') {
-				checkedJSPsAtStartOnce = true;
-				fLastInternalBlockStart = yy_markedPos = yy_startRead;
-				yy_currentPos = yy_markedPos + 1;
-				int resumeState = yystate();
-				yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
-				if(yy_markedPos == yy_startRead) {
-					String jspContext = primGetNextToken();
-					yybegin(resumeState);
-					return jspContext;
-				}
-				return searchContext;
-			}
-
-
-			/**
-			 * Look for starting CDATA "<![CDATA["
-			 */
-			// 1) yy_currentPos - searchStringLength: There's at least searchStringLength of input available; once that's read, check for CDATA
-			// ---
-			// Look for a CDATA beginning at current-searchStringLength; if so, backup and switch scanner states to handle it.
-			// Ensure that we've not encountered a complete block (<[!CDATA[]]>) that was *shorter* than the closeTagString and
-			// thus found twice at current-targetLength [since the first scan would have come out this far anyway].
-/*			if(checkCDATA && yy_currentPos > searchStringLength && yy_currentPos + searchStringLength < yy_buffer.length && yy_currentPos - searchStringLength != fLastInternalBlockStart && 
-				charsMatch(cdataStarter, yy_buffer, 0, yy_currentPos - searchStringLength)) {
-				fLastInternalBlockStart = yy_markedPos = yy_currentPos - searchStringLength;
-				yy_currentPos = yy_markedPos + 1;
-				int resumeState = yystate();
-				// go to a state where CDATA can be found
-				if (fEmbeddedContainer == null) {
-					fEmbeddedContainer = new ContextRegionContainer();
-					fEmbeddedContainer.setType(searchContext);
-					fEmbeddedContainer.setStart(yychar);
-				}
-				ITextRegion newToken = fRegionFactory.createToken(searchContext, yychar, yylength(), yylength());
-				fEmbeddedContainer.getRegions().add(newToken);
-				fEmbeddedContainer.setLength(fEmbeddedContainer.getLength() + yylength());
-				fEmbeddedContainer.setTextLength(fEmbeddedContainer.getTextLength() + yylength());
-				yybegin(YYINITIAL);
-				String context = primGetNextToken();
-				if(context.equals(XMLRegionContexts.XML_CDATA_OPEN)) {
-					assembleEmbeddedContainer(XMLRegionContexts.XML_CDATA_OPEN, XMLRegionContexts.XML_CDATA_CLOSE);
-				}
-				yybegin(resumeState);
-				return searchContext;
-			}
-*//*
-			// 2) yy_currentPos - cdataStarter.length: There's not searchStringLength of input available; check for a CDATA right here spots back in what we could read
-			// ---
-			// Look for a JSP beginning at the current position; this case wouldn't be handled by the preceding section
-			// since it relies upon *having* closeTagStringLength amount of input to work as designed.  Must be sure we don't
-			// spill over the end of the buffer while checking.
-			else if(checkCDATA && yy_startRead != fLastInternalBlockStart && yy_currentPos > 0 && yy_currentPos < yy_buffer.length - 1 &&
-					yy_buffer[yy_currentPos - 1] == '<' && yy_buffer[yy_currentPos] == '%') {
-				fLastInternalBlockStart = yy_markedPos = yy_currentPos - 1;
-				yy_currentPos = yy_markedPos + 1;
-				int resumeState = yystate();
-				yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
-				if(yy_markedPos == yy_startRead) {
-					String jspContext = primGetNextToken();
-					yybegin(resumeState);
-					return jspContext;
-				}
-				return searchContext;
-			}
-			// 3) yy_currentPos : Check at the start of the block one time
-			// ---
-			// Look for a JSP beginning immediately in the block area; this case wouldn't be handled by the preceding section
-			// since it relies upon yy_currentPos equaling exactly the previous end +1 to work as designed.
-			else if(checkCDATA && !checkedForCDATAOnce && yy_startRead != fLastInternalBlockStart && yy_startRead > 0 &&
-					yy_startRead < yy_buffer.length - 1 && yy_buffer[yy_startRead] == '<' && yy_buffer[yy_startRead + 1] == '%') {
-				checkedForCDATAOnce = true;
-				fLastInternalBlockStart = yy_markedPos = yy_startRead;
-				yy_currentPos = yy_markedPos + 1;
-				int resumeState = yystate();
-				yybegin(ST_BLOCK_TAG_INTERNAL_SCAN);
-				if(yy_markedPos == yy_startRead) {
-					String jspContext = primGetNextToken();
-					yybegin(resumeState);
-					return jspContext;
-				}
-				return searchContext;
-			}
-*/
-			// Check the characters in the target versus the last targetLength characters read from the buffer
-			// and see if it matches
-			if (n == YYEOF) {
-				stillSearching = false;
-			}
-			else {
-				same = true;
-				// safety check for array accesses
-				if(yy_currentPos >= searchStringLength && yy_currentPos <= yy_buffer.length) {
-					for(i = 0; i < searchStringLength; i++) {
-						if(same && fIsCaseSensitiveBlocking)
-							same = yy_buffer[i + yy_currentPos - searchStringLength] == searchString.charAt(i);
-						else if(same && !fIsCaseSensitiveBlocking)
-							same = Character.toLowerCase(yy_buffer[i + yy_currentPos - searchStringLength]) == Character.toLowerCase(searchString.charAt(i));
-					}
-				}
-				// safety check failed; no match is possible right now
-				else {
-					same = false;
-				}
-			}
-			if (same && requireTailSeparator && yy_currentPos < yy_buffer.length) {
-				// Additional check for close tags to ensure that targetString="</script" doesn't match
-				// "</scriptS"
-				lastCheckChar = yy_buffer[yy_currentPos];
-				// Succeed on "</script>" and "</script "
-				if(lastCheckChar == '>' || Character.isWhitespace(lastCheckChar))
-					stillSearching = false;
-			}
-			else {
-				stillSearching = !same || (yy_currentPos < yy_startRead + searchStringLength);
-			}
-		}
-	}
-	if (n != YYEOF || same) {
-		// We've stopped short of the end or definitely found a match
-		yy_markedPos = yy_currentPos - searchStringLength;
-		yy_currentPos = yy_markedPos + 1;
-		// If the searchString occurs at the very beginning of what would have
-		// been a Block, resume scanning normally immediately
-		if (yy_markedPos == yy_startRead) {
-			yybegin(immediateFallbackState);
-			return primGetNextToken();
-		}
-	}
-	else {
-		// We ran through the rest of the input
-		yy_markedPos = yy_currentPos;
-		yy_currentPos++;
-	}
-	yybegin(exitState);
-	// If the ending occurs at the very beginning of what would have
-	// been a Block, resume scanning normally immediately
-	if(yy_markedPos == yy_startRead)
-		return primGetNextToken();
-	return searchContext;
-}
-/**
- * user method 
- * does a lookahead for the current tag name
- */
-private final String doBlockTagScan() throws IOException {
-	fIsCaseSensitiveBlocking = getBlockMarkerCaseSensitivity();
-	return doScan("</" + fCurrentTagName, true, getBlockMarkerAllowsJSP(), true, getBlockMarkerContext(fCurrentTagName), YYINITIAL, YYINITIAL);
-}
-	/**
-	 * user method
-	 *
-	 * Converts the raw context String returned by the primGetNextToken()
-	 * method into a full ITextRegion by pulling in values for the
-	 * current offset within the scanning text.
-	 *
-	 * Returns null when EOF is encountered and attaches intermittently
-	 * discovered whitespace onto the end of useful regions.
-	 *
-	 * Note that this algorithm caches the token following the one being returned
-	 * so that whitespace can be collapsed.
-	 */
-	public final ITextRegion getNextToken() throws IOException {
-		fEmbeddedContainer = null;
-		// load the starting non-whitespace token (assume that it is so)
-		if (fShouldLoadBuffered) {
-			if (fBufferedEmbeddedContainer != null) {
-				ITextRegion container = fBufferedEmbeddedContainer;
-				fBufferedEmbeddedContainer = null;
-				fShouldLoadBuffered = false;
-				return container;
-			}
-			context = fBufferedContext;
-			start = fBufferedStart;
-			textLength = length = fBufferedLength;
-			fShouldLoadBuffered = false;
-		} else {
-			context = primGetNextToken();
-			if (context == PROXY_CONTEXT) {
-				return fEmbeddedContainer;
-			} else if (context == XML_TAG_NAME || f_context == JSP_ROOT_TAG_NAME || f_context == JSP_DIRECTIVE_NAME) {
-				if(containsTagName(yy_buffer, yy_startRead, yy_markedPos-yy_startRead))
-					fCurrentTagName = yytext();
-				else
-					fCurrentTagName = null;
-			} else if (context == XML_TAG_OPEN) {
-				fIsBlockingEnabled = true;
-			} else if (context == XML_END_TAG_OPEN) {
-				fIsBlockingEnabled = false;
-			}
-			start = yychar;
-			textLength = length = yylength();
-			if (yy_atEOF) {
-				fTokenCount++;
-				return null;
-			}
-		}
-		// store the next token
-		f_context = primGetNextToken();
-		if (f_context == PROXY_CONTEXT) {
-			fBufferedEmbeddedContainer = fEmbeddedContainer;
-			fShouldLoadBuffered = true;
-		} else if (f_context == XML_TAG_NAME || f_context == JSP_ROOT_TAG_NAME || f_context == JSP_DIRECTIVE_NAME) {
-			if(containsTagName(yy_buffer, yy_startRead, yy_markedPos-yy_startRead))
-				fCurrentTagName = yytext();
-			else
-				fCurrentTagName = null;
-		} else if (f_context == XML_TAG_OPEN) {
-			fIsBlockingEnabled = true;
-		} else if (f_context == XML_END_TAG_OPEN) {
-			fIsBlockingEnabled = false;
-		}
-		fBufferedContext = f_context;
-		fBufferedStart = yychar;
-		fBufferedLength = yylength();
-		fShouldLoadBuffered = true;
-		if (fBufferedContext == WHITE_SPACE) {
-			fShouldLoadBuffered = false;
-			length += fBufferedLength;
-		}
-		if (context == null) {
-			// EOF
-			if (Debug.debugTokenizer) {
-				System.out.println(getClass().getName() + " discovered " + fTokenCount + " tokens."); //$NON-NLS-2$//$NON-NLS-1$
-			}
-			return null;
-		}
-		fTokenCount++;
-		return fRegionFactory.createToken(context, start, textLength, length, null, fCurrentTagName);
-	}
-	/* user method */
-	public JSPTokenizer(){
-		super();
-	}
-	/* user method */
-	public JSPTokenizer(char[] charArray){
-			this(new CharArrayReader(charArray));
-	}
-	/* user method */
-	public void reset(char[] charArray) {
-		reset(new CharArrayReader(charArray), 0);
-	}
-	/* user method */
-	public void reset(char[] charArray, int newOffset) {
-		reset(new CharArrayReader(charArray), newOffset);
-	}
-	/* user method */
-	public void reset(java.io.InputStream in) {
-		reset(new java.io.InputStreamReader(in), 0);
-	}
-	/* user method */
-	public void reset(java.io.InputStream in, int newOffset) {
-		reset(new java.io.InputStreamReader(in), newOffset);
-	}
-	/* user method */
-	public void reset(java.io.Reader in) {
-		reset(in, 0);
-	}
-	/**
-	 * user method *
-	 *
-	 * Reset internal counters and vars to "newly created" values, in the hopes
-	 * that resetting a pre-existing tokenizer is faster than creating a new one.
-	 *
-	 * This method contains code blocks that were essentially duplicated from the
-	 * <em>generated</em> output of this specification before this method was
-	 * added.  Those code blocks were under the above copyright.
-	 */
-	public void reset(java.io.Reader in, int newOffset) {
-		if (Debug.debugTokenizer) {
-			System.out.println("resetting tokenizer");//$NON-NLS-1$
-		}
-		fOffset = newOffset;
-	
-		/* the input device */
-		yy_reader = in;
-	
-		/* the current state of the DFA */
-		yy_state = 0;
-	
-		/* the current lexical state */
-		yy_lexical_state = YYINITIAL;
-	
-		/* this buffer contains the current text to be matched and is
-		the source of the yytext() string */
-		java.util.Arrays.fill(yy_buffer, (char)0);
-	
-		/* the textposition at the last accepting state */
-		yy_markedPos = 0;
-	
-		/* the textposition at the last state to be included in yytext */
-		yy_pushbackPos = 0;
-	
-		/* the current text position in the buffer */
-		yy_currentPos = 0;
-	
-		/* startRead marks the beginning of the yytext() string in the buffer */
-		yy_startRead = 0;
-	
-		/** 
-		 * endRead marks the last character in the buffer, that has been read
-		 * from input 
-		 */
-		yy_endRead = 0;
-	
-		/* number of newlines encountered up to the start of the matched text */
-		yyline = 0;
-	
-		/* the number of characters up to the start of the matched text */
-		yychar = 0;
-	
-		/* yy_atEOF == true <=> the scanner has returned a value for EOF */
-		yy_atEOF = false;
-	
-		/* denotes if the user-EOF-code has already been executed */
-		yy_eof_done = false;
-	
-	
-		/* user vars: */
-		fTokenCount = 0;
-	 
-		fShouldLoadBuffered = false;
-		fBufferedContext = null;
-		fBufferedStart = 1;
-		fBufferedLength = 0;
-		fStateStack = new IntStack();
-		fJspTagStack.clear();
-	
-		fLastInternalBlockStart = -1;
-	
-		context = null;
-		start = 0;
-		textLength = 0;
-		length = 0;
-	
-		fEmbeddedContainer = null;
-		
-		fELlevel = 0;
-	}
-	/**
-	 * user method
-	 *
-	 */
-	public BlockTokenizer newInstance() {
-		JSPTokenizer newInstance = new JSPTokenizer();
-		// global tagmarkers can be shared; they have no state and 
-		// are never destroyed (e.g. 'release')
-		for(int i = 0; i < fBlockMarkers.size(); i++) {
-			BlockMarker blockMarker = (BlockMarker) fBlockMarkers.get(i);
-			if(blockMarker.isGlobal())
-				newInstance.addBlockMarker(blockMarker);
-		}
-		for(int i = 0; i < fNestablePrefixes.size(); i++) {
-			TagMarker marker = (TagMarker) fNestablePrefixes.get(i);
-			if(marker.isGlobal())
-				newInstance.addNestablePrefix(marker);
-		}
-		return newInstance;
-	}
-	/* user method */
-	private final String scanXMLCommentText() throws IOException {
-		// Scan for '-->' and return the text up to that point as
-		//   XML_COMMENT_TEXT unless the string occurs IMMEDIATELY, in which
-		//  case change to the ST_XML_COMMENT_END state and return the next
-		//  context as usual.
-		return doScan("-->", false, true, true, XML_COMMENT_TEXT, ST_XML_COMMENT_END, ST_XML_COMMENT_END);
-	}
-	/* user method */
-	private final String scanJSPCommentText() throws IOException {
-		// Scan for '--%>' and return the text up to that point as
-		//   JSP_COMMENT_TEXT unless the string occurs IMMEDIATELY, in which
-		//  case change to the ST_JSP_COMMENT_END state and return the next
-		//  context as usual.
-		return doScan("--%>", false, false, true, JSP_COMMENT_TEXT, ST_JSP_COMMENT_END, ST_JSP_COMMENT_END);
-	}
-	
-	/* user method */
-	private boolean isJspTag() {
-	  return fJspTagStack.empty() ? false : fJspTagStack.peek();
-	}
-
-
-  /**
-   * Creates a new scanner
-   * There is also a java.io.InputStream version of this constructor.
-   *
-   * @param   in  the java.io.Reader to read input from.
-   */
-  public JSPTokenizer(java.io.Reader in) {
-    this.yy_reader = in;
-  }
-
-  /**
-   * Creates a new scanner.
-   * There is also java.io.Reader version of this constructor.
-   *
-   * @param   in  the java.io.Inputstream to read input from.
-   */
-  public JSPTokenizer(java.io.InputStream in) {
-    this(new java.io.InputStreamReader(in));
-  }
-
-  /** 
-   * Unpacks the compressed DFA transition table.
-   *
-   * @param packed   the packed transition table
-   * @return         the unpacked transition table
-   */
-  private static int [] yy_unpack(String packed) {
-    int [] trans = new int[32589];
-    int i = 0;  /* index in packed string  */
-    int j = 0;  /* index in unpacked array */
-    while (i < 8702) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      value--;
-      do trans[j++] = value; while (--count > 0);
-    }
-    return trans;
-  }
-
-  /** 
-   * Unpacks the compressed character translation table.
-   *
-   * @param packed   the packed character translation table
-   * @return         the unpacked character translation table
-   */
-  private static char [] yy_unpack_cmap(String packed) {
-    char [] map = new char[0x10000];
-    int i = 0;  /* index in packed string  */
-    int j = 0;  /* index in unpacked array */
-    while (i < 1376) {
-      int  count = packed.charAt(i++);
-      char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
-    }
-    return map;
-  }
-
-
-  /**
-   * Gets the next input character.
-   *
-   * @return      the next character of the input stream, EOF if the
-   *              end of the stream is reached.
-   * @exception   IOException  if any I/O-Error occurs
-   */
-  private int yy_advance() throws java.io.IOException {
-
-    /* standard case */
-    if (yy_currentPos < yy_endRead) return yy_buffer[yy_currentPos++];
-
-    /* if the eof is reached, we don't need to work hard */ 
-    if (yy_atEOF) return YYEOF;
-
-    /* otherwise: need to refill the buffer */
-
-    /* first: make room (if you can) */
-    if (yy_startRead > 0) {
-      System.arraycopy(yy_buffer, yy_startRead, 
-                       yy_buffer, 0, 
-                       yy_endRead-yy_startRead);
-
-      /* translate stored positions */
-      yy_endRead-= yy_startRead;
-      yy_currentPos-= yy_startRead;
-      yy_markedPos-= yy_startRead;
-      yy_pushbackPos-= yy_startRead;
-      yy_startRead = 0;
-    }
-
-    /* is the buffer big enough? */
-    if (yy_currentPos >= yy_buffer.length) {
-      /* if not: blow it up */
-      char newBuffer[] = new char[yy_currentPos*2];
-      System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
-      yy_buffer = newBuffer;
-    }
-
-    /* finally: fill the buffer with new input */
-    int numRead = yy_reader.read(yy_buffer, yy_endRead, 
-                                            yy_buffer.length-yy_endRead);
-
-    if ( numRead == -1 ) return YYEOF;
-
-    yy_endRead+= numRead;
-
-    return yy_buffer[yy_currentPos++];
-  }
-
-    
-  /**
-   * Closes the input stream.
-   */
-  final public void yyclose() throws java.io.IOException {
-    yy_atEOF = true;            /* indicate end of file */
-    yy_endRead = yy_startRead;  /* invalidate buffer    */
-    yy_reader.close();
-  }
-
-
-  /**
-   * Returns the current lexical state.
-   */
-  final public int yystate() {
-    return yy_lexical_state;
-  }
-
-  /**
-   * Enters a new lexical state
-   *
-   * @param newState the new lexical state
-   */
-  final public void yybegin(int newState) {
-    yy_lexical_state = newState;
-  }
-
-
-  /**
-   * Returns the text matched by the current regular expression.
-   */
-  final public String yytext() {
-    return new String( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );
-  }
-
-  /**
-   * Returns the length of the matched text region.
-   */
-  final public int yylength() {
-    return yy_markedPos-yy_startRead;
-  }
-
-
-  /**
-   * Reports an error that occured while scanning - from the SED JFlex skeleton
-   *
-   * @param   errorCode  the code of the errormessage to display
-   */
-  private void yy_ScanError(int errorCode) {
-    try {
-      Logger.log(Logger.ERROR, YY_ERROR_MSG[errorCode]);
-    }
-    catch (ArrayIndexOutOfBoundsException e) {
-      Logger.log(Logger.ERROR, YY_ERROR_MSG[YY_UNKNOWN_ERROR]);
-    }
-    // DO NOT EXIT the VM on an error
-    // System.exit(1);
-  } 
-
-
-  /**
-   * Pushes the specified amount of characters back into the input stream.
-   *
-   * They will be read again by then next call of the scanning method
-   *
-   * @param number  the number of characters to be read again.
-   *                This number must not be greater than yylength()!
-   */
-  void yypushback(int number) {
-    if ( number > yylength() )
-      yy_ScanError(YY_PUSHBACK_2BIG);
-
-    yy_markedPos -= number;
-  }
-
-	/**
-	 * user method - skeleton.sed
-	 */
-	protected final boolean containsTagName(char[] markerTagName, int offset, int tagnameLength) {
-		for(int j = 0; j < fBlockMarkers.size(); j++) {
-			BlockMarker marker = (BlockMarker)fBlockMarkers.get(j);
-			if(marker.getTagName().length() == tagnameLength) {
-				boolean matchesSoFar = true;
-				for(int i = 0; i < tagnameLength && matchesSoFar; i++) {
-					if(marker.isCaseSensitive()) {
-						if(marker.getTagName().charAt(i) != markerTagName[i + offset])
-							matchesSoFar = false;
-					}
-					else {
-						if(Character.toLowerCase(marker.getTagName().charAt(i)) != Character.toLowerCase(markerTagName[i + offset]))
-							matchesSoFar = false;
-					}
-				}
-				if(matchesSoFar)
-					return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * user method - skeleton.sed
-	 *
-	 * Return ALL of the regions scannable within the remaining text
-	 * Note: for verification use
-	 */
-	public final List getRegions() {
-		List tokens = new ArrayList();
-		ITextRegion region = null;
-		try {
-			region = getNextToken();
-			while(region != null) {
-				if (region != null) {
-					tokens.add(region);
-				}
-				region = getNextToken();
-			}
-		}
-		catch (StackOverflowError e) {
-			Logger.logException(getClass().getName()+": input could not be tokenized correctly at position " + getOffset(), e);//$NON-NLS-1$
-			throw e;
-		}
-		catch (Exception e) {
-			// Since this is convenience method and NOT the recommended 
-			// way of getting tokens, many errors are simply hidden
-			Logger.logException("Exception not handled retrieving regions: " + e.getLocalizedMessage(), e);//$NON-NLS-1$
-		}
-		return tokens;
-	}
-	/**
-	 * user method - skeleton.sed
-	 */
-	private final void dump(String s) {
-		if (Debug.debugTokenizer) {
-			System.out.println(s + " (" + yychar + "-" + //$NON-NLS-2$//$NON-NLS-1$
-				(yylength() + yychar) + "):\'" +//$NON-NLS-1$
-					StringUtils.escape(yytext()) + "\'");//$NON-NLS-1$
-		}
-	}
-	/* user method  - skeleton.sed */
-	public final boolean isEOF() {
-		return yy_atEOF;
-	}
-/* user method - skeleton.sed */
-protected final boolean containsTagName(String markerTagName) {
-	Iterator blocks = fBlockMarkers.iterator();
-	while(blocks.hasNext()) {
-		BlockMarker marker = (BlockMarker)blocks.next();
-		if(marker.isCaseSensitive()) {
-			if(marker.getTagName().equals(markerTagName))
-				return true;
-		}
-		else {
-			if(marker.getTagName().equalsIgnoreCase(markerTagName))
-				return true;
-		}
-	}
-	return false;
-}
-
-  /**
-   * Contains user EOF-code, which will be executed exactly once,
-   * when the end of file is reached
-   */
-  private void yy_do_eof() {
-    if (!yy_eof_done) {
-      yy_eof_done = true;
-    // do nothing, this is the downstream parser's job
-
-    }
-  }
-
-
-  /**
-   * Resumes scanning until the next regular expression is matched,
-   * the end of input is encountered or an I/O-Error occurs.
-   *
-   * @return      the next token
-   * @exception   IOException  if any I/O-Error occurs
-   */
-  public String primGetNextToken() throws java.io.IOException {
-    int yy_input;
-    int yy_action;
-
-    yy_pushbackPos = -1;
-    boolean yy_was_pushback;
-
-    while (true) {
-
-      yychar+= yylength();
-
-      boolean yy_counted = false;
-      for (yy_currentPos = yy_startRead; yy_currentPos < yy_markedPos;
-                                                      yy_currentPos++) {
-        switch (yy_buffer[yy_currentPos]) {
-        case '\r':
-          yyline++;
-          yy_counted = true;
-          break;
-        case '\n':
-          if (yy_counted)
-            yy_counted = false;
-          else {
-            yyline++;
-          }
-          break;
-        default:
-          yy_counted = false;
-        }
-      }
-
-      if (yy_counted) {
-        if ( yy_advance() == '\n' ) yyline--;
-        if ( !yy_atEOF ) yy_currentPos--;
-      }
-
-      yy_action = -1;
-
-      yy_currentPos = yy_startRead = yy_markedPos;
-
-      yy_state = yy_lexical_state;
-
-      yy_was_pushback = false;
-
-      yy_forAction: {
-        while (true) {
-    
-          yy_input = yy_advance();
-
-          if ( yy_input == YYEOF ) break yy_forAction;
-
-          int yy_next = yytrans[ yy_rowMap[yy_state] + yycmap[yy_input] ];
-          if (yy_next == -1) break yy_forAction;
-          yy_state = yy_next;
-
-          int yy_attributes = YY_ATTRIBUTE[yy_state];
-          if ( (yy_attributes & 2) > 0 )
-            yy_pushbackPos = yy_currentPos;
-
-          if ( (yy_attributes & 1) > 0 ) {
-            yy_was_pushback = (yy_attributes & 4) > 0;
-            yy_action = yy_state; 
-            yy_markedPos = yy_currentPos; 
-            if ( (yy_attributes & 8) > 0 ) break yy_forAction;
-          }
-
-        }
-      }
-
-      if (yy_was_pushback)
-        yy_markedPos = yy_pushbackPos;
-
-      switch (yy_action) {    
-
-        case 123: 
-        case 128: 
-        case 129: 
-        case 282: 
-        case 286: 
-        case 287: 
-        case 405: 
-        case 408: 
-        case 505: 
-          {  /* only allow for non-JSP tags for this does not obey JSP quoting rules */
-	if(Debug.debugTokenizer)
-		dump("attr value");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_XML_ATTRIBUTE_NAME);
-        return XML_TAG_ATTRIBUTE_VALUE;
- }
-        case 680: break;
-        case 168: 
-        case 173: 
-        case 174: 
-        case 334: 
-        case 340: 
-        case 341: 
-        case 436: 
-        case 437: 
-        case 438: 
-        case 440: 
-        case 521: 
-          {  /* JSP attribute values have escape semantics */
-	if(Debug.debugTokenizer)
-		dump("jsp attr value");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-	yybegin(ST_XML_ATTRIBUTE_NAME);
-	return XML_TAG_ATTRIBUTE_VALUE;
- }
-        case 681: break;
-        case 647: 
-        case 652: 
-        case 659: 
-        case 664: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("jsp directive tag name");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_XML_ATTRIBUTE_NAME);
-        return JSP_DIRECTIVE_NAME;
- }
-        case 682: break;
-        case 622: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("XSL processing instruction target");//$NON-NLS-1$
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_XML_PI_ATTRIBUTE_NAME);
-        return XML_TAG_NAME;
- }
-        case 683: break;
-        case 605: 
-        case 608: 
-        case 609: 
-        case 610: 
-        case 611: 
-        case 612: 
-        case 613: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nCDATA start");//$NON-NLS-1$
-	fStateStack.push(yystate());
-	yybegin(ST_CDATA_TEXT);
-	return XML_CDATA_OPEN;
- }
-        case 684: break;
-        case 597: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("jsp:root tag name");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_XML_ATTRIBUTE_NAME);
-        return JSP_ROOT_TAG_NAME;
- }
-        case 685: break;
-        case 588: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("element");//$NON-NLS-1$
-	yybegin(ST_XML_ELEMENT_DECLARATION);
-	return XML_ELEMENT_DECLARATION;
- }
-        case 686: break;
-        case 587: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("attlist");//$NON-NLS-1$
-	yybegin(ST_XML_ATTLIST_DECLARATION);
-	return XML_ATTLIST_DECLARATION;
- }
-        case 687: break;
-        case 586: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("doctype");//$NON-NLS-1$
-	yybegin(ST_XML_DOCTYPE_DECLARATION);
-	return XML_DOCTYPE_DECLARATION;
- }
-        case 688: break;
-        case 571: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("doctype external id");//$NON-NLS-1$
-	fEmbeddedHint = XML_DOCTYPE_EXTERNAL_ID_PUBREF;
-	yybegin(ST_XML_DOCTYPE_ID_PUBLIC);
-	return XML_DOCTYPE_EXTERNAL_ID_PUBLIC;
- }
-        case 689: break;
-        case 570: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("doctype external id");//$NON-NLS-1$
-	fEmbeddedHint = XML_DOCTYPE_EXTERNAL_ID_SYSREF;
-	yybegin(ST_XML_DOCTYPE_ID_SYSTEM);
-	return XML_DOCTYPE_EXTERNAL_ID_SYSTEM;
- }
-        case 690: break;
-        case 564: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("DHTML processing instruction target");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_DHTML_ATTRIBUTE_NAME);
-        return XML_TAG_NAME;
- }
-        case 691: break;
-        case 539: 
-        case 580: 
-        case 581: 
-          { 
-	return JSP_VBL_QUOTED_CONTENT;
- }
-        case 692: break;
-        case 529: 
-        case 576: 
-        case 577: 
-          { 
-	return JSP_EL_QUOTED_CONTENT;
- }
-        case 693: break;
-        case 520: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nJSP comment close");//$NON-NLS-1$
-	yybegin(YYINITIAL);
-	return JSP_COMMENT_CLOSE;
- }
-        case 694: break;
-        case 507: 
-          { 
-	if (Debug.debugTokenizer) {
-		System.out.println("begin embedded region: " + fEmbeddedHint+", el-unquoted");//$NON-NLS-1$
-	}
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	fStateStack.push(yystate());
-	if(yylength() > 2)
-		yypushback(yylength() -2);
-	if(Debug.debugTokenizer)
-		dump("VBL in attr value");//$NON-NLS-1$
-	yybegin(ST_JSP_VBL);
-	fELlevel++;
-	assembleEmbeddedContainer(JSP_VBL_OPEN, new String[]{JSP_VBL_CLOSE});
-	fStateStack.pop();
-	yybegin(ST_XML_ATTRIBUTE_NAME);
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-	return PROXY_CONTEXT;
- }
-        case 695: break;
-        case 506: 
-          { 
-	if (Debug.debugTokenizer) {
-		System.out.println("begin embedded region: " + fEmbeddedHint+", el-unquoted");//$NON-NLS-1$
-	}
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	fStateStack.push(yystate());
-	if(yylength() > 2)
-		yypushback(yylength() -2);
-	if(Debug.debugTokenizer)
-		dump("EL in attr value");//$NON-NLS-1$
-	yybegin(ST_JSP_EL);
-	fELlevel++;
-	assembleEmbeddedContainer(JSP_EL_OPEN, new String[]{JSP_EL_CLOSE});
-	fStateStack.pop();
-	yybegin(ST_XML_ATTRIBUTE_NAME);
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-	return PROXY_CONTEXT;
- }
-        case 696: break;
-        case 500: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nCharRef");//$NON-NLS-1$
-	return XML_CHAR_REFERENCE;
- }
-        case 697: break;
-        case 497: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\ncomment start");//$NON-NLS-1$
-	fEmbeddedHint = XML_COMMENT_TEXT;
-	fEmbeddedPostState = ST_XML_COMMENT;
-	yybegin(ST_XML_COMMENT);
-	return XML_COMMENT_OPEN;
- }
-        case 698: break;
-        case 496: 
-        case 515: 
-        case 518: 
-        case 522: 
-        case 523: 
-        case 525: 
-        case 527: 
-        case 530: 
-        case 532: 
-        case 533: 
-        case 535: 
-        case 537: 
-        case 540: 
-          { 
-	/* JSP comment begun (anywhere)
-	 * A consequence of the start anywhere possibility is that the
-	 *  incoming state must be checked to see if it's erroneous
-	 *  due to the order of precedence generated
-	 */
-	// begin sanity checks
-	if(yystate() == ST_JSP_CONTENT) {
-		// at the beginning?!
-		yypushback(3);
-		return JSP_CONTENT;
-	}
-	else if(yystate() == ST_BLOCK_TAG_SCAN) {
-		yypushback(4);
-		return doBlockTagScan();
-	}
-	else if(yystate() == ST_XML_COMMENT) {
-		yypushback(4);
-		return scanXMLCommentText();
-	}
-	else if(yystate() == ST_JSP_COMMENT) {
-		yypushback(4);
-		return scanJSPCommentText();
-	}
-	else if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN)  {
-		yybegin(ST_JSP_COMMENT);
-		assembleEmbeddedContainer(JSP_COMMENT_OPEN, JSP_COMMENT_CLOSE);
-		if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN)
-			yybegin(ST_BLOCK_TAG_SCAN);
-		return PROXY_CONTEXT;
-	}
-	// finished sanity checks
-	if(yystate()==YYINITIAL) {
-		// the simple case, just a regular scriptlet out in content
-		if(Debug.debugTokenizer)
-			dump("\nJSP comment start");//$NON-NLS-1$
-		yybegin(ST_JSP_COMMENT);
-		return JSP_COMMENT_OPEN;
-	}
-	else {
-		if (Debug.debugTokenizer) {
-			System.out.println("begin embedded region: " + fEmbeddedHint+", jspCommentStart");//$NON-NLS-1$
-		}
-		if(Debug.debugTokenizer)
-			dump("JSP comment start");//$NON-NLS-1$
-		if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
-		else if(yystate() == ST_CDATA_TEXT) {
-			fEmbeddedPostState = ST_CDATA_TEXT;
-			fEmbeddedHint = XML_CDATA_TEXT;
-		}
-		yybegin(ST_JSP_COMMENT);
-		// the comment container itself will act as comment text
-		fEmbeddedHint = JSP_COMMENT_TEXT;
-		assembleEmbeddedContainer(JSP_COMMENT_OPEN, JSP_COMMENT_CLOSE);
-		if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
-			yybegin(ST_BLOCK_TAG_SCAN);
-			return BLOCK_TEXT;
-		}
-		/*
-		 * required help for successive embedded regions; mark this one as a
-		 * comment so it will be otherwise ignored but preserved (which is why
-		 * we can't use white-space)
-		 */
-		if(yystate() == ST_XML_TAG_NAME) {
-			fEmbeddedHint = XML_TAG_NAME;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-			fEmbeddedPostState = ST_XML_EQUALS;
-		}
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		else if(yystate() == ST_JSP_ATTRIBUTE_VALUE) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		return PROXY_CONTEXT;
-	}
- }
-        case 699: break;
-        case 399: 
-        case 400: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("XML processing instruction target");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_XML_PI_ATTRIBUTE_NAME);
-        return XML_TAG_NAME;
- }
-        case 700: break;
-        case 398: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("comment end");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-	yybegin(YYINITIAL);
-	return XML_COMMENT_CLOSE;
- }
-        case 701: break;
-        case 397: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("CDATA end");//$NON-NLS-1$
-	yybegin(fStateStack.pop());
-	return XML_CDATA_CLOSE;
- }
-        case 702: break;
-        case 396: 
-          { 
-	yybegin(ST_JSP_VBL);
-	if(yylength() > 2)
-		yypushback(yylength() - 2);
-	fELlevel++;
-	fEmbeddedHint = XML_CONTENT;
-	fEmbeddedPostState = YYINITIAL;
-	assembleEmbeddedContainer(JSP_VBL_OPEN, JSP_VBL_CLOSE);
-	fEmbeddedHint = XML_CONTENT;
-	yybegin(YYINITIAL);
-	return PROXY_CONTEXT;
- }
-        case 703: break;
-        case 395: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nPEReference");//$NON-NLS-1$
-	return XML_PE_REFERENCE;
- }
-        case 704: break;
-        case 394: 
-          { 
-	yybegin(ST_JSP_EL);
-	if(yylength() > 2)
-		yypushback(yylength() - 2);
-	fELlevel++;
-	fEmbeddedHint = XML_CONTENT;
-	fEmbeddedPostState = YYINITIAL;
-	assembleEmbeddedContainer(JSP_EL_OPEN, JSP_EL_CLOSE);
-	fEmbeddedHint = XML_CONTENT;
-	yybegin(YYINITIAL);
-	return PROXY_CONTEXT;
- }
-        case 705: break;
-        case 391: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nEntityRef");//$NON-NLS-1$
-	return XML_ENTITY_REFERENCE;
- }
-        case 706: break;
-        case 385: 
-        case 425: 
-        case 433: 
-        case 446: 
-        case 451: 
-        case 456: 
-        case 461: 
-        case 467: 
-        case 473: 
-        case 477: 
-        case 482: 
-        case 487: 
-        case 493: 
-          { 
-	/* JSP expression begun (anywhere)
-	 * A consequence of the start anywhere possibility is that the
-	 *  incoming state must be checked to see if it's erroneous
-	 *  due to the order of precedence generated
-	 */
-	// begin sanity checks
-	if(yystate() == ST_JSP_CONTENT) {
-		// at the beginning?!
-		yypushback(2);
-		return JSP_CONTENT;
-	}
-	else if(yystate() == ST_BLOCK_TAG_SCAN) {
-		yypushback(3);
-		return doBlockTagScan();
-	}
-	else if(yystate() == ST_XML_COMMENT) {
-		yypushback(3);
-		return scanXMLCommentText();
-	}
-	else if(yystate() == ST_JSP_COMMENT) {
-		yypushback(3);
-		return scanJSPCommentText();
-	}
-	// end sanity checks
-	fStateStack.push(yystate());
-	if(fStateStack.peek()==YYINITIAL) {
-		// the simple case, just an expression out in content
-		if(Debug.debugTokenizer)
-			dump("\nJSP expression start");//$NON-NLS-1$
-		yybegin(ST_JSP_CONTENT);
-		return JSP_EXPRESSION_OPEN;
-	}
-	else {
-		if (Debug.debugTokenizer) {
-			System.out.println("begin embedded region: " + fEmbeddedHint+", jspExpressionStart");//$NON-NLS-1$
-		}
-		if(Debug.debugTokenizer)
-			dump("JSP expression start");//$NON-NLS-1$
-		if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
-		else if(yystate() == ST_CDATA_TEXT) {
-			fEmbeddedPostState = ST_CDATA_TEXT;
-			fEmbeddedHint = XML_CDATA_TEXT;
-		}
-		yybegin(ST_JSP_CONTENT);
-		assembleEmbeddedContainer(JSP_EXPRESSION_OPEN, JSP_CLOSE);
-		if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
-			yybegin(ST_BLOCK_TAG_SCAN);
-			return BLOCK_TEXT;
-		}
-		// required help for successive embedded regions
-		if(yystate() == ST_XML_TAG_NAME) {
-			fEmbeddedHint = XML_TAG_NAME;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-			fEmbeddedPostState = ST_XML_EQUALS;
-		}
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		else if(yystate() == ST_JSP_ATTRIBUTE_VALUE) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		
-		return PROXY_CONTEXT;
-	}
- }
-        case 707: break;
-        case 384: 
-        case 424: 
-        case 432: 
-        case 445: 
-        case 450: 
-        case 455: 
-        case 460: 
-        case 466: 
-        case 472: 
-        case 476: 
-        case 481: 
-        case 486: 
-        case 492: 
-          { 
-	/* JSP declaration begun (anywhere)
-	 * A consequence of the start anywhere possibility is that the
-	 *  incoming state must be checked to see if it's erroneous
-	 *  due to the order of precedence generated
-	 */
-	// begin sanity checks
-	if(yystate() == ST_JSP_CONTENT) {
-		// at the beginning?!
-		yypushback(2);
-		return JSP_CONTENT;
-	}
-	else if(yystate() == ST_BLOCK_TAG_SCAN) {
-		yypushback(3);
-		return doBlockTagScan();
-	}
-	else if(yystate() == ST_XML_COMMENT) {
-		yypushback(3);
-		return scanXMLCommentText();
-	}
-	else if(yystate() == ST_JSP_COMMENT) {
-		yypushback(3);
-		return scanJSPCommentText();
-	}
-	// end sanity checks
-	fStateStack.push(yystate());
-	if(fStateStack.peek()==YYINITIAL) {
-		// the simple case, just a declaration out in content
-		if(Debug.debugTokenizer)
-			dump("\nJSP declaration start");//$NON-NLS-1$
-		yybegin(ST_JSP_CONTENT);
-		return JSP_DECLARATION_OPEN;
-	}
-	else {
-		if (Debug.debugTokenizer) {
-			System.out.println("begin embedded region: " + fEmbeddedHint+", jspDeclarationStart");//$NON-NLS-1$
-		}
-		if(Debug.debugTokenizer)
-			dump("JSP declaration start");//$NON-NLS-1$
-		if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
-		else if(yystate() == ST_CDATA_TEXT) {
-			fEmbeddedPostState = ST_CDATA_TEXT;
-			fEmbeddedHint = XML_CDATA_TEXT;
-		}
-		yybegin(ST_JSP_CONTENT);
-		assembleEmbeddedContainer(JSP_DECLARATION_OPEN, JSP_CLOSE);
-		if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
-			yybegin(ST_BLOCK_TAG_SCAN);
-			return BLOCK_TEXT;
-		}
-		// required help for successive embedded regions
-		if(yystate() == ST_XML_TAG_NAME) {
-			fEmbeddedHint = XML_TAG_NAME;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-			fEmbeddedPostState = ST_XML_EQUALS;
-		}
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		else if(yystate() == ST_JSP_ATTRIBUTE_VALUE) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		return PROXY_CONTEXT;
-	}
- }
-        case 708: break;
-        case 383: 
-        case 423: 
-        case 431: 
-        case 444: 
-        case 449: 
-        case 454: 
-        case 459: 
-        case 465: 
-        case 471: 
-        case 475: 
-        case 480: 
-        case 485: 
-        case 491: 
-          { 
-	/* JSP directive begun (anywhere)
-	 * A consequence of the start anywhere possibility is that the
-	 *  incoming state must be checked to see if it's erroneous
-	 *  due to the order of precedence generated
-	 */
-	// begin sanity checks
-	if(yystate() == ST_JSP_CONTENT) {
-		// at the beginning?!
-		yypushback(2);
-		return JSP_CONTENT;
-	}
-	else if(yystate() == ST_BLOCK_TAG_SCAN) {
-		yypushback(3);
-		return doBlockTagScan();
-	}
-	else if(yystate() == ST_XML_COMMENT) {
-		yypushback(3);
-		return scanXMLCommentText();
-	}
-	else if(yystate() == ST_JSP_COMMENT) {
-		yypushback(3);
-		return scanJSPCommentText();
-	}
-	// end sanity checks
-	fStateStack.push(yystate());
-	if(fStateStack.peek()==YYINITIAL) {
-		// the simple case, just a declaration out in content
-		if(Debug.debugTokenizer)
-			dump("\nJSP directive start");//$NON-NLS-1$
-		yybegin(ST_JSP_DIRECTIVE_NAME);
-		return JSP_DIRECTIVE_OPEN;
-	}
-	else {
-		if (Debug.debugTokenizer) {
-			System.out.println("begin embedded region: " + fEmbeddedHint+", jspDirectiveStart");//$NON-NLS-1$
-		}
-		if(Debug.debugTokenizer)
-			dump("JSP declaration start");//$NON-NLS-1$
-		if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
-		else if(yystate() == ST_CDATA_TEXT) {
-			fEmbeddedPostState = ST_CDATA_TEXT;
-			fEmbeddedHint = XML_CDATA_TEXT;
-		}
-		yybegin(ST_JSP_DIRECTIVE_NAME);
-		assembleEmbeddedContainer(JSP_DIRECTIVE_OPEN, new String[]{JSP_DIRECTIVE_CLOSE, JSP_CLOSE});
-		if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
-			yybegin(ST_BLOCK_TAG_SCAN);
-			return BLOCK_TEXT;
-		}
-		// required help for successive embedded regions
-		if(yystate() == ST_XML_TAG_NAME) {
-			fEmbeddedHint = XML_TAG_NAME;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-			fEmbeddedPostState = ST_XML_EQUALS;
-		}
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		return PROXY_CONTEXT;
-	}
- }
-        case 709: break;
-        case 373: 
-          { 
-	yybegin(ST_JSP_VBL_DQUOTES_END);
-	return JSP_VBL_QUOTED_CONTENT;
- }
-        case 710: break;
-        case 369: 
-          { 
-	yybegin(ST_JSP_VBL_SQUOTES_END);
-	return JSP_VBL_QUOTED_CONTENT;
- }
-        case 711: break;
-        case 367: 
-          { 
-	fELlevel++;
-	if(fELlevel == 1) {
-		return JSP_VBL_OPEN;
-	}
- }
-        case 712: break;
-        case 357: 
-          { 
-	yybegin(ST_JSP_EL_DQUOTES_END);
-	return JSP_EL_QUOTED_CONTENT;
- }
-        case 713: break;
-        case 353: 
-          { 
-	yybegin(ST_JSP_EL_SQUOTES_END);
-	return JSP_EL_QUOTED_CONTENT;
- }
-        case 714: break;
-        case 351: 
-          { 
-	//System.out.println(JSP_EL_CONTENT+ ":[" + yytext() + "]");
-	return JSP_EL_CONTENT;
- }
-        case 715: break;
-        case 350: 
-          { 
-	fELlevel++;
-	if(fELlevel == 1) {
-		return JSP_EL_OPEN;
-	}
- }
-        case 716: break;
-        case 347: 
-          { 
-	int enterState = yystate();
-	yybegin(ST_JSP_DQUOTED_VBL);
-	assembleEmbeddedContainer(JSP_VBL_OPEN, new String[]{JSP_VBL_CLOSE, XML_TAG_ATTRIBUTE_VALUE_DQUOTE, JSP_TAG_ATTRIBUTE_VALUE_DQUOTE});
-	// abort early when an unescaped double quote is found in the VBL
-	if(fEmbeddedContainer.getLastRegion().getType().equals(XML_TAG_ATTRIBUTE_VALUE_DQUOTE) || fEmbeddedContainer.getLastRegion().getType().equals(JSP_TAG_ATTRIBUTE_VALUE_DQUOTE)) {
-		yybegin(ST_ABORT_EMBEDDED);
-		fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	}
-	else {
-		yybegin(enterState);
-	}
-	return PROXY_CONTEXT;
- }
-        case 717: break;
-        case 346: 
-          { 
-	int enterState = yystate();
-	yybegin(ST_JSP_DQUOTED_EL);
-	assembleEmbeddedContainer(JSP_EL_OPEN, new String[]{JSP_EL_CLOSE, XML_TAG_ATTRIBUTE_VALUE_DQUOTE, JSP_TAG_ATTRIBUTE_VALUE_DQUOTE});
-	// abort early when an unescaped double quote is found in the EL
-	if(fEmbeddedContainer.getLastRegion().getType().equals(XML_TAG_ATTRIBUTE_VALUE_DQUOTE) || fEmbeddedContainer.getLastRegion().getType().equals(JSP_TAG_ATTRIBUTE_VALUE_DQUOTE)) {
-		yybegin(ST_ABORT_EMBEDDED);
-		fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	}
-	else {
-		yybegin(enterState);
-	}
-	return PROXY_CONTEXT;
- }
-        case 718: break;
-        case 345: 
-          { 
-	int enterState = yystate();
-	yybegin(ST_JSP_SQUOTED_VBL);
-	assembleEmbeddedContainer(JSP_VBL_OPEN, new String[]{JSP_VBL_CLOSE, XML_TAG_ATTRIBUTE_VALUE_SQUOTE, JSP_TAG_ATTRIBUTE_VALUE_SQUOTE});
-	// abort early when an unescaped single quote is found in the VBL
-	if(fEmbeddedContainer.getLastRegion().getType().equals(XML_TAG_ATTRIBUTE_VALUE_SQUOTE) || fEmbeddedContainer.getLastRegion().getType().equals(JSP_TAG_ATTRIBUTE_VALUE_SQUOTE)) {
-		yybegin(ST_ABORT_EMBEDDED);
-		fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	}
-	else {
-		yybegin(enterState);
-	}
-	return PROXY_CONTEXT;
- }
-        case 719: break;
-        case 344: 
-          { 
-	int enterState = yystate();
-	yybegin(ST_JSP_SQUOTED_EL);
-	assembleEmbeddedContainer(JSP_EL_OPEN, new String[]{JSP_EL_CLOSE, XML_TAG_ATTRIBUTE_VALUE_SQUOTE, JSP_TAG_ATTRIBUTE_VALUE_SQUOTE});
-	// abort early when an unescaped single quote is found in the EL
-	if(fEmbeddedContainer.getLastRegion().getType().equals(XML_TAG_ATTRIBUTE_VALUE_SQUOTE) || fEmbeddedContainer.getLastRegion().getType().equals(JSP_TAG_ATTRIBUTE_VALUE_SQUOTE)) {
-		yybegin(ST_ABORT_EMBEDDED);
-		fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	}
-	else {
-		yybegin(enterState);
-	}
-	return PROXY_CONTEXT;
- }
-        case 720: break;
-        case 342: 
-          { 
-	if (Debug.debugTokenizer) {
-		System.out.println("begin embedded region: " + fEmbeddedHint+", genericEndTagOpen");//$NON-NLS-1$
-	}
-	int incomingState = yystate();
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	if(Debug.debugTokenizer)
-		dump("JSP attribute value start - end tag");//$NON-NLS-1$
-	yybegin(ST_XML_TAG_NAME);
-	assembleEmbeddedContainer(XML_END_TAG_OPEN, new String[]{XML_TAG_CLOSE,XML_EMPTY_TAG_CLOSE});
-	if(yystate() != ST_ABORT_EMBEDDED)
-        yybegin(incomingState);
-	return PROXY_CONTEXT;
- }
-        case 721: break;
-        case 292: 
-        case 304: 
-        case 310: 
-          { 
-	return XML_DOCTYPE_INTERNAL_SUBSET;
- }
-        case 722: break;
-        case 280: 
-          { 
-	String tagName = yytext().substring(1);
-	// pushback to just after the opening bracket
-	yypushback(yylength() - 1);
-	/*
-	 * If this tag can not be nested or we're already searching for an
-	 * attribute name, equals, or value, return immediately.
-	 */
-	if (!isNestable(tagName) || (!fStateStack.empty() && (fStateStack.peek() == ST_XML_ATTRIBUTE_NAME || fStateStack.peek() == ST_XML_EQUALS || fStateStack.peek() == ST_XML_ATTRIBUTE_VALUE || fStateStack.peek() == ST_JSP_ATTRIBUTE_VALUE))) {
-		yybegin(ST_XML_TAG_NAME);
-		return XML_TAG_OPEN;
-	}
-	if(Debug.debugTokenizer)
-		dump("tag in place of attr value");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	fStateStack.push(yystate());
-	// embedded container should be looking for the name (again) next
-	yybegin(ST_XML_TAG_NAME);
-	assembleEmbeddedTagSequence(XML_TAG_OPEN, tagName); // ?
-	fStateStack.pop();
-	yybegin(ST_XML_ATTRIBUTE_NAME);
-	return PROXY_CONTEXT;
- }
-        case 723: break;
-        case 278: 
-          { 
-	String tagName = yytext().substring(1);
-	// pushback to just after the opening bracket
-	yypushback(yylength() - 1);
-	/*
-	 * If this tag can not be nested or we're already searching for an
-	 * attribute name, equals, or value, return immediately.
-	 */
-	if (!isNestable(tagName) || (!fStateStack.empty() && (fStateStack.peek() == ST_XML_ATTRIBUTE_NAME || fStateStack.peek() == ST_XML_EQUALS || fStateStack.peek() == ST_XML_ATTRIBUTE_VALUE || fStateStack.peek() == ST_JSP_ATTRIBUTE_VALUE))) {
-		yybegin(ST_XML_TAG_NAME);
-		return XML_TAG_OPEN;
-	}
-	if(Debug.debugTokenizer)
-		dump("tag in place of attr name");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	fStateStack.push(yystate());
-	// embedded container should be looking for the name (again) next
-	yybegin(ST_XML_TAG_NAME);
-	assembleEmbeddedTagSequence(XML_TAG_OPEN, tagName); // ?
-	fStateStack.pop();
-	yybegin(ST_XML_EQUALS);
-	return PROXY_CONTEXT;
- }
-        case 724: break;
-        case 276: 
-          { 
-        yybegin(YYINITIAL);
-	fEmbeddedHint = UNDEFINED;
-	if(Debug.debugTokenizer)
-		dump("empty tag close");//$NON-NLS-1$
-		if (!fJspTagStack.empty())
-			fJspTagStack.pop();
-        return XML_EMPTY_TAG_CLOSE;
- }
-        case 725: break;
-        case 269: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("JSP end");//$NON-NLS-1$
-	if (Debug.debugTokenizer) {
-		if(fStateStack.peek()!=YYINITIAL)
-			System.out.println("end embedded region");//$NON-NLS-1$
-	}
-	yybegin(fStateStack.pop());
-	return JSP_DIRECTIVE_CLOSE;
- }
-        case 726: break;
-        case 267: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("JSP end");//$NON-NLS-1$
-	if (Debug.debugTokenizer) {
-		if(fStateStack.peek()!=YYINITIAL)
-			System.out.println("end embedded region");//$NON-NLS-1$
-	}
-	yybegin(fStateStack.pop());
-	return JSP_CLOSE;
- }
-        case 727: break;
-        case 126: 
-        case 171: 
-          { 
-	String type = yy_lexical_state == ST_XML_ATTRIBUTE_VALUE ? XML_TAG_ATTRIBUTE_VALUE_DQUOTE : JSP_TAG_ATTRIBUTE_VALUE_DQUOTE;
-
-	if (Debug.debugTokenizer) {
-		System.out.println("begin embedded region: " + fEmbeddedHint+", "+type);//$NON-NLS-1$
-	}
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
-	yybegin(ST_XML_ATTRIBUTE_VALUE_DQUOTED);
-	fStateStack.push(yystate());
-	if(Debug.debugTokenizer)
-		dump("JSP attribute value start - complex double quoted");//$NON-NLS-1$
-	assembleEmbeddedContainer(type, type);
-	fStateStack.pop();
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-	yybegin(ST_XML_ATTRIBUTE_NAME);
-	return PROXY_CONTEXT;
- }
-        case 728: break;
-        case 124: 
-          { 
-	if (Debug.debugTokenizer) {
-		System.out.println("begin embedded region: " + fEmbeddedHint+", unquoted genericTagOpen");//$NON-NLS-1$
-	}
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	fStateStack.push(yystate());
-	if(Debug.debugTokenizer)
-		dump("JSP tag embedded name start - start tag");//$NON-NLS-1$
-	yybegin(ST_XML_TAG_NAME);
-	assembleEmbeddedContainer(XML_TAG_OPEN, new String[]{XML_TAG_CLOSE,XML_EMPTY_TAG_CLOSE});
-	fStateStack.pop();
-        yybegin(ST_XML_ATTRIBUTE_NAME);
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-	return PROXY_CONTEXT;
- }
-        case 729: break;
-        case 122: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("equals");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-        yybegin(isJspTag() ? ST_JSP_ATTRIBUTE_VALUE : ST_XML_ATTRIBUTE_VALUE);
-        return XML_TAG_ATTRIBUTE_EQUALS;
- }
-        case 730: break;
-        case 121: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("attr name");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-        yybegin(ST_XML_EQUALS);
-        return XML_TAG_ATTRIBUTE_NAME;
- }
-        case 731: break;
-        case 117: 
-        case 118: 
-        case 119: 
-        case 277: 
-        case 404: 
-        case 504: 
-        case 545: 
-        case 546: 
-        case 565: 
-        case 566: 
-        case 584: 
-        case 585: 
-        case 598: 
-        case 607: 
-        case 615: 
-        case 617: 
-        case 619: 
-        case 621: 
-        case 624: 
-        case 630: 
-        case 631: 
-        case 632: 
-        case 633: 
-        case 634: 
-        case 640: 
-        case 641: 
-        case 642: 
-        case 643: 
-        case 644: 
-        case 650: 
-        case 651: 
-        case 653: 
-        case 654: 
-        case 660: 
-        case 661: 
-        case 662: 
-        case 663: 
-        case 669: 
-        case 670: 
-        case 671: 
-        case 672: 
-        case 675: 
-        case 676: 
-        case 678: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("tag name");//$NON-NLS-1$
-    String tagname = yytext();
-	fJspTagStack.push(tagname.indexOf(':') != -1);
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_XML_ATTRIBUTE_NAME);
-        return XML_TAG_NAME;
- }
-        case 732: break;
-        case 115: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("tag close");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-	if(isBlockMarker()) {
-		fEmbeddedHint = getBlockMarkerContext();
-		fEmbeddedPostState = ST_BLOCK_TAG_SCAN;
-        	yybegin(ST_BLOCK_TAG_SCAN);
-	}
-	else
-        	yybegin(YYINITIAL);
-        if (!fJspTagStack.empty())
-			fJspTagStack.pop();
-        return XML_TAG_CLOSE;
- }
-        case 733: break;
-        case 108: 
-        case 112: 
-        case 272: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("attr value");//$NON-NLS-1$
-        yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_NAME);
-        return XML_TAG_ATTRIBUTE_VALUE;
- }
-        case 734: break;
-        case 107: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("equals");//$NON-NLS-1$
-        yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_VALUE);
-        return XML_TAG_ATTRIBUTE_EQUALS;
- }
-        case 735: break;
-        case 106: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("attr name");//$NON-NLS-1$
-        yybegin(ST_JSP_DIRECTIVE_EQUALS);
-        return XML_TAG_ATTRIBUTE_NAME;
- }
-        case 736: break;
-        case 103: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("JSP directive name");//$NON-NLS-1$
-	yybegin(ST_JSP_DIRECTIVE_NAME_WHITESPACE);
-	return JSP_DIRECTIVE_NAME;
- }
-        case 737: break;
-        case 99: 
-        case 100: 
-        case 101: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("JSP code content");//$NON-NLS-1$
-	return doScan("%>", false, false, false, JSP_CONTENT, ST_JSP_CONTENT, ST_JSP_CONTENT);
- }
-        case 738: break;
-        case 95: 
-        case 97: 
-        case 98: 
-        case 262: 
-        case 263: 
-        case 266: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("DHTML processing instruction attribute value");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_DHTML_ATTRIBUTE_NAME);
-        return XML_TAG_ATTRIBUTE_VALUE;
- }
-        case 739: break;
-        case 94: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("DHTML processing instruction '='");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-        yybegin(ST_DHTML_ATTRIBUTE_VALUE);
-        return XML_TAG_ATTRIBUTE_EQUALS;
- }
-        case 740: break;
-        case 93: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("DHTML processing instruction attribute name");//$NON-NLS-1$
-        yybegin(ST_DHTML_EQUALS);
-        return XML_TAG_ATTRIBUTE_NAME;
- }
-        case 741: break;
-        case 91: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("DHTML processing instruction end");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-        yybegin(YYINITIAL);
-        return XML_PI_CLOSE;
- }
-        case 742: break;
-        case 85: 
-        case 87: 
-        case 253: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("XML processing instruction attribute value");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_XML_PI_ATTRIBUTE_NAME);
-        return XML_TAG_ATTRIBUTE_VALUE;
- }
-        case 743: break;
-        case 84: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("XML processing instruction '='");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-        yybegin(ST_XML_PI_ATTRIBUTE_VALUE);
-        return XML_TAG_ATTRIBUTE_EQUALS;
- }
-        case 744: break;
-        case 50: 
-        case 208: 
-        case 209: 
-        case 212: 
-        case 222: 
-        case 223: 
-        case 226: 
-        case 227: 
-        case 378: 
-        case 381: 
-        case 470: 
-        case 484: 
-        case 490: 
-          { 
-	return JSP_VBL_CONTENT;
- }
-        case 745: break;
-        case 43: 
-        case 186: 
-        case 187: 
-        case 190: 
-        case 200: 
-        case 201: 
-        case 205: 
-        case 206: 
-        case 348: 
-        case 362: 
-        case 365: 
-        case 442: 
-        case 443: 
-        case 458: 
-        case 464: 
-          { 
-	return JSP_EL_CONTENT;
- }
-        case 746: break;
-        case 35: 
-        case 160: 
-        case 161: 
-        case 330: 
-        case 430: 
-        case 434: 
-        case 519: 
-        case 553: 
-        case 573: 
-        case 590: 
-        case 600: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("attlist contentspec");//$NON-NLS-1$
-	return XML_ATTLIST_DECL_CONTENT;
- }
-        case 747: break;
-        case 33: 
-        case 153: 
-        case 154: 
-        case 320: 
-        case 422: 
-        case 426: 
-        case 516: 
-        case 552: 
-        case 572: 
-        case 589: 
-        case 599: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("elementdecl contentspec");//$NON-NLS-1$
-	return XML_ELEMENT_DECL_CONTENT;
- }
-        case 748: break;
-        case 22: 
-        case 113: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("inappropriate tag name");//$NON-NLS-1$
-	if(!fStateStack.empty() && (fStateStack.peek()==ST_XML_ATTRIBUTE_VALUE_SQUOTED||fStateStack.peek()==ST_XML_ATTRIBUTE_VALUE_DQUOTED)) {
-		yybegin(ST_ABORT_EMBEDDED);
-		yypushback(yylength()-1);
-		return XML_TAG_ATTRIBUTE_VALUE;
-	}
-	yybegin(YYINITIAL);
-        return XML_CONTENT;
- }
-        case 749: break;
-        case 18: 
-        case 105: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("white space");//$NON-NLS-1$
-	yybegin(ST_JSP_DIRECTIVE_ATTRIBUTE_NAME);
-	return WHITE_SPACE;
- }
-        case 750: break;
-        case 5: 
-        case 8: 
-        case 9: 
-        case 10: 
-        case 12: 
-        case 13: 
-        case 14: 
-        case 15: 
-        case 17: 
-        case 19: 
-        case 20: 
-        case 21: 
-        case 23: 
-        case 24: 
-        case 25: 
-        case 26: 
-        case 27: 
-        case 28: 
-        case 29: 
-        case 30: 
-        case 31: 
-        case 32: 
-        case 34: 
-        case 40: 
-        case 41: 
-        case 42: 
-        case 73: 
-        case 177: 
-        case 182: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("white space");//$NON-NLS-1$
-        return WHITE_SPACE;
- }
-        case 751: break;
-        case 0: 
-        case 57: 
-        case 60: 
-        case 62: 
-        case 234: 
-        case 236: 
-        case 237: 
-        case 239: 
-        case 241: 
-        case 388: 
-        case 389: 
-        case 390: 
-        case 499: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nXML content");//$NON-NLS-1$
-	return XML_CONTENT;
- }
-        case 752: break;
-        case 58: 
-        case 102: 
-        case 114: 
-        case 120: 
-        case 130: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nstart tag open");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_NAME;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-        yybegin(ST_XML_TAG_NAME);
-        return XML_TAG_OPEN;
- }
-        case 753: break;
-        case 59: 
-        case 61: 
-        case 65: 
-        case 66: 
-        case 67: 
-        case 71: 
-        case 72: 
-        case 82: 
-        case 86: 
-        case 88: 
-        case 89: 
-        case 90: 
-        case 92: 
-        case 96: 
-        case 104: 
-        case 109: 
-        case 110: 
-        case 111: 
-        case 116: 
-        case 125: 
-        case 132: 
-        case 133: 
-        case 134: 
-        case 135: 
-        case 137: 
-        case 138: 
-        case 140: 
-        case 141: 
-        case 142: 
-        case 145: 
-        case 146: 
-        case 147: 
-        case 150: 
-        case 151: 
-        case 152: 
-        case 157: 
-        case 158: 
-        case 159: 
-        case 167: 
-        case 169: 
-        case 170: 
-        case 192: 
-        case 193: 
-        case 195: 
-        case 196: 
-        case 203: 
-        case 207: 
-        case 214: 
-        case 215: 
-        case 217: 
-        case 218: 
-        case 224: 
-        case 228: 
-          { 
-	if (Debug.debugTokenizer)
-		System.out.println("!!!unexpected!!!: \"" + yytext() + "\":" + //$NON-NLS-2$//$NON-NLS-1$
-			yychar + "-" + (yychar + yylength()));//$NON-NLS-1$
-	return UNDEFINED;
- }
-        case 754: break;
-        case 63: 
-        case 64: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("CDATA text");//$NON-NLS-1$
-	fEmbeddedPostState = ST_CDATA_TEXT;
-	fEmbeddedHint = XML_CDATA_TEXT;
-	String returnedContext = doScan("]]>", false, true, true, XML_CDATA_TEXT, ST_CDATA_END,  ST_CDATA_END);//$NON-NLS-1$
-	if(returnedContext == XML_CDATA_TEXT)
-		yybegin(ST_CDATA_END);
-	return returnedContext;
- }
-        case 755: break;
-        case 68: 
-        case 194: 
-        case 197: 
-        case 216: 
-        case 219: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("LINE FEED");//$NON-NLS-1$
-	return WHITE_SPACE;
- }
-        case 756: break;
-        case 69: 
-        case 70: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("comment content");//$NON-NLS-1$
-	return scanXMLCommentText();
- }
-        case 757: break;
-        case 74: 
-        case 75: 
-        case 76: 
-        case 77: 
-        case 246: 
-        case 247: 
-        case 248: 
-        case 401: 
-        case 502: 
-        case 503: 
-        case 543: 
-        case 544: 
-        case 563: 
-        case 583: 
-        case 596: 
-        case 606: 
-        case 614: 
-        case 616: 
-        case 618: 
-        case 620: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("processing instruction target");//$NON-NLS-1$
-	fEmbeddedHint = XML_CONTENT;
-        yybegin(ST_PI_WS);
-        return XML_TAG_NAME;
- }
-        case 758: break;
-        case 78: 
-          { 
-        yybegin(ST_PI_CONTENT);
-        return WHITE_SPACE;
- }
-        case 759: break;
-        case 79: 
-        case 80: 
-        case 81: 
-          { 
-		// block scan until close is found
-	return doScan("?>", false, false, false, XML_PI_CONTENT, ST_XML_PI_TAG_CLOSE, ST_XML_PI_TAG_CLOSE);
- }
-        case 760: break;
-        case 83: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("XML processing instruction attribute name");//$NON-NLS-1$
-        yybegin(ST_XML_PI_EQUALS);
-        return XML_TAG_ATTRIBUTE_NAME;
- }
-        case 761: break;
-        case 127: 
-        case 172: 
-          { 
-	String type = yy_lexical_state == ST_XML_ATTRIBUTE_VALUE ? XML_TAG_ATTRIBUTE_VALUE_SQUOTE : JSP_TAG_ATTRIBUTE_VALUE_SQUOTE;
-	if (Debug.debugTokenizer) {
-		System.out.println("begin embedded region: " + fEmbeddedHint+", "+type);//$NON-NLS-1$
-	}
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
-	yybegin(ST_XML_ATTRIBUTE_VALUE_SQUOTED);
-	fStateStack.push(yystate());
-	if(Debug.debugTokenizer)
-		dump("JSP attribute value start - complex single quoted");//$NON-NLS-1$
-	assembleEmbeddedContainer(type, type);
-	fStateStack.pop();
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-	fEmbeddedPostState = ST_XML_EQUALS;
-        yybegin(ST_XML_ATTRIBUTE_NAME);
-	return PROXY_CONTEXT;
- }
-        case 762: break;
-        case 131: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("declaration end");//$NON-NLS-1$
-	if (Debug.debugTokenizer) {
-		if(fStateStack.peek()!=YYINITIAL)
-			System.out.println("end embedded region");//$NON-NLS-1$
-	}
-	yybegin(fStateStack.pop());
-	return XML_DECLARATION_CLOSE;
- }
-        case 763: break;
-        case 136: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("doctype type");//$NON-NLS-1$
-	yybegin(ST_XML_DOCTYPE_EXTERNAL_ID);
-	return XML_DOCTYPE_NAME;
- }
-        case 764: break;
-        case 139: 
-        case 143: 
-        case 297: 
-        case 301: 
-        case 417: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("doctype public reference");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-	fEmbeddedPostState = YYINITIAL;
-	yybegin(ST_XML_DOCTYPE_ID_SYSTEM);
-	return XML_DOCTYPE_EXTERNAL_ID_PUBREF;
- }
-        case 765: break;
-        case 144: 
-        case 148: 
-        case 307: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("doctype system reference");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-	fEmbeddedPostState = YYINITIAL;
-	yybegin(ST_XML_DECLARATION_CLOSE);
-	return XML_DOCTYPE_EXTERNAL_ID_SYSREF;
- }
-        case 766: break;
-        case 149: 
-        case 313: 
-        case 317: 
-        case 420: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("elementdecl name");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-	fEmbeddedPostState = YYINITIAL;
-	yybegin(ST_XML_ELEMENT_DECLARATION_CONTENT);
-	return XML_ELEMENT_DECL_NAME;
- }
-        case 767: break;
-        case 155: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("elementdecl close");//$NON-NLS-1$
-	if (Debug.debugTokenizer) {
-		if(fStateStack.peek()!=YYINITIAL)
-			System.out.println("end embedded region");//$NON-NLS-1$
-	}
-	yybegin(fStateStack.pop());
-	return XML_DECLARATION_CLOSE;
- }
-        case 768: break;
-        case 156: 
-        case 323: 
-        case 327: 
-        case 428: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("attlist name");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-	fEmbeddedPostState = YYINITIAL;
-	yybegin(ST_XML_ATTLIST_DECLARATION_CONTENT);
-	return XML_ATTLIST_DECL_NAME;
- }
-        case 769: break;
-        case 162: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("attlist close");//$NON-NLS-1$
-	if (Debug.debugTokenizer) {
-		if(fStateStack.peek()!=YYINITIAL)
-			System.out.println("end embedded region");//$NON-NLS-1$
-	}
-	yybegin(fStateStack.pop());
-	return XML_DECLARATION_CLOSE;
- }
-        case 770: break;
-        case 165: 
-        case 166: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nJSP comment text");//$NON-NLS-1$
-	return scanJSPCommentText();
- }
-        case 771: break;
-        case 175: 
-        case 179: 
-        case 180: 
-        case 181: 
-        case 184: 
-        case 185: 
-        case 343: 
-          { 
-	return XML_TAG_ATTRIBUTE_VALUE;
- }
-        case 772: break;
-        case 176: 
-          { 
-	if (Debug.debugTokenizer) {
-		System.out.println("begin embedded region: " + fEmbeddedHint+", genericTagOpen");//$NON-NLS-1$
-	}
-	int incomingState = yystate();
-	fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-	if(Debug.debugTokenizer)
-		dump("tag inside of JSP attribute value start");//$NON-NLS-1$
-	yybegin(ST_XML_TAG_NAME);
-	assembleEmbeddedContainer(XML_TAG_OPEN, new String[]{XML_TAG_CLOSE,XML_EMPTY_TAG_CLOSE});
-	if(yystate() != ST_ABORT_EMBEDDED)
-        yybegin(incomingState);
-	return PROXY_CONTEXT;
- }
-        case 773: break;
-        case 178: 
-          { 
-	return isJspTag() ? JSP_TAG_ATTRIBUTE_VALUE_SQUOTE : XML_TAG_ATTRIBUTE_VALUE_SQUOTE;
- }
-        case 774: break;
-        case 183: 
-          { 
-	return isJspTag()? JSP_TAG_ATTRIBUTE_VALUE_DQUOTE : XML_TAG_ATTRIBUTE_VALUE_DQUOTE;
- }
-        case 775: break;
-        case 188: 
-          { 
-	yybegin(ST_JSP_EL_DQUOTES);
-	return JSP_EL_DQUOTE;
- }
-        case 776: break;
-        case 189: 
-          { 
-	yybegin(ST_JSP_EL_SQUOTES);
-	return JSP_EL_SQUOTE;
- }
-        case 777: break;
-        case 191: 
-          { 
-	fELlevel--;
-	if(fELlevel == 0) {
-		yybegin(YYINITIAL);
-		return JSP_EL_CLOSE;
-	}
-	return JSP_EL_CONTENT;
- }
-        case 778: break;
-        case 198: 
-          { 
-	yybegin(ST_JSP_EL);
-	return JSP_EL_SQUOTE;
- }
-        case 779: break;
-        case 199: 
-          { 
-	yybegin(ST_JSP_EL);
-	return JSP_EL_DQUOTE;
- }
-        case 780: break;
-        case 202: 
-          { 
-	return isJspTag() ? JSP_TAG_ATTRIBUTE_VALUE_DQUOTE: XML_TAG_ATTRIBUTE_VALUE_DQUOTE;
- }
-        case 781: break;
-        case 204: 
-          { 
-	return JSP_EL_CLOSE;
- }
-        case 782: break;
-        case 210: 
-          { 
-	yybegin(ST_JSP_VBL_DQUOTES);
-	return JSP_VBL_DQUOTE;
- }
-        case 783: break;
-        case 211: 
-          { 
-	yybegin(ST_JSP_VBL_SQUOTES);
-	return JSP_VBL_SQUOTE;
- }
-        case 784: break;
-        case 213: 
-          { 
-	fELlevel--;
-	if(fELlevel == 0) {
-		yybegin(YYINITIAL);
-		return JSP_VBL_CLOSE;
-	}
-	return JSP_VBL_CONTENT;
- }
-        case 785: break;
-        case 220: 
-          { 
-	yybegin(ST_JSP_VBL);
-	return JSP_VBL_SQUOTE;
- }
-        case 786: break;
-        case 221: 
-          { 
-	yybegin(ST_JSP_VBL);
-	return JSP_VBL_DQUOTE;
- }
-        case 787: break;
-        case 225: 
-          { 
-	return JSP_VBL_CLOSE;
- }
-        case 788: break;
-        case 229: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nend tag open");//$NON-NLS-1$
-	fEmbeddedHint = XML_TAG_NAME;
-	fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-        yybegin(ST_XML_TAG_NAME);
-        return XML_END_TAG_OPEN;
- }
-        case 789: break;
-        case 230: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("\nprocessing instruction start");//$NON-NLS-1$
-	yybegin(ST_PI);
-        return XML_PI_OPEN;
- }
-        case 790: break;
-        case 231: 
-        case 319: 
-        case 329: 
-        case 349: 
-        case 354: 
-        case 358: 
-        case 361: 
-        case 364: 
-        case 366: 
-        case 370: 
-        case 374: 
-        case 377: 
-        case 380: 
-          { 
-	/* JSP scriptlet begun (anywhere)
-	 * A consequence of the start anywhere possibility is that the
-	 *  incoming state must be checked to see if it's erroneous
-	 *  due to the order of precedence generated
-	 */
-	// begin sanity checks
-	if(yystate() == ST_JSP_CONTENT) {
-		// at the beginning?!
-		yypushback(1);
-		return JSP_CONTENT;
-	}
-	else if(yystate() == ST_BLOCK_TAG_SCAN) {
-		yypushback(2);
-		return doBlockTagScan();
-	}
-	else if(yystate() == ST_XML_COMMENT) {
-		yypushback(2);
-		return scanXMLCommentText();
-	}
-	else if(yystate() == ST_JSP_COMMENT) {
-		yypushback(2);
-		return scanJSPCommentText();
-	}
-	// finished sanity checks
-	fStateStack.push(yystate());
-	if(fStateStack.peek()==YYINITIAL) {
-		// the simple case, just a regular scriptlet out in content
-		if(Debug.debugTokenizer)
-			dump("\nJSP scriptlet start");//$NON-NLS-1$
-		yybegin(ST_JSP_CONTENT);
-		return JSP_SCRIPTLET_OPEN;
-	}
-	else {
-		if (Debug.debugTokenizer) {
-			System.out.println("begin embedded region: " + fEmbeddedHint+", jspScriptletStart");//$NON-NLS-1$
-		}
-		if(Debug.debugTokenizer)
-			dump("JSP scriptlet start");//$NON-NLS-1$
-		if(yystate() == ST_XML_ATTRIBUTE_VALUE_DQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_DQUOTED;
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE_SQUOTED)
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_VALUE_SQUOTED;
-		else if(yystate() == ST_CDATA_TEXT) {
-			fEmbeddedPostState = ST_CDATA_TEXT;
-			fEmbeddedHint = XML_CDATA_TEXT;
-		}
-		yybegin(ST_JSP_CONTENT);
-		assembleEmbeddedContainer(JSP_SCRIPTLET_OPEN, JSP_CLOSE);
-		if(yystate() == ST_BLOCK_TAG_INTERNAL_SCAN) {
-			yybegin(ST_BLOCK_TAG_SCAN);
-			return BLOCK_TEXT;
-		}
-		// required help for successive embedded regions
-		if(yystate() == ST_XML_TAG_NAME) {
-			fEmbeddedHint = XML_TAG_NAME;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-		else if((yystate() == ST_XML_ATTRIBUTE_NAME || yystate() == ST_XML_EQUALS)) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_NAME;
-			fEmbeddedPostState = ST_XML_EQUALS;
-		}
-		else if(yystate() == ST_XML_ATTRIBUTE_VALUE) {
-			fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-			fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-		}
-        else if(yystate() == ST_JSP_ATTRIBUTE_VALUE) {
-            fEmbeddedHint = XML_TAG_ATTRIBUTE_VALUE;
-            fEmbeddedPostState = ST_XML_ATTRIBUTE_NAME;
-        }
-		
-		return PROXY_CONTEXT;
-	}
- }
-        case 791: break;
-        case 232: 
-          { 
-	fStateStack.push(yystate());
-	if(Debug.debugTokenizer)
-		dump("\ndeclaration start");//$NON-NLS-1$
-        yybegin(ST_XML_DECLARATION);
-	return XML_DECLARATION_OPEN;
- }
-        case 792: break;
-        case 245: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("processing instruction end");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-        yybegin(YYINITIAL);
-        return XML_PI_CLOSE;
- }
-        case 793: break;
-        case 249: 
-          { 
-		// ended with nothing inside
-		fEmbeddedHint = UNDEFINED;
-        yybegin(YYINITIAL);
-        return XML_PI_CLOSE;
- }
-        case 794: break;
-        case 250: 
-          { 
-	if(Debug.debugTokenizer)
-		dump("XML processing instruction end");//$NON-NLS-1$
-	fEmbeddedHint = UNDEFINED;
-        yybegin(YYINITIAL);
-        return XML_PI_CLOSE;
- }
-        case 795: break;
-        case 163: 
-        case 164: 
-          { 
-		return doBlockTagScan();
-	 }
-        case 796: break;
-        default: 
-          if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
-            yy_atEOF = true;
-            yy_do_eof();
-              return null;
-          } 
-          else {
-            yy_ScanError(YY_NO_MATCH);
-          }
-      }
-    }
-  }    
-
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceInitializer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceInitializer.java
deleted file mode 100644
index 09edd42..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceInitializer.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.preferences;
-
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.wst.sse.core.internal.encoding.CommonCharsetNames;
-import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames;
-import org.eclipse.wst.sse.core.internal.validate.ValidationMessage;
-
-/**
- * Sets default values for JSP Core preferences
- */
-public class JSPCorePreferenceInitializer extends AbstractPreferenceInitializer {
-
-	public void initializeDefaultPreferences() {
-		IEclipsePreferences node = new DefaultScope().getNode(JSPCorePlugin.getDefault().getBundle().getSymbolicName());
-
-		// compiler/validation preferences
-		node.putBoolean(JSPCorePreferenceNames.VALIDATE_FRAGMENTS, true);
-
-		// code generation preferences
-		node.put(CommonEncodingPreferenceNames.INPUT_CODESET, ""); //$NON-NLS-1$
-		String defaultEnc = "ISO-8859-1";//$NON-NLS-1$
-		String systemEnc = System.getProperty("file.encoding"); //$NON-NLS-1$
-		if (systemEnc != null) {
-			defaultEnc = CommonCharsetNames.getPreferredDefaultIanaName(systemEnc, "ISO-8859-1");//$NON-NLS-1$
-		}
-		node.put(CommonEncodingPreferenceNames.OUTPUT_CODESET, defaultEnc);
-		node.put(CommonEncodingPreferenceNames.END_OF_LINE_CODE, ""); //$NON-NLS-1$
-
-		// this could be made smarter by actually looking up the content
-		// type's valid extensions
-		node.put(JSPCorePreferenceNames.DEFAULT_EXTENSION, "jsp"); //$NON-NLS-1$
-
-		node.putInt(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_DUPLICATE_PREFIXES_DIFFERENT_URIS, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_DUPLICATE_PREFIXES_SAME_URIS, ValidationMessage.IGNORE);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_MISSING_PREFIX, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_MISSING_URI_OR_TAGDIR, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_UNRESOLVABLE_URI_OR_TAGDIR, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_PAGE_SUPERCLASS_NOT_FOUND, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_INCLUDE_NO_FILE_SPECIFIED, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_INCLUDE_FILE_NOT_FOUND, ValidationMessage.ERROR);
-
-		node.putInt(JSPCorePreferenceNames.VALIDATION_JAVA_LOCAL_VARIABLE_NEVER_USED, ValidationMessage.IGNORE);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_JAVA_ARGUMENT_IS_NEVER_USED, ValidationMessage.IGNORE);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_JAVA_NULL_LOCAL_VARIABLE_REFERENCE, ValidationMessage.IGNORE);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_JAVA_POTENTIAL_NULL_LOCAL_VARIABLE_REFERENCE, ValidationMessage.IGNORE);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_JAVA_UNUSED_IMPORT, ValidationMessage.IGNORE);
-
-		node.putInt(JSPCorePreferenceNames.VALIDATION_EL_SYNTAX, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_EL_LEXER, ValidationMessage.IGNORE);
-
-		node.putInt(JSPCorePreferenceNames.VALIDATION_ACTIONS_SEVERITY_MISSING_REQUIRED_ATTRIBUTE, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_ACTIONS_SEVERITY_UNKNOWN_ATTRIBUTE, ValidationMessage.WARNING);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_ACTIONS_SEVERITY_NON_EMPTY_INLINE_TAG, ValidationMessage.WARNING);
-
-		node.putInt(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TEI_VALIDATION_MESSAGE, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TEI_CLASS_NOT_FOUND, ValidationMessage.WARNING);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TEI_CLASS_NOT_INSTANTIATED, ValidationMessage.WARNING);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TEI_CLASS_RUNTIME_EXCEPTION, ValidationMessage.WARNING);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TAG_HANDLER_CLASS_NOT_FOUND, ValidationMessage.WARNING);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_TRANSLATION_USEBEAN_INVALID_ID, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_TRANSLATION_USBEAN_MISSING_TYPE_INFO, ValidationMessage.ERROR);
-		node.putInt(JSPCorePreferenceNames.VALIDATION_TRANSLATION_USEBEAN_AMBIGUOUS_TYPE_INFO, ValidationMessage.WARNING);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceNames.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceNames.java
deleted file mode 100644
index 651dbe8..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceNames.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.preferences;
-
-
-/**
- * Common preference keys used by JSP core
- */
-public class JSPCorePreferenceNames {
-	private JSPCorePreferenceNames() {
-		// empty private constructor so users cannot instantiate class
-	}
-
-	/**
-	 * The default extension to use when none is specified in the New JSP File
-	 * Wizard.
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 */
-	public static final String DEFAULT_EXTENSION = "defaultExtension"; //$NON-NLS-1$
-
-	/**
-	 * Indicates if JSP fragments should be compiled/validated. JSP fragments
-	 * will be validated when true.
-	 * <p>
-	 * Value is of type <code>Boolean</code>.
-	 * </p>
-	 */
-	public static final String VALIDATE_FRAGMENTS = "validateFragments";//$NON-NLS-1$
-
-	/**
-	 * Indicates that JSP validation will use per-project preferences
-	 * <p>
-	 * Value is of type <code>Boolean</code>.
-	 * </p>
-	 */
-	public static final String VALIDATION_USE_PROJECT_SETTINGS = "validation.use-project-settings";
-
-	/**
-	 * Validation preference keys
-	 */
-	public static final String VALIDATION_DIRECTIVE_TAGLIB_DUPLICATE_PREFIXES_DIFFERENT_URIS="validation.directive-taglib-duplicate-prefixes-different-uris";//$NON-NLS-1$
-	public static final String VALIDATION_DIRECTIVE_TAGLIB_DUPLICATE_PREFIXES_SAME_URIS="validation.directive-taglib-duplicate-prefixes-same-uris";//$NON-NLS-1$
-	public static final String VALIDATION_DIRECTIVE_TAGLIB_MISSING_PREFIX="validation.directive-taglib-missing-prefix";//$NON-NLS-1$
-	public static final String VALIDATION_DIRECTIVE_TAGLIB_MISSING_URI_OR_TAGDIR="validation.directive-taglib-missing-uri-or-tagdir";//$NON-NLS-1$
-	public static final String VALIDATION_DIRECTIVE_TAGLIB_UNRESOLVABLE_URI_OR_TAGDIR="validation.directive-taglib-unresolvable-uri-or-tagdir";//$NON-NLS-1$
-	public static final String VALIDATION_DIRECTIVE_PAGE_SUPERCLASS_NOT_FOUND="validation.directive-page-superclass-not-found";//$NON-NLS-1$
-	public static final String VALIDATION_DIRECTIVE_INCLUDE_NO_FILE_SPECIFIED="validation.directive-include-fragment-file-not-specified";//$NON-NLS-1$
-	public static final String VALIDATION_DIRECTIVE_INCLUDE_FILE_NOT_FOUND="validation.directive-include-fragment-file-not-found";//$NON-NLS-1$
-	
-	public static final String VALIDATION_JAVA_LOCAL_VARIABLE_NEVER_USED ="validation.java-local-variable-is-never-used";
-	public static final String VALIDATION_JAVA_ARGUMENT_IS_NEVER_USED  ="validation.java-";
-	public static final String VALIDATION_JAVA_NULL_LOCAL_VARIABLE_REFERENCE  ="validation.java-null-local-variable-reference";
-	public static final String VALIDATION_JAVA_POTENTIAL_NULL_LOCAL_VARIABLE_REFERENCE  ="validation.java-potential-null-local-variable-reference";
-	public static final String VALIDATION_JAVA_UNUSED_IMPORT  ="validation.java-unused-import";
-	
-	public static final String VALIDATION_EL_SYNTAX  ="validation.el-general-syntax";
-	public static final String VALIDATION_EL_LEXER  ="validation.el-lexical-failure";
-
-	public static final String VALIDATION_ACTIONS_SEVERITY_MISSING_REQUIRED_ATTRIBUTE = "validation.actions-missing-required-attribute";
-	public static final String VALIDATION_ACTIONS_SEVERITY_UNKNOWN_ATTRIBUTE = "validation.actions-unknown-attribute";
-	public static final String VALIDATION_ACTIONS_SEVERITY_NON_EMPTY_INLINE_TAG = "validation.actions-non-empty-inline-tag";
-	
-	public static final String VALIDATION_TRANSLATION_TEI_VALIDATION_MESSAGE = "validation.translation-tei-message";
-	public static final String VALIDATION_TRANSLATION_TEI_CLASS_NOT_FOUND = "validation.translation-tei-class-not-found";
-	public static final String VALIDATION_TRANSLATION_TEI_CLASS_NOT_INSTANTIATED = "validation.translation-tei-class-not-instantiated";
-	public static final String VALIDATION_TRANSLATION_TEI_CLASS_RUNTIME_EXCEPTION = "validation.translation-tei-class-runtime-exception";	
-	public static final String VALIDATION_TRANSLATION_TAG_HANDLER_CLASS_NOT_FOUND = "validation.translation-tag-class-not-found";
-	public static final String VALIDATION_TRANSLATION_USEBEAN_INVALID_ID= "validation.translation-usebean-invalid-id";
-	public static final String VALIDATION_TRANSLATION_USBEAN_MISSING_TYPE_INFO= "validation.translation-usebean-missing-type-info";
-	public static final String VALIDATION_TRANSLATION_USEBEAN_AMBIGUOUS_TYPE_INFO = "validation.translation-usebean-ambiguous-type-info";
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP11Namespace.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP11Namespace.java
deleted file mode 100644
index 43d0f75..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP11Namespace.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.provisional;
-
-
-/**
- * JSP 1.1 Namespace
- */
-public interface JSP11Namespace {
-
-	public static interface ElementName {
-		// Element names
-		public static final String SCRIPTLET = "jsp:scriptlet"; //$NON-NLS-1$
-		public static final String EXPRESSION = "jsp:expression"; //$NON-NLS-1$
-		public static final String DECLARATION = "jsp:declaration"; //$NON-NLS-1$
-		public static final String DIRECTIVE_PAGE = "jsp:directive.page"; //$NON-NLS-1$
-		public static final String DIRECTIVE_INCLUDE = "jsp:directive.include"; //$NON-NLS-1$
-		public static final String DIRECTIVE_TAGLIB = "jsp:directive.taglib"; //$NON-NLS-1$
-		public static final String USEBEAN = "jsp:useBean"; //$NON-NLS-1$
-		public static final String SETPROPERTY = "jsp:setProperty"; //$NON-NLS-1$
-		public static final String GETPROPERTY = "jsp:getProperty"; //$NON-NLS-1$
-		public static final String INCLUDE = "jsp:include"; //$NON-NLS-1$
-		public static final String FORWARD = "jsp:forward"; //$NON-NLS-1$
-		public static final String PLUGIN = "jsp:plugin"; //$NON-NLS-1$
-		public static final String PARAMS = "jsp:params"; //$NON-NLS-1$
-		public static final String FALLBACK = "jsp:fallback"; //$NON-NLS-1$
-		public static final String PARAM = "jsp:param"; //$NON-NLS-1$
-		public static final String ROOT = "jsp:root"; //$NON-NLS-1$
-		public static final String TEXT = "jsp:text"; //$NON-NLS-1$
-	}
-
-	public static final String JSP11_URI = ""; //$NON-NLS-1$
-	public static final String JSP_TAG_PREFIX = "jsp"; //$NON-NLS-1$
-	// attribute names
-	//   directive.page
-	public static final String ATTR_NAME_LANGUAGE = "language"; //$NON-NLS-1$
-	public static final String ATTR_NAME_EXTENDS = "extends"; //$NON-NLS-1$
-	public static final String ATTR_NAME_CONTENT_TYPE = "contentType"; //$NON-NLS-1$
-	public static final String ATTR_NAME_IMPORT = "import"; //$NON-NLS-1$
-	public static final String ATTR_NAME_SESSION = "session"; //$NON-NLS-1$
-	public static final String ATTR_NAME_BUFFER = "buffer"; //$NON-NLS-1$
-	public static final String ATTR_NAME_AUTOFLUSH = "autoFlush"; //$NON-NLS-1$
-	public static final String ATTR_NAME_IS_THREAD_SAFE = "isThreadSafe"; //$NON-NLS-1$
-	public static final String ATTR_NAME_INFO = "info"; //$NON-NLS-1$
-	public static final String ATTR_NAME_ERROR_PAGE = "errorPage"; //$NON-NLS-1$
-	public static final String ATTR_NAME_IS_ERROR_PAGE = "isErrorPage"; //$NON-NLS-1$
-	public static final String ATTR_NAME_PAGE_ENCODING = "pageEncoding"; //$NON-NLS-1$
-	//   directive.include
-	public static final String ATTR_NAME_FILE = "file"; //$NON-NLS-1$
-	//   directive.taglib
-	public static final String ATTR_NAME_URI = "uri"; //$NON-NLS-1$
-	public static final String ATTR_NAME_PREFIX = "prefix"; //$NON-NLS-1$
-	//   useBean
-	public static final String ATTR_NAME_ID = "id"; //$NON-NLS-1$
-	public static final String ATTR_NAME_SCOPE = "scope"; //$NON-NLS-1$
-	public static final String ATTR_NAME_CLASS = "class"; //$NON-NLS-1$
-	public static final String ATTR_NAME_BEAN_NAME = "beanName"; //$NON-NLS-1$
-	public static final String ATTR_NAME_TYPE = "type"; //$NON-NLS-1$
-	//   setProperty
-	public static final String ATTR_NAME_NAME = "name"; //$NON-NLS-1$
-	public static final String ATTR_NAME_PROPERTY = "property"; //$NON-NLS-1$
-	public static final String ATTR_NAME_VALUE = "value"; //$NON-NLS-1$
-	public static final String ATTR_NAME_PARAM = "param"; //$NON-NLS-1$
-	//   include
-	public static final String ATTR_NAME_PAGE = "page"; //$NON-NLS-1$
-	public static final String ATTR_NAME_FLUSH = "flush"; //$NON-NLS-1$
-	//   plugin
-	public static final String ATTR_NAME_CODE = "code"; //$NON-NLS-1$
-	public static final String ATTR_NAME_CODEBASE = "codebase"; //$NON-NLS-1$
-	public static final String ATTR_NAME_ALIGN = "align"; //$NON-NLS-1$
-	public static final String ATTR_NAME_ARCHIVE = "archive"; //$NON-NLS-1$
-	public static final String ATTR_NAME_HEIGHT = "height"; //$NON-NLS-1$
-	public static final String ATTR_NAME_HSPACE = "hspace"; //$NON-NLS-1$
-	public static final String ATTR_NAME_JREVERSION = "jreversion"; //$NON-NLS-1$
-	public static final String ATTR_NAME_VSPACE = "vspace"; //$NON-NLS-1$
-	public static final String ATTR_NAME_WIDTH = "width"; //$NON-NLS-1$
-	public static final String ATTR_NAME_NSPLUGINURL = "nspluginurl"; //$NON-NLS-1$
-	public static final String ATTR_NAME_IEPLUGINURL = "iepluginurl"; //$NON-NLS-1$
-	//   root
-	public static final String ATTR_NAME_XMLNS_JSP = "xmlns:jsp"; //$NON-NLS-1$
-	public static final String ATTR_NAME_VERSION = "version"; //$NON-NLS-1$
-	// attribute values
-	public static final String ATTR_VALUE_TRUE = "true"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_FALSE = "false"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_JAVA = "java"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_CT_DEFAULT = "text/html; charset=ISO-8859-1";//D195366 //$NON-NLS-1$
-	public static final String ATTR_VALUE_BUFSIZ_DEFAULT = "8kb"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_PAGE = "page"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_SESSION = "session"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_REQUEST = "request"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_APPLICATION = "application"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_BEAN = "bean"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_APPLET = "applet"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_TOP = "top"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_MIDDLE = "middle"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_BOTTOM = "bottom"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_LEFT = "left"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_RIGHT = "right"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_JVER11 = "1.1"; //$NON-NLS-1$
-	public static final String ATTR_VALUE_XMLNS_JSP = "http://java.sun.com/JSP/Page"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP12Namespace.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP12Namespace.java
deleted file mode 100644
index 89f76e8..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP12Namespace.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.provisional;
-
-/**
- * Names for JSP 1.2 spec.
- * Currently, it is just the same as JSP11Namespace in org.eclipse.jst.jsp.core.
- */
-public interface JSP12Namespace extends JSP11Namespace {
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP20Namespace.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP20Namespace.java
deleted file mode 100644
index 3e1fde3..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/JSP20Namespace.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.provisional;
-
-/**
- * New names for JSP 2.0 spec.
- */
-
-public interface JSP20Namespace extends org.eclipse.wst.html.core.internal.contentmodel.JSP20Namespace {
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/contenttype/ContentTypeIdForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/contenttype/ContentTypeIdForJSP.java
deleted file mode 100644
index 0f246bc..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/contenttype/ContentTypeIdForJSP.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.internal.provisional.contenttype;
-
-/**
- * This class, with its one field, is a convience to provide compile-time
- * safety when refering to a contentType ID. The value of the contenttype id
- * field must match what is specified in plugin.xml file.
- */
-
-public class ContentTypeIdForJSP {
-	/**
-	 * The value of the contenttype id field must match what is specified in
-	 * plugin.xml file. Note: this value is intentially set with default
-	 * protected method so it will not be inlined.
-	 */
-	public final static String ContentTypeID_JSP = getConstantString();
-	/**
-	 * The value of the contenttype id field must match what is specified in
-	 * plugin.xml file. Note: this value is intentially set with default
-	 * protected method so it will not be inlined.
-	 */
-	public final static String ContentTypeID_JSPFRAGMENT = getFragmentConstantString();
-
-	/**
-	 * The value of the contenttype id field must match what is specified in
-	 * plugin.xml file. Note: this value is intentially set with default
-	 * protected method so it will not be inlined.
-	 */
-	public final static String ContentTypeID_JSPTAG = getTagConstantString();
-
-	/**
-	 * Don't allow instantiation.
-	 */
-	private ContentTypeIdForJSP() {
-		super();
-	}
-
-	static String getConstantString() {
-		return "org.eclipse.jst.jsp.core.jspsource"; //$NON-NLS-1$
-	}
-	
-	static String getFragmentConstantString() {
-		return "org.eclipse.jst.jsp.core.jspfragmentsource"; //$NON-NLS-1$
-	}
-	
-	static String getTagConstantString() {
-		return "org.eclipse.jst.jsp.core.tagsource"; //$NON-NLS-1$
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/contenttype/IContentDescriptionForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/contenttype/IContentDescriptionForJSP.java
deleted file mode 100644
index 393dd10..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/contenttype/IContentDescriptionForJSP.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.provisional.contenttype;
-
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.wst.sse.core.internal.encoding.ICodedResourcePlugin;
-
-
-public interface IContentDescriptionForJSP {
-	/**
-	 * Extra properties as part of ContentDescription, if the content is JSP.
-	 */
-	public final static QualifiedName CONTENT_TYPE_ATTRIBUTE = new QualifiedName(ICodedResourcePlugin.ID, "contentTypeAttribute"); //$NON-NLS-1$
-	public final static QualifiedName LANGUAGE_ATTRIBUTE = new QualifiedName(ICodedResourcePlugin.ID, "languageAttribute"); //$NON-NLS-1$
-	public final static QualifiedName CONTENT_FAMILY_ATTRIBUTE = new QualifiedName(ICodedResourcePlugin.ID, "contentFamilyAttribute"); //$NON-NLS-1$;
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/text/IJSPPartitionTypes.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/text/IJSPPartitionTypes.java
deleted file mode 100644
index 49cc31d..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/text/IJSPPartitionTypes.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.provisional.text;
-
-
-/**
- * This interface is not intended to be implemented.
- * It defines the partition types for JSP.
- * Clients should reference the partition type Strings defined here directly.
- * 
- * @deprecated use org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitions
- */
-public interface IJSPPartitionTypes {
-
-	String JSP_DEFAULT = "org.eclipse.jst.jsp.DEFAULT_JSP"; //$NON-NLS-1$
-	String JSP_COMMENT = "org.eclipse.jst.jsp.JSP_COMMENT"; //$NON-NLS-1$
-	
-	String JSP_SCRIPT_PREFIX = "org.eclipse.jst.jsp.SCRIPT."; //$NON-NLS-1$
-	String JSP_CONTENT_DELIMITER = JSP_SCRIPT_PREFIX + "DELIMITER"; //$NON-NLS-1$
-	String JSP_CONTENT_JAVA = JSP_SCRIPT_PREFIX + "JAVA"; //$NON-NLS-1$
-	String JSP_CONTENT_JAVASCRIPT = JSP_SCRIPT_PREFIX + "JAVASCRIPT"; //$NON-NLS-1$
-	String JSP_DEFAULT_EL = JSP_SCRIPT_PREFIX + "JSP_EL"; //$NON-NLS-1$
-	String JSP_DEFAULT_EL2 = JSP_SCRIPT_PREFIX + "JSP_EL2"; //$NON-NLS-1$
-	
-	String JSP_DIRECTIVE = "org.eclipse.jst.jsp.JSP_DIRECTIVE"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/regions/DOMJSPRegionContexts.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/regions/DOMJSPRegionContexts.java
deleted file mode 100644
index 3387e1f..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/regions/DOMJSPRegionContexts.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     Frits Jalvingh - contributions for bug 150794
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.regions;
-
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-
-/**
- *
- */
-
-public interface DOMJSPRegionContexts extends DOMRegionContext {
-	public static final String JSP_CLOSE = "JSP_CLOSE"; //$NON-NLS-1$
-	public static final String JSP_COMMENT_CLOSE = "JSP_COMMENT_CLOSE"; //$NON-NLS-1$
-
-	public static final String JSP_COMMENT_OPEN = "JSP_COMMENT_OPEN"; //$NON-NLS-1$
-	public static final String JSP_COMMENT_TEXT = "JSP_COMMENT_TEXT"; //$NON-NLS-1$
-
-	public static final String JSP_CONTENT = "JSP_CONTENT"; //$NON-NLS-1$
-	public static final String JSP_DECLARATION_OPEN = "JSP_DECLARATION_OPEN"; //$NON-NLS-1$
-	public static final String JSP_DIRECTIVE_CLOSE = "JSP_DIRECTIVE_CLOSE"; //$NON-NLS-1$
-	public static final String JSP_DIRECTIVE_NAME = "JSP_DIRECTIVE_NAME"; //$NON-NLS-1$
-
-	public static final String JSP_DIRECTIVE_OPEN = "JSP_DIRECTIVE_OPEN"; //$NON-NLS-1$
-	public static final String JSP_EL_CLOSE = "JSP_EL_CLOSE"; //$NON-NLS-1$
-	public static final String JSP_EL_CONTENT = "JSP_EL_CONTENT"; //$NON-NLS-1$
-	public static final String JSP_EL_DQUOTE = "JSP_EL_DQUOTE"; //$NON-NLS-1$
-
-	public static final String JSP_EL_OPEN = "JSP_EL_OPEN"; //$NON-NLS-1$
-	public static final String JSP_EL_QUOTED_CONTENT = "JSP_EL_QUOTED_CONTENT"; //$NON-NLS-1$
-	public static final String JSP_EL_SQUOTE = "JSP_EL_SQUOTE"; //$NON-NLS-1$
-	public static final String JSP_EXPRESSION_OPEN = "JSP_EXPRESSION_OPEN"; //$NON-NLS-1$
-
-	public static final String JSP_ROOT_TAG_NAME = "JSP_ROOT_TAG_NAME"; //$NON-NLS-1$
-
-	public static final String JSP_SCRIPTLET_OPEN = "JSP_SCRIPTLET_OPEN"; //$NON-NLS-1$
-	public static final String JSP_VBL_CLOSE = "JSP_VBL_CLOSE"; //$NON-NLS-1$
-	public static final String JSP_VBL_CONTENT = "JSP_VBL_CONTENT"; //$NON-NLS-1$
-	public static final String JSP_VBL_DQUOTE = "JSP_VBL_DQUOTE"; //$NON-NLS-1$
-	public static final String JSP_VBL_OPEN = "JSP_VBL_OPEN"; //$NON-NLS-1$
-	public static final String JSP_VBL_QUOTED_CONTENT = "JSP_VBL_QUOTED_CONTENT"; //$NON-NLS-1$
-	public static final String JSP_VBL_SQUOTE = "JSP_VBL_SQUOTE"; //$NON-NLS-1$
-
-	/** Non-taglib XML tag, needing single escape unquoting for embedded expressions */
-	public static final String XML_TAG_ATTRIBUTE_VALUE_DQUOTE = "XML_TAG_ATTRIBUTE_VALUE_DQUOTE"; //$NON-NLS-1$
-	public static final String XML_TAG_ATTRIBUTE_VALUE_SQUOTE = "XML_TAG_ATTRIBUTE_VALUE_SQUOTE"; //$NON-NLS-1$
-
-	/** Taglib tag attribute with double quote, needing 'double escaping' */
-	public static final String JSP_TAG_ATTRIBUTE_VALUE_DQUOTE = "JSP_TAG_ATTRIBUTE_VALUE_DQUOTE"; //$NON-NLS-1$
-	/** Taglib tag attribute with single quote, needing 'double escaping' */
-	public static final String JSP_TAG_ATTRIBUTE_VALUE_SQUOTE = "JSP_TAG_ATTRIBUTE_VALUE_SQUOTE"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibClassLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibClassLoader.java
deleted file mode 100644
index b8706cd..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibClassLoader.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.taglib;
-
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jst.jsp.core.internal.Logger;
-
-
-
-/**
- * Custom classloader which allows you to add source directories (folders
- * containing .class files) and jars to the classpath.
- * 
- * @author pavery
- */
-public class TaglibClassLoader extends ClassLoader {
-
-	// for debugging
-	private static final boolean DEBUG;
-	static {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/taglibclassloader"); //$NON-NLS-1$
-		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	private List jarsList = new ArrayList();
-	private List dirsList = new ArrayList();
-	private List usedJars = new ArrayList();
-	private List usedDirs = new ArrayList();
-
-	private Map failedClasses = new HashMap(); // CL: added to optimize
-													// failed loading
-
-	// private List loadedClassFilenames = new ArrayList();
-
-	public TaglibClassLoader(ClassLoader parentLoader) {
-		super(parentLoader);
-	}
-
-	/**
-	 * Adds a new jar to classpath.
-	 * 
-	 * @param filename -
-	 *            full path to the jar file
-	 */
-	public void addJar(String filename) {
-		if (DEBUG)
-			System.out.println("trying to add: [" + filename + "] to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
-		// don't add the same entry twice, or search times will get even worse
-		if (!jarsList.contains(filename)) {
-			jarsList.add(filename);
-			failedClasses = new HashMap();
-			if (DEBUG)
-				System.out.println(" + [" + filename + "] added to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	/**
-	 * Removes a jar from the classpath.
-	 * 
-	 * @param filename -
-	 *            full path to the jar file
-	 */
-	public void removeJar(String filename) {
-		jarsList.remove(filename);
-		failedClasses = new HashMap();
-		if (DEBUG)
-			System.out.println("removed: [" + filename + "] from classpath"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void addDirectory(String dirPath) {
-		if (!dirsList.contains(dirPath)) {
-			dirsList.add(dirPath);
-			failedClasses = new HashMap();
-			if (DEBUG)
-				System.out.println("added: [" + dirPath + "] to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	/**
-	 * Removes a directory from the classpath.
-	 * 
-	 * @param dirPath -
-	 *            full path of the directory
-	 */
-	public void removeDirectory(String dirPath) {
-		dirsList.remove(dirPath);
-		failedClasses = new HashMap();
-		if (DEBUG)
-			System.out.println("removed: [" + dirPath + "] from classpath"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Returns the list of JARs on this loader's classpath that contain
-	 * classes that have been loaded.
-	 * 
-	 * @return List - the list of JARs
-	 */
-	public List getJarsInUse() {
-		return usedJars;
-	}
-
-	/**
-	 * Returns a list of directories on this loader's classpath that contain
-	 * classes that have been loaded.
-	 * 
-	 * @return List - the list of directories (fully-qualified filename
-	 *         Strings)
-	 */
-	public List getDirectoriesInUse() {
-		return usedDirs;
-	}
-	
-	Map getFailures() {
-		return failedClasses;
-	}
-
-	/**
-	 * Returns a list of filenames for loose classes that have been loaded out
-	 * of directories.
-	 * 
-	 * @return List - the list of class filenames
-	 */
-	// public List getClassFilenamesFromDirectories() {
-	// return loadedClassFilenames;
-	// }
-	/**
-	 * Searches for the given class name on the defined classpath -
-	 * directories are checked before JARs.
-	 * 
-	 * @param className -
-	 *            the name of the class to find
-	 * @return Class - the loaded class
-	 * @throws ClassNotFoundException
-	 */
-	protected synchronized Class findClass(String className) throws ClassNotFoundException {
-		Class oldClass = findLoadedClass(className);
-		if (oldClass != null) {
-			if (DEBUG)
-				System.out.println(">> TaglibClassLoader " + this + " returning existing class: " + className); //$NON-NLS-1$ //$NON-NLS-2$
-			return oldClass;
-		}
-		if (failedClasses.containsKey(className)) {
-			if (DEBUG)
-				System.out.println(">> TaglibClassLoader " + this + " known missing class: " + className); //$NON-NLS-1$ //$NON-NLS-2$
-			throw new ClassNotFoundException();
-		}
-
-		if (DEBUG)
-			System.out.println(">> TaglibClassLoader " + this + " finding class: " + className); //$NON-NLS-1$ //$NON-NLS-2$
-
-		Class newClass = null;
-		JarFile jarfile = null;
-		JarEntry entry = null;
-
-		// get the correct name of the actual .class file to search for
-		String fileName = calculateClassFilename(className);
-		InputStream stream = null;
-		try {
-			// first try searching the classpath directories
-			Iterator dirs = dirsList.iterator();
-			File f;
-			String dirName;
-			String fileToFind = ""; //$NON-NLS-1$
-			while (dirs.hasNext()) {
-				dirName = (String) dirs.next();
-				fileToFind = dirName + "/" + fileName; //$NON-NLS-1$
-
-				f = new File(fileToFind);
-				if (f.exists()) {
-					stream = new FileInputStream(f);
-					usedDirs.add(dirName);
-					// loadedClassFilenames.add(fileToFind);
-					if (DEBUG)
-						System.out.println(">> added file from dir: " + dirName + "/" + fileName); //$NON-NLS-1$ //$NON-NLS-2$
-					break;
-
-				}
-			}
-
-			if (stream != null) {
-				// found a class from a directory
-				ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
-				byte[] buffer = new byte[2048];
-				while (stream.available() > 0) {
-					int amountRead = stream.read(buffer);
-					if(amountRead > 0) {
-						byteStream.write(buffer, 0, amountRead);
-					}
-				}
-
-				byte[] byteArray = byteStream.toByteArray();
-				try {
-					if (DEBUG)
-						System.out.println(">> defining newClass:" + className); //$NON-NLS-1$
-					newClass = defineClass(className, byteArray, 0, byteArray.length);
-					resolveClass(newClass);
-				}
-				catch (Throwable t) {
-					Logger.logException("Error loading TEI class " + className, t);
-
-					// j9 can give ClassCircularityError
-					// parent should already have the class then
-					// try parent loader
-					try {
-						Class c = getParent().loadClass(className);
-						if (DEBUG)
-							System.out.println(">> loaded: " + className + " with: " + getParent()); //$NON-NLS-1$ //$NON-NLS-2$
-						return c;
-					}
-					catch (ClassNotFoundException cnf) {
-						if (DEBUG)
-							cnf.printStackTrace();
-					}
-				}
-				stream.close();
-			}
-
-			if (stream == null) {
-				// still haven't found the class, so now try searching the
-				// jars
-				// search each of the jars until we find an entry matching the
-				// classname
-				Iterator jars = jarsList.iterator();
-				String jarName;
-				while (jars.hasNext()) {
-					jarName = (String) jars.next();
-
-					// make sure the file exists or "new JarFile()" will throw
-					// an exception
-					f = new File(jarName);
-					if (!f.exists()) {
-						continue;
-					}
-					try {
-						jarfile = new JarFile(jarName);
-					}
-					catch (IOException e) {
-						if (DEBUG)
-							Logger.logException("bad jar file", e); //$NON-NLS-1$
-					}
-					if (jarfile == null) {
-						continue;
-					}
-
-					entry = jarfile.getJarEntry(fileName);
-
-					if (DEBUG)
-						System.out.println("looking for filename: " + fileName + " in: " + jarfile.getName()); //$NON-NLS-1$ //$NON-NLS-2$
-					if (entry != null) {
-						if (DEBUG)
-							System.out.println("found the entry: " + entry + " for filename: " + fileName); //$NON-NLS-1$ //$NON-NLS-2$
-						// found the class
-						if (!usedJars.contains(jarName)) {
-							// add the jar to the list of in-use jars
-							usedJars.add(jarName);
-						}
-						break;
-					}
-					jarfile.close();
-				}
-
-				if (entry != null) {
-					// we've found an entry for the desired class
-					stream = jarfile.getInputStream(entry);
-					ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
-					long byteLength = entry.getSize();
-					long totalBytesRead = 0;
-					int bytesRead;
-					byte[] byteBuffer = new byte[10000];
-					while (totalBytesRead < byteLength) {
-						bytesRead = stream.read(byteBuffer);
-						if (bytesRead == -1) {
-							break;
-						}
-						totalBytesRead = totalBytesRead + bytesRead;
-						byteStream.write(byteBuffer, 0, bytesRead);
-					}
-
-					byte[] byteArray = byteStream.toByteArray();
-					try {
-						if (DEBUG)
-							System.out.println(">> defining newClass:" + className); //$NON-NLS-1$
-						// define the class from the byte array
-						newClass = defineClass(className, byteArray, 0, byteArray.length);
-						resolveClass(newClass);
-					}
-					catch (Throwable t) {
-						Logger.logException("Error loading TEI class " + className, t);
-						// j9 can give ClassCircularityError
-						// parent should already have the class then
-
-						// try parent
-						try {
-							Class c = getParent().loadClass(className);
-							if (DEBUG)
-								System.out.println(">> loaded: " + className + " with: " + getParent()); //$NON-NLS-1$ //$NON-NLS-2$
-							return c;
-						}
-						catch (ClassNotFoundException cnf) {
-							if (DEBUG)
-								cnf.printStackTrace();
-							failedClasses.put(className, cnf);
-						}
-					}
-					stream.close();
-					jarfile.close();
-				}
-			}
-		}
-		catch (Throwable t) {
-			failedClasses.put(className, t);
-			return null;
-		}
-		finally {
-			try {
-				if (stream != null) {
-					stream.close();
-				}
-				if (jarfile != null) {
-					jarfile.close();
-				}
-			}
-			catch (IOException ioe) {
-				// ioe.printStackTrace();
-				// just trying to close down anyway - ignore
-			}
-		}
-
-		if (newClass != null) {
-			if (DEBUG)
-				System.out.println(">> loaded: " + newClass + " with: " + this); //$NON-NLS-1$ //$NON-NLS-2$
-			return newClass;
-		}
-
-//		failedClasses.add(className);
-		throw new ClassNotFoundException();
-	}
-
-	/**
-	 * Replaces '.' in the classname with '/' and appends '.class' if needed.
-	 * 
-	 * @return String - the properly-formed class name
-	 */
-	private String calculateClassFilename(String name) {
-		StringBuffer buffer = new StringBuffer(name.replace('.', '/'));
-		if (!name.endsWith(".class")) { //$NON-NLS-1$
-			buffer.append(".class"); //$NON-NLS-1$
-		}
-		return buffer.toString();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelper.java
deleted file mode 100644
index 8064e08..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelper.java
+++ /dev/null
@@ -1,896 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Thomas de Grenier de Latour - 245044 - Incomplete classpath when validating JSP tags 
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.taglib;
-
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.jsp.tagext.TagAttributeInfo;
-import javax.servlet.jsp.tagext.TagData;
-import javax.servlet.jsp.tagext.TagExtraInfo;
-import javax.servlet.jsp.tagext.TagInfo;
-import javax.servlet.jsp.tagext.TagLibraryInfo;
-import javax.servlet.jsp.tagext.ValidationMessage;
-import javax.servlet.jsp.tagext.VariableInfo;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jdt.core.IClasspathContainer;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TaglibTracker;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDAttributeDeclaration;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDVariable;
-import org.eclipse.jst.jsp.core.internal.java.IJSPProblem;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil;
-import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMNodeWrapper;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * This class helps find TaglibVariables in a JSP file.
- * 
- * @author pavery
- */
-public class TaglibHelper {
-
-	// for debugging
-	private static final boolean DEBUG;
-	static {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/taglibvars"); //$NON-NLS-1$
-		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	private IProject fProject = null;
-	private TaglibClassLoader fLoader = null;
-
-	private Set fProjectEntries = null;
-	private Map fTranslationProblems = null;
-	private Set fContainerEntries = null;
-	private IJavaProject fJavaProject;
-
-	public TaglibHelper(IProject project) {
-		setProject(project);
-		fProjectEntries = new HashSet();
-		fContainerEntries = new HashSet();
-		fTranslationProblems = new HashMap();
-	}
-
-	/**
-	 * @param tagToAdd
-	 *            is the name of the tag whose variables we want
-	 * @param structuredDoc
-	 *            is the IStructuredDocument where the tag is found
-	 * @param customTag
-	 *            is the IStructuredDocumentRegion opening tag for the custom
-	 *            tag
-	 */
-	public TaglibVariable[] getTaglibVariables(String tagToAdd, IStructuredDocument structuredDoc, ITextRegionCollection customTag) {
-
-		List results = new ArrayList();
-		List problems = new ArrayList();
-		ModelQuery mq = getModelQuery(structuredDoc);
-		if (mq != null) {
-			TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(structuredDoc);
-
-			// TaglibSupport support = ((TaglibModelQuery)
-			// mq).getTaglibSupport();
-			if (mgr == null)
-				return new TaglibVariable[0];
-
-			List trackers = mgr.getCMDocumentTrackers(-1);
-			Iterator taglibs = trackers.iterator();
-
-			// TaglibSupport support = ((TaglibModelQuery)
-			// mq).getTaglibSupport();
-			// if (support == null)
-			// return new TaglibVariable[0];
-			//
-			// Iterator taglibs =
-			// support.getCMDocuments(customTag.getStartOffset()).iterator();
-			CMDocument doc = null;
-			CMNamedNodeMap elements = null;
-			while (taglibs.hasNext()) {
-				doc = (CMDocument) taglibs.next();
-				CMNode node = null;
-				if ((elements = doc.getElements()) != null && (node = elements.getNamedItem(tagToAdd)) != null && node.getNodeType() == CMNode.ELEMENT_DECLARATION) {
-
-					if (node instanceof CMNodeWrapper) {
-						node = ((CMNodeWrapper) node).getOriginNode();
-					}
-					TLDElementDeclaration tldElementDecl = (TLDElementDeclaration) node;
-
-					/*
-					 * Although clearly not the right place to add validation
-					 * design-wise, this is the first time we have the
-					 * necessary information to validate the tag class.
-					 */
-					validateTagClass(structuredDoc, customTag, tldElementDecl, problems);
-
-					// 1.2+ taglib style
-					addVariables(results, node, customTag);
-
-					// for 1.1 need more info from taglib tracker
-					if (doc instanceof TaglibTracker) {
-						String uri = ((TaglibTracker) doc).getURI();
-						String prefix = ((TaglibTracker) doc).getPrefix();
-						// only for 1.1 taglibs
-						addTEIVariables(structuredDoc, customTag, results, tldElementDecl, prefix, uri, problems);
-					}
-				}
-			}
-		}
-
-		IPath location = TaglibController.getLocation(structuredDoc);
-		if (location != null) {
-			fTranslationProblems.put(location, problems);
-		}
-
-		return (TaglibVariable[]) results.toArray(new TaglibVariable[results.size()]);
-	}
-
-	/**
-	 * Adds 1.2 style TaglibVariables to the results list.
-	 * 
-	 * @param results
-	 *            list where the <code>TaglibVariable</code> s are added
-	 * @param node
-	 */
-	private void addVariables(List results, CMNode node, ITextRegionCollection customTag) {
-
-		List list = ((TLDElementDeclaration) node).getVariables();
-		Iterator it = list.iterator();
-		while (it.hasNext()) {
-			TLDVariable var = (TLDVariable) it.next();
-			if (!var.getDeclare())
-				continue;
-
-			String varName = var.getNameGiven();
-			if (varName == null) {
-				// 2.0
-				varName = var.getAlias();
-			}
-			if (varName == null) {
-				String attrName = var.getNameFromAttribute();
-				/*
-				 * Iterate through the document region to find the
-				 * corresponding attribute name, and then use its value
-				 */
-				ITextRegionList regions = customTag.getRegions();
-				boolean attrNameFound = false;
-				for (int i = 2; i < regions.size(); i++) {
-					ITextRegion region = regions.get(i);
-					if (DOMRegionContext.XML_TAG_ATTRIBUTE_NAME.equals(region.getType())) {
-						attrNameFound = attrName.equals(customTag.getText(region));
-					}
-					if (attrNameFound && DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE.equals(region.getType())) {
-						varName = StringUtils.strip(customTag.getText(region));
-					}
-				}
-			}
-			if (varName != null) {
-				String varClass = "java.lang.String"; // the default
-														// class...//$NON-NLS-1$
-				if (var.getVariableClass() != null) {
-					varClass = var.getVariableClass();
-				}
-				results.add(new TaglibVariable(varClass, varName, var.getScope(), var.getDescription()));
-			}
-		}
-	}
-
-	/**
-	 * Adds 1.1 style TaglibVariables (defined in a TagExtraInfo class) to the
-	 * results list. Also reports problems with the tag and tei classes in
-	 * fTranslatorProblems.
-	 * 
-	 * @param customTag
-	 * @param results
-	 *            list where the <code>TaglibVariable</code> s are added
-	 * @param decl
-	 *            TLDElementDeclaration for the custom tag
-	 * @param prefix
-	 *            custom tag prefix
-	 * @param uri
-	 *            URI where the tld can be found
-	 */
-	private void addTEIVariables(IStructuredDocument document, ITextRegionCollection customTag, List results, TLDElementDeclaration decl, String prefix, String uri, List problems) {
-		String teiClassname = decl.getTeiclass();
-		if (teiClassname == null || teiClassname.length() == 0 || fJavaProject == null)
-			return;
-
-		TaglibClassLoader loader = getClassloader();
-
-		Class teiClass = null;
-		try {
-			/*
-			 * JDT could tell us about it, but loading and calling it would
-			 * still take time
-			 */
-			teiClass = Class.forName(teiClassname, true, loader);
-			if (teiClass != null) {
-				Object teiObject = teiClass.newInstance();
-				if (TagExtraInfo.class.isInstance(teiObject)) {
-					TagExtraInfo tei = (TagExtraInfo) teiObject;
-					Hashtable tagDataTable = extractTagData(customTag);
-					TagInfo info = getTagInfo(decl, tei, prefix, uri);
-					if (info != null) {
-						tei.setTagInfo(info);
-
-						// add to results
-						TagData td = new TagData(tagDataTable);
-
-						VariableInfo[] vInfos = tei.getVariableInfo(td);
-						if (vInfos != null) {
-							for (int i = 0; i < vInfos.length; i++) {
-								results.add(new TaglibVariable(vInfos[i].getClassName(), vInfos[i].getVarName(), vInfos[i].getScope(), decl.getDescription()));
-							}
-						}
-
-						ValidationMessage[] messages = tei.validate(td);
-						if (messages != null && messages.length > 0) {
-							for (int i = 0; i < messages.length; i++) {
-								Object createdProblem = createValidationMessageProblem(document, customTag, messages[i].getMessage());
-								if (createdProblem != null) {
-									problems.add(createdProblem);
-								}
-							}
-						}
-					}
-				}
-				else {
-					Object createdProblem = createJSPProblem(document, customTag, IJSPProblem.TEIClassMisc, JSPCoreMessages.TaglibHelper_2, teiClassname, true);
-					if (createdProblem != null) {
-						problems.add(createdProblem);
-					}
-					// this is 3rd party code, need to catch all exceptions
-					if (DEBUG) {
-						Logger.log(Logger.WARNING, teiClassname + " is not a subclass of TaxExtraInfo"); //$NON-NLS-1$ 
-					}
-				}
-			}
-		}
-		catch (ClassNotFoundException e) {
-			Object createdProblem = createJSPProblem(document, customTag, IJSPProblem.TEIClassNotFound, JSPCoreMessages.TaglibHelper_0, teiClassname, true);
-			if (createdProblem != null) {
-				problems.add(createdProblem);
-			}
-			// TEI class wasn't on build path
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		catch (InstantiationException e) {
-			Object createdProblem = createJSPProblem(document, customTag, IJSPProblem.TEIClassNotInstantiated, JSPCoreMessages.TaglibHelper_1, teiClassname, true);
-			if (createdProblem != null) {
-				problems.add(createdProblem);
-			}
-			// TEI class couldn't be instantiated
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		catch (IllegalAccessException e) {
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		// catch (ClassCastException e) {
-		// // TEI class wasn't really a subclass of TagExtraInfo
-		// if (DEBUG)
-		// logException(teiClassname, e);
-		// }
-		catch (Exception e) {
-			Object createdProblem = createJSPProblem(document, customTag, IJSPProblem.TEIClassMisc, JSPCoreMessages.TaglibHelper_2, teiClassname, true);
-			if (createdProblem != null) {
-				problems.add(createdProblem);
-			}
-			// this is 3rd party code, need to catch all exceptions
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		catch (Error e) {
-			// this is 3rd party code, need to catch all errors
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		finally {
-			// Thread.currentThread().setContextClassLoader(oldLoader);
-		}
-	}
-
-	/**
-	 * @param customTag
-	 * @param teiClass
-	 * @return
-	 */
-	private Object createJSPProblem(final IStructuredDocument document, final ITextRegionCollection customTag, final int problemID, final String messageKey, final String argument, boolean preferVars) {
-		final String tagname = customTag.getText(customTag.getRegions().get(1));
-
-		final int start;
-		if (customTag.getNumberOfRegions() > 1) {
-			start = customTag.getStartOffset(customTag.getRegions().get(1));
-		}
-		else {
-			start = customTag.getStartOffset();
-		}
-
-		final int end;
-		if (customTag.getNumberOfRegions() > 1) {
-			end = customTag.getTextEndOffset(customTag.getRegions().get(1)) - 1;
-		}
-		else {
-			end = customTag.getTextEndOffset() - 1;
-		}
-
-		final int line = document.getLineOfOffset(start);
-
-		final char[] name;
-		IPath location = TaglibController.getLocation(document);
-		if (location == null) {
-			name = new char[0];
-		}
-		else {
-			name = location.toString().toCharArray();
-		}
-
-		/*
-		 * Note: these problems would result in translation errors on the
-		 * server, so the severity is not meant to be controllable
-		 */
-		return new IJSPProblem() {
-			public void setSourceStart(int sourceStart) {
-			}
-
-			public void setSourceLineNumber(int lineNumber) {
-			}
-
-			public void setSourceEnd(int sourceEnd) {
-			}
-
-			public boolean isWarning() {
-				return false;
-			}
-
-			public boolean isError() {
-				return true;
-			}
-
-			public int getSourceStart() {
-				return start;
-			}
-
-			public int getSourceLineNumber() {
-				return line;
-			}
-
-			public int getSourceEnd() {
-				return end;
-			}
-
-			public char[] getOriginatingFileName() {
-				return name;
-			}
-
-			public String getMessage() {
-				return MessageFormat.format(messageKey, new String[]{tagname, argument});
-			}
-
-			public int getID() {
-				return problemID;
-			}
-
-			public String[] getArguments() {
-				return new String[0];
-			}
-
-			public int getEID() {
-				return problemID;
-			}
-		};
-	}
-
-	/**
-	 * @param customTag
-	 * @param validationMessage
-	 * @return
-	 */
-	private Object createValidationMessageProblem(final IStructuredDocument document, final ITextRegionCollection customTag, final String validationMessage) {
-		final int start;
-		if (customTag.getNumberOfRegions() > 3) {
-			start = customTag.getStartOffset(customTag.getRegions().get(2));
-		}
-		else if (customTag.getNumberOfRegions() > 1) {
-			start = customTag.getStartOffset(customTag.getRegions().get(1));
-		}
-		else {
-			start = customTag.getStartOffset();
-		}
-
-		final int end;
-		if (customTag.getNumberOfRegions() > 3) {
-			end = customTag.getTextEndOffset(customTag.getRegions().get(customTag.getNumberOfRegions() - 2));
-		}
-		else if (customTag.getNumberOfRegions() > 1) {
-			end = customTag.getTextEndOffset(customTag.getRegions().get(1)) - 1;
-		}
-		else {
-			end = customTag.getTextEndOffset();
-		}
-
-		final int line = document.getLineOfOffset(start);
-
-		final char[] name;
-		IPath location = TaglibController.getLocation(document);
-		if (location == null) {
-			name = new char[0];
-		}
-		else {
-			name = location.toString().toCharArray();
-		}
-
-		return new IJSPProblem() {
-			public void setSourceStart(int sourceStart) {
-			}
-
-			public void setSourceLineNumber(int lineNumber) {
-			}
-
-			public void setSourceEnd(int sourceEnd) {
-			}
-
-			public boolean isWarning() {
-				return true;
-			}
-
-			public boolean isError() {
-				return false;
-			}
-
-			public int getSourceStart() {
-				return start;
-			}
-
-			public int getSourceLineNumber() {
-				return line;
-			}
-
-			public int getSourceEnd() {
-				return end;
-			}
-
-			public char[] getOriginatingFileName() {
-				return name;
-			}
-
-			public String getMessage() {
-				return validationMessage;
-			}
-
-			public int getID() {
-				return getEID();
-			}
-
-			public String[] getArguments() {
-				return new String[0];
-			}
-
-			public int getEID() {
-				return IJSPProblem.TEIValidationMessage;
-			}
-		};
-	}
-
-	/**
-	 * @param decl
-	 * @return the TagInfo for the TLDELementDeclaration if the declaration is
-	 *         valid, otherwise null
-	 */
-	private TagInfo getTagInfo(TLDElementDeclaration decl, TagExtraInfo tei, String prefix, String uri) {
-
-		TagLibraryInfo libInfo = new TagLibraryInfo(prefix, uri) { /*
-																	 * dummy
-																	 * impl
-																	 */
-		};
-
-		CMNamedNodeMap attrs = decl.getAttributes();
-		TagAttributeInfo[] attrInfos = new TagAttributeInfo[attrs.getLength()];
-		TLDAttributeDeclaration attr = null;
-		String type = ""; //$NON-NLS-1$ 
-
-		// get tag attribute infos
-		for (int i = 0; i < attrs.getLength(); i++) {
-			attr = (TLDAttributeDeclaration) attrs.item(i);
-			type = attr.getType();
-			// default value for type is String
-			if (attr.getType() == null || attr.getType().equals("")) //$NON-NLS-1$ 
-				type = "java.lang.String"; //$NON-NLS-1$ 
-			attrInfos[i] = new TagAttributeInfo(attr.getAttrName(), attr.isRequired(), type, false);
-		}
-
-		String tagName = decl.getNodeName();
-		String tagClass = decl.getTagclass();
-		String bodyContent = decl.getBodycontent();
-		if (tagName != null && tagClass != null && bodyContent != null)
-			return new TagInfo(tagName, tagClass, bodyContent, decl.getInfo(), libInfo, tei, attrInfos);
-		return null;
-
-	}
-
-	/**
-	 * @param e
-	 */
-	private void logException(String teiClassname, Throwable e) {
-
-		String message = "teiClassname: ["; //$NON-NLS-1$ 
-		if (teiClassname != null)
-			message += teiClassname;
-		message += "]"; //$NON-NLS-1$
-		Logger.logException(message, e);
-	}
-
-	/**
-	 * Returns all attribute -> value pairs for the tag in a Hashtable.
-	 * 
-	 * @param customTag
-	 * @return
-	 */
-	private Hashtable extractTagData(ITextRegionCollection customTag) {
-		Hashtable tagDataTable = new Hashtable();
-		ITextRegionList regions = customTag.getRegions();
-		ITextRegion r = null;
-		String attrName = ""; //$NON-NLS-1$
-		String attrValue = ""; //$NON-NLS-1$
-		for (int i = 2; i < regions.size(); i++) {
-			r = regions.get(i);
-			// check if attr name
-			if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-				attrName = customTag.getText(r);
-				// check equals is next region
-				if (regions.size() > ++i) {
-					r = regions.get(i);
-					if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS && regions.size() > ++i) {
-						// get attr value
-						r = regions.get(i);
-						if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-							// attributes in our document have quotes, so we
-							// need to strip them
-							attrValue = StringUtils.stripQuotes(customTag.getText(r));
-							tagDataTable.put(attrName, attrValue);
-						}
-					}
-				}
-			}
-		}
-
-		tagDataTable.put("jsp:id", customTag.getText(regions.get(1)) + "_" + customTag.getStartOffset()); //$NON-NLS-1$ 
-
-		return tagDataTable;
-	}
-
-	private TaglibClassLoader getClassloader() {
-		if (fLoader == null) {
-			fLoader = new TaglibClassLoader(this.getClass().getClassLoader());
-			fProjectEntries.clear();
-			fContainerEntries.clear();
-			addClasspathEntriesForProject(getProject(), fLoader);
-		}
-		return fLoader;
-	}
-
-	/**
-	 * @param loader
-	 */
-	private void addClasspathEntriesForProject(IProject p, TaglibClassLoader loader) {
-
-		// avoid infinite recursion and closed project
-		if (!p.isAccessible() || fProjectEntries.contains(p.getFullPath().toString()))
-			return;
-		fProjectEntries.add(p.getFullPath().toString());
-
-		// add things on classpath that we are interested in
-		try {
-			if (p.hasNature(JavaCore.NATURE_ID)) {
-
-				IJavaProject project = JavaCore.create(p);
-
-				try {
-					IClasspathEntry[] entries = project.getRawClasspath();
-					addDefaultDirEntry(loader, project);
-					addClasspathEntries(loader, project, entries);
-				}
-				catch (JavaModelException e) {
-					Logger.logException(e);
-				}
-			}
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-	}
-
-	private void addClasspathEntries(TaglibClassLoader loader, IJavaProject project, IClasspathEntry[] entries) throws JavaModelException {
-		IClasspathEntry entry;
-		for (int i = 0; i < entries.length; i++) {
-
-			entry = entries[i];
-			if (DEBUG)
-				System.out.println("current entry is: " + entry); //$NON-NLS-1$
-
-			switch (entry.getEntryKind()) {
-				case IClasspathEntry.CPE_SOURCE :
-					addSourceEntry(loader, entry);
-					break;
-				case IClasspathEntry.CPE_LIBRARY :
-					addLibraryEntry(loader, entry.getPath());
-					break;
-				case IClasspathEntry.CPE_PROJECT :
-					addProjectEntry(loader, entry);
-					break;
-				case IClasspathEntry.CPE_VARIABLE :
-					addVariableEntry(loader, entry);
-					break;
-				case IClasspathEntry.CPE_CONTAINER :
-					addContainerEntry(loader, project, entry);
-					break;
-			}
-		}
-	}
-
-	/**
-	 * @param loader
-	 * @param entry
-	 */
-	private void addVariableEntry(TaglibClassLoader loader, IClasspathEntry entry) {
-		if (DEBUG)
-			System.out.println(" -> adding variable entry: [" + entry + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		// variable should either be a project or a library entry
-
-		// BUG 169431
-		String variableName = entry.getPath().toString();
-		IPath variablePath = JavaCore.getResolvedVariablePath(entry.getPath());
-		variablePath = JavaCore.getClasspathVariable(variableName);
-
-		// RATLC01076854
-		// variable paths may not exist
-		// in that case null will be returned
-		if (variablePath != null) {
-			if (variablePath.segments().length == 1) {
-				IProject varProj = ResourcesPlugin.getWorkspace().getRoot().getProject(variablePath.toString());
-				if (varProj != null && varProj.exists()) {
-					addClasspathEntriesForProject(varProj, loader);
-					return;
-				}
-			}
-			addLibraryEntry(loader, variablePath);
-		}
-	}
-
-	/**
-	 * @param loader
-	 * @param project
-	 * @param entry
-	 * @throws JavaModelException
-	 */
-	private void addContainerEntry(TaglibClassLoader loader, IJavaProject project, IClasspathEntry entry) throws JavaModelException {
-
-		IClasspathContainer container = JavaCore.getClasspathContainer(entry.getPath(), project);
-		if (container != null) {
-			// avoid infinite recursion
-			if (!fContainerEntries.contains(project.getProject().getFullPath().toString() + ":" + container.getPath().toString())) {
-				fContainerEntries.add(project.getProject().getFullPath().toString() + ":" + container.getPath().toString());
-
-				IClasspathEntry[] cpes = container.getClasspathEntries();
-				// recursive call here
-				addClasspathEntries(loader, project, cpes);
-			}
-		}
-	}
-
-	/**
-	 * @param loader
-	 * @param entry
-	 */
-	private void addProjectEntry(TaglibClassLoader loader, IClasspathEntry entry) {
-
-		if (DEBUG)
-			System.out.println(" -> project entry: [" + entry + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		IPath path = entry.getPath();
-		IProject referenceProject = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0));
-		if (referenceProject != null && referenceProject.isAccessible()) {
-			addClasspathEntriesForProject(referenceProject, loader);
-		}
-	}
-
-	/**
-	 * @param loader
-	 * @param project
-	 * @param projectLocation
-	 * @throws JavaModelException
-	 */
-	private void addDefaultDirEntry(TaglibClassLoader loader, IJavaProject project) throws JavaModelException {
-		// add default bin directory for the project
-		IPath outputPath = project.getOutputLocation();
-		String outputLocation = null;
-		if (!outputPath.toFile().exists()) {
-			if (outputPath.segmentCount() > 1) {
-				IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(outputPath);
-				if (folder.getLocation() != null) {
-					outputLocation = folder.getLocation().toString();
-				}
-			}
-			else {
-				IProject iproject = ResourcesPlugin.getWorkspace().getRoot().getProject(outputPath.segment(0));
-				if (iproject.getLocation() != null) {
-					outputLocation = iproject.getLocation().toString();
-				}
-			}
-		}
-		else {
-			outputLocation = outputPath.toString();
-		}
-		loader.addDirectory(outputLocation);
-	}
-
-	/**
-	 * @param loader
-	 * @param entry
-	 */
-	private void addLibraryEntry(TaglibClassLoader loader, IPath libPath) {
-		String jarPathString = libPath.toString();
-		File file = new File(libPath.toOSString());
-
-		// if not absolute path, it's workspace relative
-		if (!file.exists() && libPath.segmentCount() > 1) {
-			IFile jarFile = ResourcesPlugin.getWorkspace().getRoot().getFile(libPath);
-			if (jarFile.isAccessible() && jarFile.getLocation() != null) {
-				jarPathString = jarFile.getLocation().toString();
-			}
-		}
-
-		if (jarPathString != null) {
-			if (jarPathString.endsWith(".jar")) { //$NON-NLS-1$ 
-				loader.addJar(jarPathString);
-			}
-			else if (file.isDirectory()) {
-				/*
-				 * unlikely, the UI prevents adding folder variables to the
-				 * classpath - it's actually a folder containing binaries
-				 */
-				loader.addDirectory(jarPathString);
-			}
-		}
-	}
-
-	/**
-	 * @param loader
-	 * @param entry
-	 */
-	private void addSourceEntry(TaglibClassLoader loader, IClasspathEntry entry) {
-		// add bin directory for specific entry if it has
-		// one
-		IPath outputLocation = entry.getOutputLocation();
-		if (outputLocation != null && outputLocation.segmentCount() > 1) {
-			IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(outputLocation);
-			if (folder != null && folder.isAccessible()) {
-				outputLocation = folder.getLocation();
-				loader.addDirectory(outputLocation.toString());
-			}
-		}
-	}
-
-	/**
-	 * @return Returns the fModelQuery.
-	 */
-	public ModelQuery getModelQuery(IDocument doc) {
-		IStructuredModel model = null;
-		ModelQuery mq = null;
-		try {
-			model = StructuredModelManager.getModelManager().getExistingModelForRead(doc);
-			mq = ModelQueryUtil.getModelQuery(model);
-		}
-		finally {
-			if (model != null)
-				model.releaseFromRead();
-		}
-		return mq;
-	}
-
-
-	/**
-	 * @return Returns the fFile.
-	 */
-	public IProject getProject() {
-
-		return fProject;
-	}
-
-	/**
-	 * @param file
-	 *            The fFile to set.
-	 */
-	public void setProject(IProject p) {
-		fProject = p;
-		IJavaProject javaProject = JavaCore.create(p);
-		if (javaProject.exists()) {
-			fJavaProject = javaProject;
-		}
-	}
-
-	/**
-	 * @param path
-	 * @return
-	 */
-	public Collection getProblems(IPath path) {
-		return (Collection) fTranslationProblems.remove(path);
-	}
-
-	private void validateTagClass(IStructuredDocument document, ITextRegionCollection customTag, TLDElementDeclaration decl, List problems) {
-		// skip if from a tag file
-		if (TLDElementDeclaration.SOURCE_TAG_FILE.equals(decl.getProperty(TLDElementDeclaration.TAG_SOURCE))) {
-			return;
-		}
-
-		String tagClassname = decl.getTagclass();
-		IType tagClass = null;
-		if (tagClassname != null && tagClassname.length() > 0 && fJavaProject != null) {
-			try {
-				tagClass = fJavaProject.findType(tagClassname, new NullProgressMonitor());
-			}
-			catch (JavaModelException e) {
-				Logger.logException(e);
-			}
-		}
-		if (tagClass == null) {
-			Object createdProblem = createJSPProblem(document, customTag, IJSPProblem.TagClassNotFound, JSPCoreMessages.TaglibHelper_3, tagClassname, false);
-			if (createdProblem != null) {
-				problems.add(createdProblem);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelperCache.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelperCache.java
deleted file mode 100644
index acf1e30..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelperCache.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.taglib;
-
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jst.jsp.core.internal.Logger;
-
-/**
- * A simple cache for TaglibHelpers to avoid excessive creation of TaglibClassLoaders
- * @author pavery
- */
-class TaglibHelperCache {
-
-    private static final boolean DEBUG;
-    static {
-        String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/taglibvars"); //$NON-NLS-1$
-        DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-    }
-
-    /**
-     * An entry for the cache (projectPath string & TaglibHelper)
-     */
-    class Entry {
-        private TaglibHelper fHelper;
-        private String fProjectName;
-        
-        public Entry(String projectName, TaglibHelper helper) {
-            setProjectName(projectName);
-            setHelper(helper);
-        }
-        public TaglibHelper getHelper() {
-            return fHelper;
-        }
-        public void setHelper(TaglibHelper helper) {
-            fHelper = helper;
-        }
-        public String getProjectName() {
-            return fProjectName;
-        }
-        public void setProjectName(String projectName) {
-            fProjectName = projectName;
-        }
-        public String toString() {
-            return "Taglib Helper Entry [" + getProjectName() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
-        }
-    }
-    
-    private List fHelpers;
-    // max size for the cache
-    private int MAX_SIZE;
-
-    /**
-     * Not intended to be large since underlying implmementation uses
-     * a List.
-     */
-    public TaglibHelperCache(int size) {
-        MAX_SIZE = size;
-        fHelpers = Collections.synchronizedList(new ArrayList(MAX_SIZE));
-    }
-    /**
-     * 
-     * @param projectPath
-     * @param f
-     * @param mq
-     * @return
-     */
-    public final synchronized TaglibHelper getHelper(IProject project) {
-        TaglibHelper helper = null;
-        Entry entry = null;
-        String projectName = project.getName();
-        int size = fHelpers.size();
-        // fist check for existing
-        for (int i=0; i<size; i++) {
-            entry = (Entry)fHelpers.get(i);
-            if(entry.getProjectName().equals(projectName)) {
-                // exists
-                helper = entry.getHelper();
-                // only move to front if it's not the first entry
-                if(i>0) {
-                    fHelpers.remove(entry);
-	                fHelpers.add(1, entry);
-	                if(DEBUG) {
-	                    Logger.log(Logger.INFO, "(->) TaglibHelperCache moved: " + entry + " to the front of the list"); //$NON-NLS-1$ //$NON-NLS-2$
-	                    printCacheContents();
-	                }
-                }
-                break;
-            }
-        }
-        // didn't exist
-        if(helper == null) {
-            helper = createNewHelper(projectName, project);
-        }
-        return helper;
-    }
-    
-    /**
-     * @param projectName
-     * @param f
-     * @param mq
-     * @return
-     */
-    private TaglibHelper createNewHelper(String projectName, IProject project) {
-
-        TaglibHelper helper;
-        // create
-        helper = new TaglibHelper(project);
-        Entry newEntry = new Entry(projectName, helper);
-        fHelpers.add(0, newEntry);
-        if(DEBUG) {
-        	Logger.log(Logger.INFO, "(+) TaglibHelperCache added: " + newEntry); //$NON-NLS-1$
-            printCacheContents();
-        }
-        if(fHelpers.size() > MAX_SIZE) {
-            // one too many, remove last
-            Object removed = fHelpers.remove(fHelpers.size()-1);
-            if(DEBUG) {
-            	Logger.log(Logger.INFO, "(-) TaglibHelperCache removed: " + removed); //$NON-NLS-1$
-                printCacheContents();
-            }
-        }
-        return helper;
-    }
- 
-    public final synchronized void removeHelper(String projectName) {
-        Entry entry = null;
-        Iterator it = fHelpers.iterator();
-        while(it.hasNext()) {
-            entry = (Entry)it.next();
-            if(entry.getProjectName().equals(projectName)) {
-                fHelpers.remove(entry);
-                if(DEBUG) { 
-                    Logger.log(Logger.INFO, "(-) TaglibHelperCache removed: " + entry); //$NON-NLS-1$
-                    printCacheContents();
-                }
-                break;
-            }
-        }
-    }
-    
-    private void printCacheContents() {
-        StringBuffer debugString = new StringBuffer();
-        debugString.append("\n-----------------------------------------------------------"); //$NON-NLS-1$
-        debugString.append("\ncache contents:"); //$NON-NLS-1$
-        for (int i=0; i<fHelpers.size(); i++)	
-        	debugString.append("\n -" + i + "- " + fHelpers.get(i)); //$NON-NLS-1$ //$NON-NLS-2$
-        debugString.append("\n-----------------------------------------------------------"); //$NON-NLS-1$
-        Logger.log(Logger.INFO, debugString.toString());
-    }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelperManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelperManager.java
deleted file mode 100644
index 8409581..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelperManager.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.taglib;
-
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.jdt.core.ElementChangedEvent;
-import org.eclipse.jdt.core.IElementChangedListener;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IJavaElementDelta;
-import org.eclipse.jdt.core.IJavaProject;
-
-/**
- * Manages creation and caching (ordered MRU) of TaglibHelpers.
- * Removes helpers when their classpath changes (so they are rebuilt).
- * There is one helper per project (with a specific classpath entry).
- * 
- * @author pavery
- */
-public class TaglibHelperManager implements IElementChangedListener {
-   
-
-    private static TaglibHelperManager instance = null;
-    // using a cache of just 3 loaders
-    private TaglibHelperCache fCache = new TaglibHelperCache(3);
-
-    private TaglibHelperManager() {
-        // use instance
-    }
-    public static synchronized TaglibHelperManager getInstance() {
-        if(instance == null)
-            instance = new TaglibHelperManager();
-        return instance;
-    }
-    
-    public TaglibHelper getTaglibHelper(IFile f) {
-        IProject p = f.getProject();
-        return getHelperFromCache(p);
-    }
-    
-    /**
-     * @param projectPath
-     */
-    private TaglibHelper getHelperFromCache(IProject project) {
-        return fCache.getHelper(project);
-    }
-    
-    /**
-     * Update classpath for appropriate loader.
-     * @see org.eclipse.jdt.core.IElementChangedListener#elementChanged(org.eclipse.jdt.core.ElementChangedEvent)
-     */
-    public void elementChanged(ElementChangedEvent event) {
-
-        // handle classpath changes
-        IJavaElementDelta delta = event.getDelta();
-        if(delta.getElement().getElementType() == IJavaElement.JAVA_MODEL) {
-            IJavaElementDelta[] changed = delta.getChangedChildren();
-            for (int i = 0; i < changed.length; i++) {
-                if ((changed[i].getFlags() & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0 || (changed[i].getFlags() & IJavaElementDelta.F_REORDER) != 0 || (changed[i].getFlags() & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0) {
-                    IJavaElement proj = changed[i].getElement();
-                    handleClasspathChange(changed, i, proj);
-                }
-            }
-        }
-    }
-    
-    /**
-     * @param changed
-     * @param i
-     * @param proj
-     */
-    private void handleClasspathChange(IJavaElementDelta[] changed, int i, IJavaElement proj) {
-        if (proj.getElementType() == IJavaElement.JAVA_PROJECT) {
-			String projectName = ((IJavaProject) proj).getProject().getName();
-			fCache.removeHelper(projectName);
-		}
-    }
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibVariable.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibVariable.java
deleted file mode 100644
index d73bbbc..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibVariable.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.taglib;
-
-import javax.servlet.jsp.tagext.VariableInfo;
-
-import org.eclipse.wst.sse.core.utils.StringUtils;
-
-/**
- * Contains info about a TaglibVariable: classname, variablename.
- */
-public class TaglibVariable {
-
-	private String fVarClass = null;
-	private String fVarName = null;
-	private int fScope;
-	private String fDescription;
-
-	/** fixed end-of-line value */
-	private final String ENDL = "\n"; //$NON-NLS-1$
-
-	private final static String AT_END = "AT_END";
-	private final static String AT_BEGIN = "AT_BEGIN";
-	private final static String NESTED = "NESTED";
-
-	public static final int M_PRIVATE = 1;
-	public static final int M_NONE = 0;
-
-	/**
-	 * 
-	 */
-	public TaglibVariable(String varClass, String varName, int scope) {
-		setVarClass(varClass);
-		setVarName(varName);
-		setScope(scope);
-	}
-
-	public TaglibVariable(String varClass, String varName, String scope) {
-		setVarClass(varClass);
-		setVarName(varName);
-		setScope(scope);
-	}
-
-	public TaglibVariable(String varClass, String varName, String scope, String description) {
-		setVarClass(varClass);
-		setVarName(varName);
-		setScope(scope);
-		setDescription(description);
-	}
-
-	TaglibVariable(String varClass, String varName, int scope, String description) {
-		setVarClass(varClass);
-		setVarName(varName);
-		setScope(scope);
-		setDescription(description);
-	}
-
-	/**
-	 * @return Returns the fVarClass.
-	 */
-	public final String getVarClass() {
-		return fVarClass;
-	}
-
-	/**
-	 * @param varClass
-	 *            The fVarClass to set.
-	 */
-	public final void setVarClass(String varClass) {
-		fVarClass = varClass;
-	}
-
-	/**
-	 * @return Returns the fVarName.
-	 */
-	public final String getVarName() {
-		return fVarName;
-	}
-
-	/**
-	 * @param varName
-	 *            The fVarName to set.
-	 */
-	public final void setVarName(String varName) {
-		fVarName = varName;
-	}
-
-	/**
-	 * Convenience method.
-	 * 
-	 * @return
-	 */
-	public final String getDeclarationString() {
-		return getDeclarationString(false, M_NONE);
-	}
-
-	/**
-	 * Convenience method.
-	 * 
-	 * @return
-	 */
-	public final String getDeclarationString(boolean includeDoc, int style) {
-		String declaration = null;
-		/*
-		 * no description for now --JDT would need to show it for local
-		 * variables and ILocalVariable has no "doc range"
-		 */
-		if (includeDoc && getDescription() != null) {
-			if (style == M_PRIVATE) {
-				declaration = "/** " + ENDL + StringUtils.replace(getDescription(), "*/", "*\\/") + ENDL + " */ " + ENDL + "private " + getVarClass() + " " + getVarName() + " = null;" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$  //$NON-NLS-5$
-			}
-			else {
-				declaration = "/** " + ENDL + StringUtils.replace(getDescription(), "*/", "*\\/") + ENDL + " */ " + ENDL + getVarClass() + " " + getVarName() + " = null;" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$  //$NON-NLS-5$
-			}
-		}
-		else {
-			if (style == M_PRIVATE) {
-				declaration = "private " + getVarClass() + " " + getVarName() + " = null;" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			else {
-				declaration = getVarClass() + " " + getVarName() + " = null;" + ENDL; //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		return declaration;
-	}
-
-	public String getDescription() {
-		return fDescription;
-	}
-
-	public int getScope() {
-		return fScope;
-	}
-
-	public void setScope(int scope) {
-		fScope = scope;
-	}
-
-	public void setScope(String scopeString) {
-		int scope = VariableInfo.AT_BEGIN;
-
-		String trimmedScope = scopeString.trim();
-		if (NESTED.equals(trimmedScope)) {
-			scope = VariableInfo.NESTED;
-		}
-		else if (AT_BEGIN.equals(trimmedScope)) {
-			scope = VariableInfo.AT_BEGIN;
-		}
-		else if (AT_END.equals(trimmedScope)) {
-			scope = VariableInfo.AT_END;
-		}
-
-		fScope = scope;
-	}
-
-	public void setDescription(String description) {
-		fDescription = description;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPFileTaskScanner.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPFileTaskScanner.java
deleted file mode 100644
index 51f5faf..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/tasks/JSPFileTaskScanner.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.tasks;
-
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.xml.core.internal.tasks.XMLFileTaskScanner;
-
-public class JSPFileTaskScanner extends XMLFileTaskScanner {
-	protected boolean isCommentRegion(IStructuredDocumentRegion region, ITextRegion textRegion) {
-		return super.isCommentRegion(region, textRegion) || textRegion.getType().equals(DOMJSPRegionContexts.JSP_COMMENT_TEXT);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java
deleted file mode 100644
index 5974322..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.text;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentPartitioner;
-import org.eclipse.jst.jsp.core.internal.encoding.JSPDocumentHeadContentDetector;
-import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
-import org.eclipse.wst.html.core.internal.text.StructuredTextPartitionerForHTML;
-import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
-import org.eclipse.wst.sse.core.internal.ltk.parser.TagMarker;
-import org.eclipse.wst.sse.core.internal.parser.ForeignRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredTextPartitioner;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.text.rules.StructuredTextPartitioner;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-import org.eclipse.wst.xml.core.internal.text.rules.StructuredTextPartitionerForXML;
-
-public class StructuredTextPartitionerForJSP extends StructuredTextPartitioner {
-	// for compatibility with v5.1.0, we'll reuse ST_JSP_DIRECTIVE for action
-	// tags
-	private final static boolean fEnableJSPActionPartitions = true;
-	// list of valid JSP 1.2 tag and action names
-	private static List fJSPActionTagNames = null;
-	private static final String HTML_MIME_TYPE = "text/html"; //$NON-NLS-1$
-	private static final String XHTML_MIME_TYPE = "text/xhtml"; //$NON-NLS-1$
-	private static final String XML_MIME_TYPE = "text/xml"; //$NON-NLS-1$
-	private static final String VND_WAP_WML = "text/vnd.wap.wml"; //$NON-NLS-1$
-
-	private final static String[] fConfiguredContentTypes = new String[]{IJSPPartitions.JSP_DEFAULT, IJSPPartitions.JSP_DEFAULT_EL, IJSPPartitions.JSP_DEFAULT_EL2, IJSPPartitions.JSP_DIRECTIVE, IJSPPartitions.JSP_CONTENT_DELIMITER, IJSPPartitions.JSP_CONTENT_JAVA, IJSPPartitions.JSP_CONTENT_JAVASCRIPT, IJSPPartitions.JSP_COMMENT};
-
-	/**
-	 * @return
-	 */
-	public static String[] getConfiguredContentTypes() {
-		return fConfiguredContentTypes;
-	}
-
-	private IStructuredTextPartitioner fEmbeddedPartitioner = null;
-	/*
-	 * Save last taglib prefix that was checked (see isAction()) for better
-	 * performance
-	 */
-	private String fLastCheckedPrefix = null;
-
-	/**
-	 * Assume language=java by default ... client, such as
-	 * PageDirectiveAdapter, must set language of document partitioner,
-	 * if/when it changes.
-	 */
-	private String fLanguage = "java"; //$NON-NLS-1$
-
-	/**
-	 * Constructor for JSPDocumentPartioner.
-	 */
-	public StructuredTextPartitionerForJSP() {
-		super();
-		if (fJSPActionTagNames == null) {
-			fJSPActionTagNames = new ArrayList(); // uses .equals() for
-			// contains()
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.DECLARATION);
-			// fJSPActionTagNames.add(JSP12Namespace.ElementName.DIRECTIVE_INCLUDE);
-			// fJSPActionTagNames.add(JSP12Namespace.ElementName.DIRECTIVE_PAGE);
-			// fJSPActionTagNames.add(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.EXPRESSION);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.FALLBACK);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.FORWARD);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.GETPROPERTY);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.INCLUDE);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.PARAM);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.PARAMS);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.PLUGIN);
-			// fJSPActionTagNames.add(JSP12Namespace.ElementName.ROOT);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.SCRIPTLET);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.SETPROPERTY);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.TEXT);
-			fJSPActionTagNames.add(JSP12Namespace.ElementName.USEBEAN);
-		}
-	}
-
-	/**
-	 * @see org.eclipse.jface.text.IDocumentPartitioner#connect(org.eclipse.jface.text.IDocument)
-	 */
-	public void connect(IDocument document) {
-		super.connect(document);
-		fSupportedTypes = null;
-	}
-
-	private IStructuredTextPartitioner createStructuredTextPartitioner(IStructuredDocument structuredDocument) {
-		IStructuredTextPartitioner result = null;
-		// this same detector should underly content describer, to have consistent results
-		JSPDocumentHeadContentDetector jspHeadContentDetector = new JSPDocumentHeadContentDetector();
-		jspHeadContentDetector.set(structuredDocument);
-		String contentType = null;
-		try {
-			contentType = jspHeadContentDetector.getContentType();
-			// if XHTML or WML, that trumps what is in the page directive
-			if (jspHeadContentDetector.isXHTML() || jspHeadContentDetector.isWML()) {
-				contentType = "text/html";
-		}
-		}
-		catch (IOException e) {
-			// impossible in this context, since working with document stream
-			throw new Error(e);
-		}
-		// null or empty, treat as "default"
-		if (contentType == null || contentType.length() == 0) {
-			contentType = "text/html"; //$NON-NLS-1$
-		}
-		// we currently only have two ... eventually should
-		// make or tie-in to existing registry.
-		if (contentType.equalsIgnoreCase(HTML_MIME_TYPE) || contentType.equalsIgnoreCase(VND_WAP_WML)) {
-			result = new StructuredTextPartitionerForHTML();
-			result.connect(structuredDocument);
-		}
-		else if (contentType.equalsIgnoreCase(XHTML_MIME_TYPE)) {
-			result = new StructuredTextPartitionerForHTML();
-			result.connect(structuredDocument);
-		}
-		else if (contentType.equalsIgnoreCase(XML_MIME_TYPE) || contentType.endsWith("+xml")) { //$NON-NLS-1$
-			result = new StructuredTextPartitionerForXML();
-			result.connect(structuredDocument);
-		}
-		else {
-			result = new StructuredTextPartitioner();
-			result.connect(structuredDocument);
-		}
-		return result;
-
-	}
-
-	/**
-	 * @see org.eclipse.jface.text.IDocumentPartitioner#disconnect()
-	 */
-	public void disconnect() {
-		if (fEmbeddedPartitioner != null) {
-			fEmbeddedPartitioner.disconnect();
-			// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=4909
-			/**
-			 * force recreation when reconnected
-			 */
-			fEmbeddedPartitioner = null;
-		}
-		// super.disconnect should come at end, since it (may) set
-		// structuredDocument to null
-		super.disconnect();
-	}
-
-	public String getDefaultPartitionType() {
-		return getEmbeddedPartitioner().getDefaultPartitionType();
-	}
-
-	/**
-	 * Returns the embeddedPartitioner.
-	 * 
-	 * @return IStructuredTextPartitioner
-	 */
-	public IStructuredTextPartitioner getEmbeddedPartitioner() {
-		if (fEmbeddedPartitioner == null) {
-			fEmbeddedPartitioner = createStructuredTextPartitioner(fStructuredDocument);
-			fEmbeddedPartitioner.connect(fStructuredDocument);
-		}
-
-		return fEmbeddedPartitioner;
-	}
-
-	/**
-	 * Returns the language.
-	 * 
-	 * @return String
-	 */
-	public String getLanguage() {
-		return fLanguage;
-	}
-
-	private List getLocalLegalContentTypes() {
-		List types = new ArrayList();
-		Object[] configuredTypes = getConfiguredContentTypes();
-		for (int i = 0; i < configuredTypes.length; i++)
-			types.add(configuredTypes[i]);
-		return types;
-	}
-
-	private String getParentName(IStructuredDocumentRegion sdRegion) {
-		String result = "UNKNOWN"; //$NON-NLS-1$
-		while (sdRegion != null && isValidJspActionRegionType(sdRegion.getType()))
-			sdRegion = sdRegion.getPrevious();
-
-		if (sdRegion != null) {
-			ITextRegionList regions = sdRegion.getRegions();
-			// only find parent names from a start tag
-			if (regions.size() > 1) {
-				ITextRegion r = regions.get(1);
-				if (regions.get(0).getType().equals(DOMRegionContext.XML_TAG_OPEN) && r.getType().equals(DOMRegionContext.XML_TAG_NAME)) {
-					result = sdRegion.getText(r);
-				}
-			}
-		}
-		return result;
-	}
-
-	protected String getPartitionType(ForeignRegion region, int offset) {
-		return getEmbeddedPartitioner().getPartitionType(region, offset);
-	}
-
-
-	public String getPartitionType(ITextRegion region, int offset) {
-		String result = null;
-		final String region_type = region.getType();
-		if (region_type == DOMJSPRegionContexts.JSP_CONTENT) {
-			result = getPartitionTypeForDocumentLanguage();
-		}
-		else if (region_type == DOMJSPRegionContexts.JSP_COMMENT_TEXT || region_type == DOMJSPRegionContexts.JSP_COMMENT_OPEN || region_type == DOMJSPRegionContexts.JSP_COMMENT_CLOSE)
-			result = IJSPPartitions.JSP_COMMENT;
-		else if (region_type == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME || region_type == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN || region_type == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE)
-			result = IJSPPartitions.JSP_DIRECTIVE;
-		else if (region_type == DOMJSPRegionContexts.JSP_CLOSE || region_type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || region_type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN || region_type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN)
-			result = IJSPPartitions.JSP_CONTENT_DELIMITER;
-		else if (region_type == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME)
-			result = IJSPPartitions.JSP_DEFAULT;
-		else if (region_type == DOMJSPRegionContexts.JSP_EL_OPEN || region_type == DOMJSPRegionContexts.JSP_EL_CONTENT || region_type == DOMJSPRegionContexts.JSP_EL_CLOSE || region_type == DOMJSPRegionContexts.JSP_EL_DQUOTE || region_type == DOMJSPRegionContexts.JSP_EL_SQUOTE || region_type == DOMJSPRegionContexts.JSP_EL_QUOTED_CONTENT)
-			result = IJSPPartitions.JSP_DEFAULT_EL;
-		else if (region_type == DOMJSPRegionContexts.JSP_VBL_OPEN || region_type == DOMJSPRegionContexts.JSP_VBL_CONTENT || region_type == DOMJSPRegionContexts.JSP_VBL_CLOSE || region_type == DOMJSPRegionContexts.JSP_VBL_DQUOTE || region_type == DOMJSPRegionContexts.JSP_VBL_SQUOTE || region_type == DOMJSPRegionContexts.JSP_VBL_QUOTED_CONTENT)
-			result = IJSPPartitions.JSP_DEFAULT_EL2;
-		else if (region_type == DOMRegionContext.XML_CDATA_TEXT) {
-			// BUG131463: possibly between <jsp:scriptlet>, <jsp:expression>,
-			// <jsp:declaration>
-			IStructuredDocumentRegion sdRegion = this.fStructuredDocument.getRegionAtCharacterOffset(offset);
-			if (isJspJavaActionName(getParentName(sdRegion)))
-				result = getPartitionTypeForDocumentLanguage();
-			else
-				result = getEmbeddedPartitioner().getPartitionType(region, offset);
-		}
-		else if (region_type == DOMRegionContext.XML_CONTENT) {
-			// possibly between <jsp:scriptlet>, <jsp:expression>,
-			// <jsp:declaration>
-			IStructuredDocumentRegion sdRegion = this.fStructuredDocument.getRegionAtCharacterOffset(offset);
-			if (isJspJavaActionName(getParentName(sdRegion)))
-				result = getPartitionTypeForDocumentLanguage();
-			else
-				result = getDefaultPartitionType();
-		}
-		else {
-			result = getEmbeddedPartitioner().getPartitionType(region, offset);
-		}
-		return result;
-	}
-
-	public String getPartitionTypeBetween(IStructuredDocumentRegion previousNode, IStructuredDocumentRegion nextNode) {
-		return getEmbeddedPartitioner().getPartitionTypeBetween(previousNode, nextNode);
-	}
-
-	private String getPartitionTypeForDocumentLanguage() {
-		String result;
-		if (fLanguage == null || fLanguage.equalsIgnoreCase("java")) { //$NON-NLS-1$
-			result = IJSPPartitions.JSP_CONTENT_JAVA;
-		}
-		else if (fLanguage.equalsIgnoreCase("javascript")) { //$NON-NLS-1$
-			result = IJSPPartitions.JSP_CONTENT_JAVASCRIPT;
-		}
-		else {
-			result = IJSPPartitions.JSP_SCRIPT_PREFIX + getLanguage().toUpperCase(Locale.ENGLISH);
-		}
-		return result;
-	}
-
-	protected void initLegalContentTypes() {
-		List combinedTypes = getLocalLegalContentTypes();
-		if (getEmbeddedPartitioner() != null) {
-			String[] moreTypes = getEmbeddedPartitioner().getLegalContentTypes();
-			for (int i = 0; i < moreTypes.length; i++)
-				combinedTypes.add(moreTypes[i]);
-		}
-		fSupportedTypes = new String[0];
-		combinedTypes.toArray(fSupportedTypes);
-	}
-
-	/**
-	 * @param sdRegion
-	 * @param offset
-	 * @return
-	 */
-	private boolean isAction(IStructuredDocumentRegion sdRegion, int offset) {
-		if (!sdRegion.getType().equals(DOMRegionContext.XML_TAG_NAME))
-			return false;
-		/*
-		 * shouldn't get a tag name region type unless a tag name region
-		 * exists at [1]
-		 */
-		ITextRegion tagNameRegion = sdRegion.getRegions().get(1);
-		String tagName = sdRegion.getText(tagNameRegion);
-
-		RegionParser parser = fStructuredDocument.getParser();
-		if (parser instanceof JSPSourceParser) {
-			if (tagName.equals(fLastCheckedPrefix))
-				return true;
-			List fCustomActionPrefixes = ((JSPSourceParser) parser).getNestablePrefixes();
-			for (int i = 0; i < fCustomActionPrefixes.size(); i++)
-				if (tagName.startsWith(((TagMarker) fCustomActionPrefixes.get(i)).getTagName())) {
-					fLastCheckedPrefix = ((TagMarker) fCustomActionPrefixes.get(i)).getTagName();
-					return true;
-				}
-		}
-		return false;
-	}
-
-	protected boolean isDocumentRegionBasedPartition(IStructuredDocumentRegion sdRegion, ITextRegion containedChildRegion, int offset) {
-		String documentRegionContext = sdRegion.getType();
-		if (containedChildRegion != null) {
-			if (documentRegionContext.equals(DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) || documentRegionContext.equals(DOMJSPRegionContexts.JSP_ROOT_TAG_NAME)) {
-				setInternalPartition(offset, containedChildRegion.getLength(), IJSPPartitions.JSP_DIRECTIVE);
-				return true;
-			}
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=113346
-			if (fEnableJSPActionPartitions && isAction(sdRegion, offset) && !(containedChildRegion instanceof ITextRegionContainer)) {
-				// if (fEnableJSPActionPartitions && isAction(sdRegion,
-				// offset)) {
-				setInternalPartition(offset, containedChildRegion.getLength(), IJSPPartitions.JSP_DIRECTIVE);
-				return true;
-			}
-		}
-		return super.isDocumentRegionBasedPartition(sdRegion, containedChildRegion, offset);
-	}
-
-	/**
-	 * @param possibleJspJavaAction
-	 * @return
-	 */
-	private boolean isJspJavaActionName(String possibleJspJavaAction) {
-		return possibleJspJavaAction.equals(JSP11Namespace.ElementName.SCRIPTLET) || possibleJspJavaAction.equals(JSP11Namespace.ElementName.EXPRESSION) || possibleJspJavaAction.equals(JSP11Namespace.ElementName.DECLARATION);
-	}
-
-	private boolean isValidJspActionRegionType(String type) {
-		// true for anything that can be within <jsp:scriptlet>,
-		// <jsp:expression>, <jsp:declaration>
-		return type == DOMRegionContext.XML_CONTENT || type == DOMRegionContext.BLOCK_TEXT || type == DOMRegionContext.XML_CDATA_OPEN || type == DOMRegionContext.XML_CDATA_TEXT || type == DOMRegionContext.XML_CDATA_CLOSE;
-	}
-
-	public IDocumentPartitioner newInstance() {
-		StructuredTextPartitionerForJSP instance = new StructuredTextPartitionerForJSP();
-		instance.setEmbeddedPartitioner(createStructuredTextPartitioner(fStructuredDocument));
-		instance.setLanguage(fLanguage);
-		return instance;
-	}
-
-	/**
-	 * Sets the embeddedPartitioner.
-	 * 
-	 * @param embeddedPartitioner
-	 *            The embeddedPartitioner to set
-	 */
-	public void setEmbeddedPartitioner(IStructuredTextPartitioner embeddedPartitioner) {
-		// https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=4909
-		/**
-		 * manage connected state of embedded partitioner
-		 */
-		if (fEmbeddedPartitioner != null && fStructuredDocument != null) {
-			fEmbeddedPartitioner.disconnect();
-		}
-
-		this.fEmbeddedPartitioner = embeddedPartitioner;
-
-		if (fEmbeddedPartitioner != null && fStructuredDocument != null) {
-			fEmbeddedPartitioner.connect(fStructuredDocument);
-		}
-	}
-
-	protected void setInternalPartition(int offset, int length, String type) {
-		// TODO: need to carry this single instance idea further to be
-		// complete,
-		// but hopefully this will be less garbage than before (especially for
-		// HTML, XML,
-		// naturally!)
-		internalReusedTempInstance = getEmbeddedPartitioner().createPartition(offset, length, type);
-
-	}
-
-	/**
-	 * Sets the language.
-	 * 
-	 * @param language
-	 *            The language to set
-	 */
-	public void setLanguage(String language) {
-		this.fLanguage = language;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/CommonXML.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/CommonXML.java
deleted file mode 100644
index 3db336c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/CommonXML.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.util;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerFactoryConfigurationError;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.w3c.dom.Document;
-
-public class CommonXML {
-
-	public synchronized static DocumentBuilder getDocumentBuilder() {
-		DocumentBuilder result = null;
-		try {
-			result = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-		}
-		catch (ParserConfigurationException e) {
-			Logger.logException(e);
-		}
-		return result;
-	}
-
-	public synchronized static DocumentBuilder getDocumentBuilder(boolean validating) {
-		DocumentBuilder result = null;
-		try {
-			DocumentBuilderFactory instance = DocumentBuilderFactory.newInstance();
-			instance.setValidating(validating);
-			instance.setExpandEntityReferences(false);
-			instance.setCoalescing(true);
-			result = instance.newDocumentBuilder();
-		}
-		catch (ParserConfigurationException e) {
-			Logger.logException(e);
-		}
-		return result;
-	}
-
-	public static void serialize(Document document, OutputStream ostream) throws IOException {
-		Source domSource = new DOMSource(document);
-		try {
-			Transformer serializer = TransformerFactory.newInstance().newTransformer();
-			try {
-				serializer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
-				serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); //$NON-NLS-1$ //$NON-NLS-2$
-				serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-16"); //$NON-NLS-1$
-			}
-			catch (IllegalArgumentException e) {
-				// unsupported properties
-			}
-			serializer.transform(domSource, new StreamResult(ostream));
-		}
-		catch (TransformerConfigurationException e) {
-			throw new IOException(e.getMessage());
-		}
-		catch (TransformerFactoryConfigurationError e) {
-			throw new IOException(e.getMessage());
-		}
-		catch (TransformerException e) {
-			throw new IOException(e.getMessage());
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/DocumentProvider.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/DocumentProvider.java
deleted file mode 100644
index 2c9c28c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/DocumentProvider.java
+++ /dev/null
@@ -1,476 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.util;
-
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.wst.sse.core.internal.util.JarUtilities;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.DOMImplementation;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-import com.ibm.icu.util.StringTokenizer;
-
-/**
- * An XML Creator/Reader/Writer that 1) Ignores any DocumentType Nodes found
- * within the document (as well as any entities) 2) Ignores any
- * errors/exceptions from Xerces when loading a document 3) Can load Documents
- * from within a .JAR file (***read-only***)
- */
-
-public class DocumentProvider {
-	private Document document = null;
-	private ErrorHandler errorHandler = null;
-	private String fBaseReference;
-	private String fileName = null;
-	private boolean fValidating = false;
-	private InputStream inputStream = null;
-	private String jarFileName = null;
-	private EntityResolver resolver = null;
-
-	private Node rootElement = null;
-	private String rootElementName = null;
-
-	public DocumentProvider() {
-		super();
-	}
-
-	private String _getFileName() {
-		if (inputStream != null)
-			return null;
-		else if (isJAR()) {
-			return getJarFileName();
-		}
-		return getFileName();
-	}
-
-	private Document _getParsedDocumentDOM2() {
-		Document result = null;
-
-		InputStream is = null;
-		try {
-			DocumentBuilder builder = getDocumentBuilder();
-			// DOMParser parser = new DOMParser();
-			// parser.setFeature("http://apache.org/xml/features/continue-after-fatal-error",
-			// false);//$NON-NLS-1$
-			// parser.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar",
-			// false);//$NON-NLS-1$
-			// parser.setErrorHandler(getNullErrorHandler());
-			// parser.setEntityResolver(getNullEntityResolver());
-			// is = getInputStream();
-			builder.setEntityResolver(getEntityResolver());
-			builder.setErrorHandler(getNullErrorHandler());
-			is = getInputStream();
-			if (is != null)
-				result = builder.parse(is, getBaseReference());
-		}
-		catch (SAXException e) {
-			// parsing exception, notify the user?
-			Logger.log(Logger.WARNING_DEBUG, "SAXException while reading descriptor " + _getFileName() + " " + e); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		catch (FileNotFoundException e) {
-			// NOT an "exceptional case"; do not Log
-		}
-		catch (IOException e) {
-			Logger.log(Logger.WARNING_DEBUG, "IOException while reading descriptor " + _getFileName() + " " + e); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		finally {
-			if (is != null) {
-				try {
-					is.close();
-				}
-				catch (Exception e) {
-					// what can be done?
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * @return
-	 */
-	public String getBaseReference() {
-		return fBaseReference;
-	}
-
-	/**
-	 * 
-	 * @return Document
-	 */
-	public Document getDocument() {
-		return getDocument(true);
-	}
-
-	public Document getDocument(boolean createEmptyOnFailure) {
-		if (document == null)
-			load(createEmptyOnFailure);
-		return document;
-	}
-
-	DocumentBuilder fDocumentBuilder = null;
-	
-	private DocumentBuilder getDocumentBuilder() {
-		if (fDocumentBuilder == null) {
-			fDocumentBuilder = CommonXML.getDocumentBuilder(isValidating());
-		}
-		return fDocumentBuilder;
-	}
-
-	private DOMImplementation getDomImplementation() {
-		DocumentBuilder builder = null;
-		try {
-			builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-		}
-		catch (ParserConfigurationException e1) {
-			Logger.logException(e1);
-		}
-		catch (FactoryConfigurationError e1) {
-			Logger.logException(e1);
-		}
-		DOMImplementation impl = builder.getDOMImplementation();
-		return impl;
-	}
-
-	/*************************************************************************
-	 * Takes a single string of the form "a/b/c" and ensures that that
-	 * structure exists below the head element, down through 'c', and returns
-	 * a <em>single</em> element 'c'. For multiple elements (such as
-	 * multiple &lt;macro&gt; elements contained within a single
-	 * &lt;macros&gt; element, full DOM access is required for searching and
-	 * child element manipulation.
-	 ************************************************************************/
-	public Element getElement(String name) {
-		Element result = null;
-		if (document == null)
-			load(false);
-		if (document != null) {
-			result = (Element) getNode(getRootElement(), name);
-		}
-		return result;
-	}
-
-	/**
-	 * Returns an EntityResolver that won't try to load and resolve ANY
-	 * entities
-	 */
-	private EntityResolver getEntityResolver() {
-		if (resolver == null) {
-			resolver = new EntityResolver() {
-				public InputSource resolveEntity(String publicID, String systemID) throws SAXException, IOException {
-					InputSource result = null;
-					if (isValidating()) {
-						try {
-							URL spec = new URL("file://" + getBaseReference()); //$NON-NLS-1$
-							URL url = new URL(spec, systemID);
-							if (url.getProtocol().startsWith("file:")) { //$NON-NLS-1$
-								URLConnection connection = url.openConnection();
-								result = new InputSource(systemID != null ? systemID : "/_" + toString()); //$NON-NLS-1$
-								result.setPublicId(publicID);
-								result.setByteStream(connection.getInputStream());
-							}
-						}
-						catch (Exception e) {
-							result = null;
-						}
-					}
-
-					if (result == null) {
-						result = new InputSource(new ByteArrayInputStream(new byte[0]));
-						result.setPublicId(publicID);
-						result.setSystemId(systemID != null ? systemID : "/_" + getClass().getName()); //$NON-NLS-1$
-					}
-					return result;
-				}
-			};
-		}
-		return resolver;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getFileName() {
-		return fileName;
-	}
-
-	/**
-	 * Returns and input stream to use as the source of the Document 1) from
-	 * an InputStream set on this instance 2) from a JAR file with the given
-	 * entry name 3) from a normal file
-	 * 
-	 * @return InputStream
-	 */
-	public InputStream getInputStream() throws FileNotFoundException {
-		if (inputStream != null)
-			return inputStream;
-		else if (isJAR()) {
-			return JarUtilities.getInputStream(getJarFileName(), getFileName());
-		}
-		else {
-			return new BufferedInputStream(new FileInputStream(getFileName()));
-		}
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public String getJarFileName() {
-		return jarFileName;
-	}
-
-	private Node getNamedChild(Node parent, String childName) {
-		if (parent == null) {
-			return null;
-		}
-		NodeList childList = parent.getChildNodes();
-		for (int i = 0; i < childList.getLength(); i++) {
-			if (childList.item(i).getNodeName().equals(childName))
-				return childList.item(i);
-		}
-		return null;
-	}
-
-	private Document getNewDocument() {
-		Document result = null;
-		try {
-			result = getDomImplementation().createDocument("http://www.w3.org/XML/1998/namespace", getRootElementName(), null); //$NON-NLS-1$
-			NodeList children = result.getChildNodes();
-			for (int i = 0; i < children.getLength(); i++) {
-				result.removeChild(children.item(i));
-			}
-			// we're going through this effort to avoid a NS element
-			Element settings = result.createElementNS("http://www.w3.org/XML/1998/namespace", getRootElementName()); //$NON-NLS-1$
-			result.appendChild(settings);
-			return result;
-		}
-		catch (DOMException e) {
-			Logger.logException(e);
-		}
-		return null;
-	}
-
-	/*************************************************************************
-	 * Takes a single string of the form "a/b/c" and ensures that that
-	 * structure exists below the head element, down through 'c', and returns
-	 * the element 'c'.
-	 ************************************************************************/
-	private Node getNode(Node node, String name) {
-		StringTokenizer tokenizer = new StringTokenizer(name, "/"); //$NON-NLS-1$
-		String token = null;
-		while (tokenizer.hasMoreTokens()) {
-			token = tokenizer.nextToken();
-			if (getNamedChild(node, token) == null)
-				node.appendChild(document.createElement(token));
-			node = getNamedChild(node, token);
-		}
-		return node;
-	}
-
-	/**
-	 * Returns an ErrorHandler that will not stop the parser on reported
-	 * errors
-	 */
-	private ErrorHandler getNullErrorHandler() {
-		if (errorHandler == null) {
-			errorHandler = new ErrorHandler() {
-				public void error(SAXParseException exception) throws SAXException {
-					Logger.log(Logger.WARNING, "SAXParseException with " + fBaseReference + "/" + getJarFileName() + "/" + getFileName() + " (error) while reading descriptor: " + exception.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-				}
-
-				public void fatalError(SAXParseException exception) throws SAXException {
-					Logger.log(Logger.WARNING, "SAXParseException with " + fBaseReference + "/" + getJarFileName() + "/" + getFileName() + " (fatalError) while reading descriptor: " + exception.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-
-				public void warning(SAXParseException exception) throws SAXException {
-					Logger.log(Logger.WARNING, "SAXParseException with " + fBaseReference + "/" + getJarFileName() + "/" + getFileName() + " (warning) while reading descriptor: " + exception.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-			};
-		}
-		return errorHandler;
-	}
-
-	private Document getParsedDocument() {
-		Document result = null;
-		if (inputStream == null) {
-			File existenceTester = null;
-			if (isJAR())
-				existenceTester = new File(getJarFileName());
-			else
-				existenceTester = new File(getFileName());
-			if (!existenceTester.exists())
-				return null;
-		}
-
-		result = _getParsedDocumentDOM2();
-
-		return result;
-
-	}
-
-	/**
-	 * Returns the root Element of the current document
-	 * 
-	 * @return org.w3c.dom.Element
-	 */
-	public Node getRootElement() {
-		return getRootElement(getDocument());
-	}
-
-	/**
-	 * Returns the/a root Element for the current document
-	 * 
-	 * @return org.w3c.dom.Element
-	 */
-	private Node getRootElement(Document doc) {
-		if (doc == null)
-			return null;
-		if (doc.getDocumentElement() != null)
-			return doc.getDocumentElement();
-		try {
-			Element newRootElement = doc.createElement(getRootElementName());
-			doc.appendChild(newRootElement);
-			return newRootElement;
-		}
-		catch (DOMException e) {
-			Logger.logException(e);
-		}
-		return null;
-	}
-
-	/**
-	 * 
-	 * @return java.lang.String
-	 */
-	public java.lang.String getRootElementName() {
-		return rootElementName;
-	}
-
-	private boolean isJAR() {
-		return getJarFileName() != null;
-	}
-
-	/**
-	 * @return
-	 */
-	public boolean isValidating() {
-		return fValidating;
-	}
-
-	void load(boolean createEmptyOnFailure) {
-		// rootElementName and fileName are expected to be defined at this
-		// point
-		document = getParsedDocument();
-		if (document != null) {
-			if (rootElementName != null)
-				rootElement = getRootElement(document);
-			else
-				rootElement = document.getDocumentElement();
-		}
-
-		if (document == null || rootElement == null) {
-			if (createEmptyOnFailure) {
-				document = getNewDocument();
-				if (document != null) {
-					NodeList children = document.getChildNodes();
-					for (int i = 0; i < children.getLength(); i++) {
-						if (children.item(i).getNodeType() == Node.ELEMENT_NODE && children.item(i).getNodeName().equals(getRootElementName()))
-							rootElement = children.item(i);
-					}
-					if (rootElement == null) {
-						for (int i = 0; i < children.getLength(); i++) {
-							if (children.item(i).getNodeType() == Node.ELEMENT_NODE) {
-								rootElement = children.item(i);
-								break;
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * @param string
-	 */
-	public void setBaseReference(String string) {
-		fBaseReference = string;
-	}
-
-	/**
-	 * 
-	 * @param newFileName
-	 *            java.lang.String
-	 */
-	public void setFileName(java.lang.String newFileName) {
-		fileName = newFileName;
-	}
-
-	/**
-	 * Sets the inputStream for which to provide a Document.
-	 * 
-	 * @param inputStream
-	 *            The inputStream to set
-	 */
-	public void setInputStream(InputStream iStream) {
-		this.inputStream = iStream;
-	}
-
-	/**
-	 * 
-	 * @param newJarFileName
-	 *            java.lang.String
-	 */
-	public void setJarFileName(java.lang.String newJarFileName) {
-		jarFileName = newJarFileName;
-	}
-
-	/**
-	 * 
-	 * @param newRootElementName
-	 *            java.lang.String
-	 */
-	public void setRootElementName(java.lang.String newRootElementName) {
-		rootElementName = newRootElementName;
-	}
-
-	/**
-	 * @param b
-	 */
-	public void setValidating(boolean b) {
-		fValidating = b;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java
deleted file mode 100644
index 775d9b1..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.util;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
-/**
- * This class encapsulates any used Module Core and Facets APIs along with
- * fallbacks for use on non-compliant projects and when those services are not
- * available at runtime.
- * 
- * Because ModuleCore API calls can result in locks needing to be acquired,
- * none of these methods should be called while other thread locks have
- * already been acquired.
- */
-public final class FacetModuleCoreSupport {
-	static final boolean _dump_NCDFE = false;
-	private static final String WEB_INF = "WEB-INF"; //$NON-NLS-1$
-	private static final IPath WEB_INF_PATH = new Path(WEB_INF);
-
-	/**
-	 * @param project
-	 * @return the computed IPath to the "root" of the web contents, either from facet knowledge or hueristics, or null if one can not be determined
-	 */
-	public static IPath computeWebContentRootPath(IPath path) {
-		IPath root = null;
-		try {
-			root = FacetModuleCoreSupportDelegate.getWebContentRootPath(ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0)));
-		}
-		catch (NoClassDefFoundError e) {
-			if (_dump_NCDFE)
-				e.printStackTrace();
-		}
-		if(root == null) {
-			/*
-			 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=213245
-			 * 
-			 * NPE in JSPTaglibDirectiveContentAssistProcessor with
-			 * non-faceted project
-			 */
-			root = getLocalRoot(path);
-		}
-		return root;
-	}
-
-	/**
-	 * @param project
-	 * @return -1 if the project does not have the JST Web facet, the version
-	 *         number of it otherwise
-	 * @throws org.eclipse.core.runtime.CoreException
-	 */
-	public static float getDynamicWebProjectVersion(IProject project) {
-		// In the absence of any facet information, assume the highest level
-		float version = 2.5f;
-		try {
-			version = FacetModuleCoreSupportDelegate.getDynamicWebProjectVersion(project);
-		}
-		catch (NoClassDefFoundError e) {
-			if (_dump_NCDFE)
-				e.printStackTrace();
-		}
-		return version;
-	}
-
-	/**
-	 * @param project
-	 * @return the IPath to the "root" of the web contents
-	 */
-	public static IPath getWebContentRootPath(IProject project) {
-		if (project == null)
-			return null;
-
-		IPath path = null;
-		try {
-			path = FacetModuleCoreSupportDelegate.getWebContentRootPath(project);
-		}
-		catch (NoClassDefFoundError e) {
-			if (_dump_NCDFE)
-				e.printStackTrace();
-		}
-		return path;
-	}
-
-	public static IPath getRuntimePath(IPath path) {
-		IPath result = null;
-		try {
-			result = FacetModuleCoreSupportDelegate.getRuntimePath(path);
-		}
-		catch (NoClassDefFoundError e) {
-			if (_dump_NCDFE)
-				e.printStackTrace();
-		}
-		if (result == null) {
-			IPath root = getLocalRoot(path);
-			result = path.removeFirstSegments(root.segmentCount()).makeAbsolute();
-		}
-		return result;
-	}
-
-	/**
-	 * @param project
-	 * @return
-	 * @throws CoreException
-	 */
-	public static boolean isDynamicWebProject(IProject project) {
-		if (project == null)
-			return false;
-		
-		try {
-			return FacetModuleCoreSupportDelegate.isDynamicWebProject(project);
-		}
-		catch (NoClassDefFoundError e) {
-			if (_dump_NCDFE)
-				e.printStackTrace();
-		}
-		return true;
-	}
-
-	/**
-	 * @param basePath -
-	 *            the full path to a resource within the workspace
-	 * @param reference -
-	 *            the reference string to resolve
-	 * @return - the full path within the workspace that corresponds to the
-	 *         given reference according to the virtual pathing support
-	 */
-	public static IPath resolve(IPath basePath, String reference) {
-		IPath resolvedPath = null;
-		try {
-			resolvedPath = FacetModuleCoreSupportDelegate.resolve(basePath, reference);
-		}
-		catch (NoClassDefFoundError e) {
-			if (_dump_NCDFE)
-				e.printStackTrace();
-		}
-
-		if (resolvedPath == null) {
-			IPath rootPath = getLocalRoot(basePath);
-			if (reference.startsWith(Path.ROOT.toString())) {
-				resolvedPath = rootPath.append(reference);
-			}
-			else {
-				resolvedPath = basePath.removeLastSegments(1).append(reference);
-			}
-		}
-
-		return resolvedPath;
-	}
-
-	/**
-	 * @param basePath
-	 * @return the applicable Web context root path, if one exists
-	 */
-	private static IPath getLocalRoot(IPath basePath) {
-		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
-
-		// existing workspace resources - this is the 93% case
-		IResource file = FileBuffers.getWorkspaceFileAtLocation(basePath);
-
-		// Try the base path as a folder first
-		if (file == null && basePath.segmentCount() > 1) {
-			file = workspaceRoot.getFolder(basePath);
-		}
-		// If not a folder, then try base path as a file
-		if (file != null && !file.exists() && basePath.segmentCount() > 1) {
-			file = workspaceRoot.getFile(basePath);
-		}
-
-		if (file == null && basePath.segmentCount() == 1) {
-			file = workspaceRoot.getProject(basePath.segment(0));
-		}
-
-		if (file == null) {
-			/*
-			 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=116529
-			 * 
-			 * This method produces a less accurate result, but doesn't
-			 * require that the file exist yet.
-			 */
-			IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(basePath);
-			if (files.length > 0)
-				file = files[0];
-		}
-
-		while (file != null) {
-			/**
-			 * Treat any parent folder with a WEB-INF subfolder as a web-app
-			 * root
-			 */
-			IContainer folder = null;
-			if ((file.getType() & IResource.FOLDER) != 0) {
-				folder = (IContainer) file;
-			}
-			else {
-				folder = file.getParent();
-			}
-			// getFolder on a workspace root must use a full path, skip
-			if (folder != null && (folder.getType() & IResource.ROOT) == 0) {
-				IFolder webinf = folder.getFolder(WEB_INF_PATH);
-				if (webinf != null && webinf.exists()) {
-					return folder.getFullPath();
-				}
-			}
-			file = file.getParent();
-		}
-
-		return basePath.uptoSegment(1);
-	}
-
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupportDelegate.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupportDelegate.java
deleted file mode 100644
index 2b7e288..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupportDelegate.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.util;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.wst.common.componentcore.ComponentCore;
-import org.eclipse.wst.common.componentcore.ModuleCoreNature;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
-import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
-import org.eclipse.wst.common.componentcore.resources.IVirtualResource;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IProjectFacet;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-
-/**
- * Wrapper class for all Facet-related calls. If the Facet or ModuleCore
- * bundles are not available, this class will not load, or if it does, its
- * methods will cause NoClassDefFoundErrors. This allows us to
- * compartmentalize the dependencies.
- * 
- */
-final class FacetModuleCoreSupportDelegate {
-	private static final String SLASH = "/";
-
-	/**
-	 * Copied to avoid unneeded extra dependency (plus it's unclear why the
-	 * value is in that plug-in).
-	 * 
-	 * @see org.eclipse.wst.common.componentcore.internal.util.IModuleConstants.JST_WEB_MODULE
-	 */
-	private final static String JST_WEB_MODULE = "jst.web"; //$NON-NLS-1$
-
-	/**
-	 * @param project
-	 * @return -1 if the project does not have the JST Web facet, the version
-	 *         number of it otherwise
-	 * @throws CoreException
-	 */
-	static float getDynamicWebProjectVersion(IProject project) {
-		if (project == null)
-			return 2.5f;
-
-		// In the absence of any facet information, assume the highest level
-		float version = 2.5f;
-		try {
-			IFacetedProject faceted = ProjectFacetsManager.create(project);
-			if (faceted != null && ProjectFacetsManager.isProjectFacetDefined(JST_WEB_MODULE)) {
-				IProjectFacet webModuleFacet = ProjectFacetsManager.getProjectFacet(JST_WEB_MODULE);
-				if (faceted.hasProjectFacet(webModuleFacet)) {
-					version = Float.parseFloat(faceted.getInstalledVersion(webModuleFacet).getVersionString());
-				}
-			}
-		}
-		catch (NumberFormatException e) {
-			Logger.logException(e);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		return version;
-	}
-
-	/**
-	 * @param path -
-	 *            the full path to a resource within the workspace
-	 * @return - the runtime path of the resource if one exists, null
-	 *         otherwise
-	 */
-	static IPath getRuntimePath(IPath path) {
-		if (path == null)
-			return null;
-
-		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0));
-
-		if (!ModuleCoreNature.isFlexibleProject(project))
-			return null;
-
-		IVirtualResource[] virtualResources = ComponentCore.createResources(ResourcesPlugin.getWorkspace().getRoot().getFile(path));
-		if (virtualResources != null && virtualResources.length > 0) {
-			return virtualResources[0].getRuntimePath();
-		}
-		return null;
-	}
-
-	/**
-	 * @param project
-	 * @return the IPath to the "root" of the web contents
-	 */
-	static IPath getWebContentRootPath(IProject project) {
-		if (project == null)
-			return null;
-
-		if (!ModuleCoreNature.isFlexibleProject(project))
-			return null;
-
-		IPath path = null;
-		IVirtualComponent component = ComponentCore.createComponent(project);
-		if (component != null && component.exists()) {
-			path = component.getRootFolder().getWorkspaceRelativePath();
-		}
-		return path;
-	}
-
-	/**
-	 * @param project
-	 * @return
-	 * @throws CoreException
-	 */
-	static boolean isDynamicWebProject(IProject project) {
-		if (project == null)
-			return false;
-		
-		try {
-			if (ProjectFacetsManager.isProjectFacetDefined(JST_WEB_MODULE)) {
-				IFacetedProject faceted = ProjectFacetsManager.create(project);
-				IProjectFacet webModuleFacet = ProjectFacetsManager.getProjectFacet(JST_WEB_MODULE);
-				if (faceted != null && faceted.hasProjectFacet(webModuleFacet)) {
-					return true;
-				}
-			}
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		return false;
-	}
-
-	/**
-	 * @param basePath -
-	 *            the full path to a resource within the workspace
-	 * @param reference -
-	 *            the reference string to resolve
-	 * @return - the full path within the workspace that corresponds to the
-	 *         given reference according to the virtual pathing support
-	 */
-	static IPath resolve(IPath basePath, String reference) {
-		if (reference == null || basePath == null || basePath.segmentCount() == 0)
-			return null;
-
-		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(basePath.segment(0));
-
-		if (!ModuleCoreNature.isFlexibleProject(project))
-			return null;
-
-		if (basePath.segmentCount() > 1) {
-			IFile baseFile = ResourcesPlugin.getWorkspace().getRoot().getFile(basePath);
-			IVirtualResource[] virtualResources = ComponentCore.createResources(baseFile);
-			for (int i = 0; i < virtualResources.length; i++) {
-				IPath baseRuntimePath = virtualResources[i].getRuntimePath();
-				IPath referenceRuntimePath = null;
-				if (reference.startsWith(SLASH)) {
-					referenceRuntimePath = new Path(reference);
-				}
-				else {
-					referenceRuntimePath = baseRuntimePath.removeLastSegments(1).append(reference);
-				}
-				IVirtualFile virtualFile = ComponentCore.createFile(project, referenceRuntimePath);
-				if (virtualFile != null && virtualFile.exists()) {
-					IFile[] underlyingFiles = virtualFile.getUnderlyingFiles();
-					for (int j = 0; j < underlyingFiles.length; j++) {
-						if (underlyingFiles[j].getProject().equals(project) && underlyingFiles[j].exists()) {
-							return underlyingFiles[j].getFullPath();
-						}
-
-					}
-				}
-			}
-		}
-		else {
-			IVirtualFile virtualFile = ComponentCore.createFile(project, new Path(reference));
-			if (virtualFile != null && virtualFile.exists()) {
-				return virtualFile.getUnderlyingFile().getFullPath();
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FileContentCache.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FileContentCache.java
deleted file mode 100644
index e6243ad..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FileContentCache.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.util;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.filebuffers.LocationKind;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.wst.sse.core.internal.util.Debug;
-
-public class FileContentCache {
-	private static class CacheEntry {
-		String contents;
-		long modificationStamp = IResource.NULL_STAMP;
-		IPath path;
-
-		CacheEntry(IPath path) {
-			this.path = path;
-			modificationStamp = getModificationStamp(path);
-			contents = readContents(path);
-		}
-
-		private IFile getFile(IPath path) {
-			if (path.segmentCount() > 1) {
-				return ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-			}
-			return null;
-		}
-
-		boolean isStale() {
-			if (modificationStamp == IResource.NULL_STAMP) {
-				return true;
-			}
-			long newStamp = getModificationStamp(path);
-			return newStamp > modificationStamp;
-		}
-
-		private String detectCharset(IFile file) {
-			if (file.getType() == IResource.FILE && file.isAccessible()) {
-				IContentDescription d = null;
-				try {
-					// optimized description lookup, might not succeed
-					d = file.getContentDescription();
-					if (d != null)
-						return d.getCharset();
-				}
-				catch (CoreException e) {
-					// should not be possible given the accessible and file
-					// type
-					// check above
-				}
-				InputStream contents = null;
-				try {
-					contents = file.getContents();
-					IContentDescription description = Platform.getContentTypeManager().getDescriptionFor(contents, file.getName(), new QualifiedName[]{IContentDescription.CHARSET});
-					if (description != null) {
-						return description.getCharset();
-					}
-				}
-				catch (IOException e) {
-					// will try to cleanup in finally
-				}
-				catch (CoreException e) {
-					Logger.logException(e);
-				}
-				finally {
-					if (contents != null) {
-						try {
-							contents.close();
-						}
-						catch (Exception e) {
-							// not sure how to recover at this point
-						}
-					}
-				}
-			}
-			return ResourcesPlugin.getEncoding();
-		}
-
-		private long getModificationStamp(IPath filePath) {
-			IFile f = getFile(filePath);
-			if (f != null && f.isAccessible()) {
-				return f.getModificationStamp();
-			}
-			File file = filePath.toFile();
-			if (file.exists())
-				return file.lastModified();
-			return IResource.NULL_STAMP;
-		}
-
-		private String readContents(IPath filePath) {
-			if (DEBUG)
-				System.out.println("readContents:" + filePath);
-			StringBuffer s = new StringBuffer();
-			InputStream is = null;
-			try {
-				IFile f = getFile(filePath);
-				if (f != null && f.isAccessible()) {
-					String charset = detectCharset(f);
-					is = f.getContents();
-					Reader reader = new InputStreamReader(is, charset);
-					char[] readBuffer = new char[2048];
-					int n = reader.read(readBuffer);
-					while (n > 0) {
-						s.append(readBuffer, 0, n);
-						n = reader.read(readBuffer);
-					}
-				}
-			}
-			catch (Exception e) {
-				if (Debug.debugStructuredDocument) {
-					Logger.logException(e);
-					e.printStackTrace();
-				}
-			}
-			finally {
-				try {
-					if (is != null) {
-						is.close();
-					}
-				}
-				catch (Exception e) {
-					// nothing to do
-				}
-			}
-			if (is == null) {
-				try {
-					FileBuffers.getTextFileBufferManager().connect(filePath, LocationKind.LOCATION, new NullProgressMonitor());
-					ITextFileBuffer buffer = FileBuffers.getTextFileBufferManager().getTextFileBuffer(filePath, LocationKind.LOCATION);
-					if (buffer != null) {
-						s.append(buffer.getDocument().get());
-					}
-				}
-				catch (CoreException e) {
-					// nothing to do
-					Logger.logException(e);
-				}
-				finally {
-					try {
-						FileBuffers.getTextFileBufferManager().disconnect(filePath, LocationKind.LOCATION, new NullProgressMonitor());
-					}
-					catch (CoreException e) {
-						Logger.logException(e);
-					}
-				}
-			}
-			return s.toString();
-		}
-
-	}
-
-	static final boolean DEBUG = false;
-
-	static FileContentCache instance = new FileContentCache();
-
-	public static FileContentCache getInstance() {
-		return instance;
-	}
-
-	private HashMap fContentMap;
-
-	private FileContentCache() {
-		super();
-		fContentMap = new HashMap();
-	}
-
-	private void cleanup() {
-		Iterator iterator = fContentMap.entrySet().iterator();
-		while (iterator.hasNext()) {
-			Map.Entry entry = (Map.Entry) iterator.next();
-			if (entry.getValue() != null && ((Reference) entry.getValue()).get() == null) {
-				iterator.remove();
-			}
-		}
-	}
-
-	public String getContents(IPath filePath) {
-		if (DEBUG)
-			System.out.println("getContents:" + filePath);
-		CacheEntry entry = null;
-		Object o = fContentMap.get(filePath);
-		if (o instanceof Reference) {
-			entry = (CacheEntry) ((Reference) o).get();
-		}
-		if (entry == null || entry.isStale()) {
-			if (DEBUG && entry != null && entry.isStale())
-				System.out.println("stale contents:" + filePath);
-			entry = new CacheEntry(filePath);
-			fContentMap.put(filePath, new SoftReference(entry));
-		}
-		cleanup();
-		return entry.contents;
-	}
-
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/ZeroStructuredDocumentRegion.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/ZeroStructuredDocumentRegion.java
deleted file mode 100644
index 0772450..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/ZeroStructuredDocumentRegion.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.util;
-
-import org.eclipse.wst.sse.core.internal.provisional.events.StructuredDocumentEvent;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.text.TextRegionListImpl;
-
-
-public class ZeroStructuredDocumentRegion implements IStructuredDocumentRegion {
-	private int length = 0;
-
-	private int offset = 0;
-	private IStructuredDocument fParentDocument;
-
-	/**
-	 */
-	public ZeroStructuredDocumentRegion(IStructuredDocument document, int start) {
-		super();
-		fParentDocument = document;
-		offset = start;
-	}
-
-	public void addRegion(ITextRegion aRegion) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public void adjust(int i) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-
-	}
-
-	public void adjustLength(int i) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-
-	}
-
-	public void adjustStart(int i) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-
-	}
-
-	public void adjustTextLength(int i) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-
-	}
-
-	public boolean containsOffset(int i) {
-		return offset <= i && i < getEndOffset();
-	}
-
-	public boolean containsOffset(ITextRegion region, int i) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public void equatePositions(ITextRegion region) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-
-	}
-
-	public ITextRegion getDeepestRegionAtCharacterOffset(int offset) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public int getEnd() {
-		return offset + length;
-	}
-
-	public int getEndOffset() {
-		return getEnd();
-	}
-
-	public int getEndOffset(ITextRegion containedRegion) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public ITextRegion getFirstRegion() {
-		return null;
-	}
-
-	public String getFullText() {
-		return getText();
-	}
-
-	public String getFullText(ITextRegion aRegion) {
-		return getText();
-	}
-
-	/**
-	 */
-	public String getFullText(String context) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public ITextRegion getLastRegion() {
-		return null;
-	}
-
-	public int getLength() {
-		return this.length;
-	}
-
-	public IStructuredDocumentRegion getNext() {
-		return getParentDocument().getFirstStructuredDocumentRegion();
-	}
-
-	public int getNumberOfRegions() {
-		return 0;
-	}
-
-	int getOffset() {
-		return offset;
-	}
-
-	/**
-	 */
-	public ITextRegionContainer getParent() {
-		return null;
-	}
-
-	public IStructuredDocument getParentDocument() {
-		return fParentDocument;
-	}
-
-	public IStructuredDocumentRegion getPrevious() {
-		return null; //$NON-NLS-1$
-	}
-
-	/**
-	 */
-	public ITextRegion getRegionAtCharacterOffset(int offset) {
-		return null; //$NON-NLS-1$
-	}
-
-	/**
-	 */
-	public ITextRegionList getRegions() {
-		return new TextRegionListImpl(); //$NON-NLS-1$
-	}
-
-	/**
-	 */
-	public int getStart() {
-		return this.offset;
-	}
-
-	/**
-	 */
-	public int getStartOffset() {
-		return getStart();
-	}
-
-	public int getStartOffset(ITextRegion containedRegion) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	/**
-	 */
-	public IStructuredDocument getStructuredDocument() {
-		return getParentDocument();
-	}
-
-	/**
-	 */
-	public String getText() {
-		return new String();
-	}
-
-	/**
-	 */
-	public String getText(ITextRegion aRegion) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	/**
-	 */
-	public String getText(String context) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	/**
-	 */
-	public int getTextEnd() {
-		return getEnd();
-	}
-
-	/**
-	 */
-	public int getTextEndOffset() {
-		return getTextEnd();
-	}
-
-	public int getTextEndOffset(ITextRegion containedRegion) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	/**
-	 * The text length is equal to length if there is no white space at the
-	 * end of a region. Otherwise it is smaller than length.
-	 */
-	public int getTextLength() {
-		return getLength();
-	}
-
-	/**
-	 */
-	public String getType() {
-		return "ZeroStructuredDocumentRegion";//$NON-NLS-1$
-	}
-
-	public boolean isDeleted() {
-		return false;
-	}
-
-	public boolean isEnded() {
-		return true;
-	}
-
-	public boolean sameAs(IStructuredDocumentRegion region, int shift) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	/**
-	 */
-	public boolean sameAs(ITextRegion region, int shift) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public boolean sameAs(ITextRegion oldRegion, IStructuredDocumentRegion documentRegion, ITextRegion newRegion, int shift) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public void setDeleted(boolean deleted) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public void setEnded(boolean hasEnd) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	/**
-	 * had to make public, due to API transition.
-	 */
-	public void setLength(int length) {
-		this.length = length;
-	}
-
-	public void setNext(IStructuredDocumentRegion newNext) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	/**
-	 */
-	void setOffset(int offset) {
-		this.offset = offset;
-	}
-
-	public void setParentDocument(IStructuredDocument document) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public void setPrevious(IStructuredDocumentRegion newPrevious) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public void setRegions(ITextRegionList embeddedRegions) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public void setStart(int newStart) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-
-	public StructuredDocumentEvent updateRegion(Object requester, IStructuredDocumentRegion flatnode, String changes, int start, int end) {
-		throw new Error("intentionally not implemented since should never be called"); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/FragmentValidationTools.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/FragmentValidationTools.java
deleted file mode 100644
index a0bb0ed..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/FragmentValidationTools.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************

- * Copyright (c) 2008 IBM Corporation and others.

- * All rights reserved. This program and the accompanying materials

- * are made available under the terms of the Eclipse Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/epl-v10.html

- * 

- * Contributors:

- *     IBM Corporation - initial API and implementation

- *******************************************************************************/

-

-package org.eclipse.jst.jsp.core.internal.validation;

-

-import org.eclipse.core.resources.IProject;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.resources.ProjectScope;

-import org.eclipse.core.runtime.preferences.IEclipsePreferences;

-import org.eclipse.core.runtime.preferences.InstanceScope;

-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;

-import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;

-

-/**

- * Utility class for reading fragment validation preferences/properties while

- * respecting the project override preference.

- */

-class FragmentValidationTools {

-	/**

-	 * @param resource

-	 * @return whether to perform validation on a fragment, returning the

-	 *         project-specific preference only of project-specific values are

-	 *         enabled

-	 */

-	static boolean shouldValidateFragment(IResource resource) {

-		String qualifier = JSPCorePlugin.getDefault().getBundle().getSymbolicName();

-

-		IProject project = null;

-		if (resource.getType() == IResource.PROJECT) {

-			project = (IProject) resource;

-		}

-		else {

-			project = resource.getProject();

-		}

-		if (project != null) {

-			IEclipsePreferences node = new ProjectScope(project).getNode(qualifier);

-			// first, check whether project specific settings are to be used

-			boolean useProjectSettings = node.getBoolean(JSPCorePreferenceNames.VALIDATION_USE_PROJECT_SETTINGS, false);

-			if (useProjectSettings) {

-				// only if so, return that value

-				return node.getBoolean(JSPCorePreferenceNames.VALIDATE_FRAGMENTS, true);

-			}

-			// if not, return the workspace value

-		}

-		return new InstanceScope().getNode(qualifier).getBoolean(JSPCorePreferenceNames.VALIDATE_FRAGMENTS, true);

-	}

-}

diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/HTMLValidationReporter.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/HTMLValidationReporter.java
deleted file mode 100644
index 1c77c11..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/HTMLValidationReporter.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.wst.html.core.internal.validate.MessageFactory;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.validate.ErrorInfo;
-import org.eclipse.wst.sse.core.internal.validate.ValidationMessage;
-import org.eclipse.wst.sse.core.internal.validate.ValidationReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidator;
-
-/*
- * Copied from html.ui's HTMLValidationReporter with some minor cleanup
- * modifications
- */
-class HTMLValidationReporter implements ValidationReporter {
-
-	private IValidator owner = null;
-	private IReporter reporter = null;
-	private IFile file = null;
-	private IStructuredModel model = null;
-	private MessageFactory fFactory = null;
-	
-	/**
-	 */
-	public HTMLValidationReporter(IValidator owner, IReporter reporter, IFile file, IStructuredModel model) {
-		super();
-		this.owner = owner;
-		this.reporter = reporter;
-		this.file = file;
-		this.model = model;
-		fFactory = new MessageFactory(file != null ? file.getProject() : null);
-	}
-
-	/**
-	 */
-	public void clear() {
-		if (this.file == null)
-			return;
-
-
-		if (this.reporter != null) {
-			this.reporter.removeAllMessages(this.owner, this.file);
-		}
-	}
-
-
-
-	/**
-	 */
-	public void report(ValidationMessage message) {
-		if (message == null || this.file == null || message.getSeverity() == ValidationMessage.IGNORE)
-			return;
-		IMessage mes = translateMessage(message);
-
-		if (this.reporter != null) {
-			this.reporter.addMessage(this.owner, mes);
-		}
-	}
-
-	/**
-	 * Translate ValidationMessage to IMessage and generate result log
-	 */
-	private IMessage translateMessage(ValidationMessage message) {
-		int severity = IMessage.LOW_SEVERITY;
-		switch (message.getSeverity()) {
-			case ValidationMessage.ERROR :
-				severity = IMessage.HIGH_SEVERITY;
-				break;
-			case ValidationMessage.WARNING :
-				severity = IMessage.NORMAL_SEVERITY;
-				break;
-			case ValidationMessage.INFORMATION :
-				break;
-			default :
-				break;
-		}
-
-		IMessage mes = new LocalizedMessage(severity, message.getMessage(), this.file);
-		mes.setOffset(message.getOffset());
-		mes.setLength(message.getLength());
-		if (this.model != null) {
-			IStructuredDocument flatModel = this.model.getStructuredDocument();
-			if (flatModel != null) {
-				int line = flatModel.getLineOfOffset(message.getOffset());
-				mes.setLineNo(line + 1);
-			}
-		}
-
-		return mes;
-	}
-
-	public void report(ErrorInfo info) {
-		report(fFactory.createMessage(info));
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPActionValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPActionValidator.java
deleted file mode 100644
index 51f0c3d..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPActionValidator.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TaglibTracker;
-import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.validate.ValidationMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidator;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.contentmodel.basic.CMNamedNodeMapImpl;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.NodeList;
-
-/**
- * Checks for: missing required attributes & undefined attributes in jsp
- * action tags such as jsp directives and jsp custom tags as well as non-empty
- * inline jsp action tags
- */
-public class JSPActionValidator extends JSPValidator {
-	/**
-	 * 
-	 */
-	private static final String PREFERENCE_NODE_QUALIFIER = JSPCorePlugin.getDefault().getBundle().getSymbolicName();
-	private IValidator fMessageOriginator;
-	private IPreferencesService fPreferencesService = null;
-	private IScopeContext[] fScopes = null;
-	private int fSeverityMissingRequiredAttribute = IMessage.HIGH_SEVERITY;
-	private int fSeverityNonEmptyInlineTag = IMessage.NORMAL_SEVERITY;
-	private int fSeverityUnknownAttribute = IMessage.NORMAL_SEVERITY;
-
-	private HashSet fTaglibPrefixes = new HashSet();
-
-	public JSPActionValidator() {
-		this.fMessageOriginator = this;
-	}
-
-	public JSPActionValidator(IValidator validator) {
-		this.fMessageOriginator = validator;
-	}
-
-	private void checkNonEmptyInlineTag(IDOMElement element, CMElementDeclaration cmElementDecl, IReporter reporter, IFile file, IStructuredDocument document) {
-		if (cmElementDecl.getContentType() == CMElementDeclaration.EMPTY && element.getChildNodes().getLength() > 0) {
-			String msgText = NLS.bind(JSPCoreMessages.JSPActionValidator_0, element.getNodeName());
-			LocalizedMessage message = new LocalizedMessage(fSeverityNonEmptyInlineTag, msgText, file);
-			int start = element.getStartOffset();
-			int length = element.getStartEndOffset() - start;
-			int lineNo = document.getLineOfOffset(start);
-			message.setLineNo(lineNo);
-			message.setOffset(start);
-			message.setLength(length);
-
-			reporter.addMessage(fMessageOriginator, message);
-		}
-	}
-
-	private void checkRequiredAttributes(IDOMElement element, CMNamedNodeMap attrMap, IReporter reporter, IFile file, IStructuredDocument document, IStructuredDocumentRegion documentRegion) {
-		Iterator it = attrMap.iterator();
-		CMAttributeDeclaration attr = null;
-		while (it.hasNext()) {
-			attr = (CMAttributeDeclaration) it.next();
-			if (attr.getUsage() == CMAttributeDeclaration.REQUIRED) {
-				Attr a = element.getAttributeNode(attr.getAttrName());
-				if (a == null) {
-					// Attribute may be defined using a jsp:attribute action
-					if (!checkJSPAttributeAction(element, attr)) {
-						String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_5, attr.getAttrName());
-						LocalizedMessage message = new LocalizedMessage(fSeverityMissingRequiredAttribute, msgText, file);
-						int start = element.getStartOffset();
-						int length = element.getStartEndOffset() - start;
-						int lineNo = document.getLineOfOffset(start);
-						message.setLineNo(lineNo);
-						message.setOffset(start);
-						message.setLength(length);
-	
-						reporter.addMessage(fMessageOriginator, message);
-					}
-				}
-			}
-		}
-	}
-	
-	/**
-	 * Checks for jsp:attribute actions of <code>element</code> to see if they
-	 * satisfy the required attribute <code>attr</code>
-	 * 
-	 * @param element The element with a required attribute
-	 * @param attr The required attribute
-	 * @return <code>true</code> if a jsp:attribute action has the name of
-	 * the required attribute <code>attr</code>; <code>false</code> otherwise.
-	 */
-	private boolean checkJSPAttributeAction(IDOMElement element, CMAttributeDeclaration attr) {
-		if (element != null && attr != null) {
-			NodeList elements = element.getElementsByTagName("jsp:attribute"); //$NON-NLS-1$
-			String neededAttrName = attr.getNodeName();
-			for (int i = 0; i < elements.getLength(); i++) {
-				Element childElement = (Element) elements.item(i);
-				/*
-				 * Get the name attribute of jsp:attribute and compare its
-				 * value to the required attribute name
-				 */
-				if (neededAttrName.equals(childElement.getAttribute("name"))) {//$NON-NLS-1$
-					return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	private boolean checkUnknownAttributes(IDOMElement element, CMNamedNodeMap cmAttrs, IReporter reporter, IFile file, IStructuredDocument document, IStructuredDocumentRegion documentRegion) {
-		boolean foundjspattribute = false;
-
-		NamedNodeMap attrs = element.getAttributes();
-		for (int i = 0; i < attrs.getLength(); i++) {
-			Attr a = (Attr) attrs.item(i);
-			CMAttributeDeclaration adec = (CMAttributeDeclaration) cmAttrs.getNamedItem(a.getName());
-			if (adec == null) {
-				// No attr declaration was found. That is, the attr name is
-				// undefined.
-				// but not regard it as undefined name if it includes JSP
-				if (!hasJSPRegion(((IDOMNode) a).getNameRegion()) && fSeverityUnknownAttribute != ValidationMessage.IGNORE) {
-					String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_6, a.getName());
-					LocalizedMessage message = new LocalizedMessage(fSeverityUnknownAttribute, msgText, file);
-					int start = ((IDOMAttr) a).getNameRegionStartOffset();
-					int length = ((IDOMAttr) a).getNameRegionEndOffset() - start;
-					int lineNo = document.getLineOfOffset(start);
-					message.setLineNo(lineNo);
-					message.setOffset(start);
-					message.setLength(length);
-
-					reporter.addMessage(fMessageOriginator, message);
-				}
-				else {
-					foundjspattribute = true;
-				}
-			}
-		}
-		return foundjspattribute;
-	}
-
-	public void cleanup(IReporter reporter) {
-		super.cleanup(reporter);
-		fTaglibPrefixes.clear();
-	}
-
-	int getMessageSeverity(String key) {
-		int sev = fPreferencesService.getInt(PREFERENCE_NODE_QUALIFIER, key, IMessage.NORMAL_SEVERITY, fScopes);
-		switch (sev) {
-			case ValidationMessage.ERROR :
-				return IMessage.HIGH_SEVERITY;
-			case ValidationMessage.WARNING :
-				return IMessage.NORMAL_SEVERITY;
-			case ValidationMessage.INFORMATION :
-				return IMessage.LOW_SEVERITY;
-			case ValidationMessage.IGNORE :
-				return ValidationMessage.IGNORE;
-		}
-		return IMessage.NORMAL_SEVERITY;
-	}
-
-	private String getStartTagName(IStructuredDocumentRegion sdr) {
-		String name = new String();
-		ITextRegionList subRegions = sdr.getRegions();
-		if (subRegions.size() > 2) {
-			ITextRegion subRegion = subRegions.get(0);
-			if (subRegion.getType() == DOMRegionContext.XML_TAG_OPEN) {
-				subRegion = subRegions.get(1);
-				if (subRegion.getType() == DOMRegionContext.XML_TAG_NAME) {
-					name = sdr.getText(subRegion);
-				}
-			}
-		}
-		return name;
-	}
-
-	private HashSet getTaglibPrefixes(IStructuredDocument document) {
-		if (fTaglibPrefixes.isEmpty()) {
-			// add all reserved prefixes
-			fTaglibPrefixes.add("jsp"); //$NON-NLS-1$
-			fTaglibPrefixes.add("jspx"); //$NON-NLS-1$
-			fTaglibPrefixes.add("java"); //$NON-NLS-1$
-			fTaglibPrefixes.add("javax"); //$NON-NLS-1$ 
-			fTaglibPrefixes.add("servlet"); //$NON-NLS-1$ 
-			fTaglibPrefixes.add("sun"); //$NON-NLS-1$ 
-			fTaglibPrefixes.add("sunw"); //$NON-NLS-1$
-
-			// add all taglib prefixes
-			TLDCMDocumentManager manager = TaglibController.getTLDCMDocumentManager(document);
-			if (manager != null) {
-				List trackers = manager.getTaglibTrackers();
-				for (Iterator it = trackers.iterator(); it.hasNext();) {
-					TaglibTracker tracker = (TaglibTracker) it.next();
-					String prefix = tracker.getPrefix();
-					fTaglibPrefixes.add(prefix);
-				}
-			}
-		}
-		return fTaglibPrefixes;
-	}
-
-	private boolean hasJSPRegion(ITextRegion container) {
-		if (!(container instanceof ITextRegionContainer))
-			return false;
-		ITextRegionList regions = ((ITextRegionContainer) container).getRegions();
-		if (regions == null)
-			return false;
-		Iterator e = regions.iterator();
-		while (e.hasNext()) {
-			ITextRegion region = (ITextRegion) e.next();
-			if (region == null)
-				continue;
-			String regionType = region.getType();
-			if (regionType == DOMRegionContext.XML_TAG_OPEN || (isNestedTagName(regionType)))
-				return true;
-		}
-		return false;
-	}
-
-	private boolean isNestedTagName(String regionType) {
-		boolean result = regionType.equals(DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) || regionType.equals(DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) || regionType.equals(DOMJSPRegionContexts.JSP_DECLARATION_OPEN) || regionType.equals(DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN);
-		return result;
-	}
-
-	private void loadPreferences(IFile file) {
-		fScopes = new IScopeContext[]{new InstanceScope(), new DefaultScope()};
-
-		fPreferencesService = Platform.getPreferencesService();
-		if (file != null && file.isAccessible()) {
-			ProjectScope projectScope = new ProjectScope(file.getProject());
-			if (projectScope.getNode(PREFERENCE_NODE_QUALIFIER).getBoolean(JSPCorePreferenceNames.VALIDATION_USE_PROJECT_SETTINGS, false)) {
-				fScopes = new IScopeContext[]{projectScope, new InstanceScope(), new DefaultScope()};
-			}
-		}
-
-		fSeverityMissingRequiredAttribute = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_ACTIONS_SEVERITY_MISSING_REQUIRED_ATTRIBUTE);
-		fSeverityNonEmptyInlineTag = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_ACTIONS_SEVERITY_NON_EMPTY_INLINE_TAG);
-		fSeverityUnknownAttribute = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_ACTIONS_SEVERITY_UNKNOWN_ATTRIBUTE);
-	}
-
-	void performValidation(IFile f, IReporter reporter, IStructuredModel model) {
-		fTaglibPrefixes.clear();
-		int length = model.getStructuredDocument().getLength();
-		performValidation(f, reporter, model, new Region(0, length));
-	}
-
-	protected void performValidation(IFile f, IReporter reporter, IStructuredModel model, IRegion validateRegion) {
-		loadPreferences(f);
-		IStructuredDocument sDoc = model.getStructuredDocument();
-
-		// iterate all document regions
-		IStructuredDocumentRegion region = sDoc.getRegionAtCharacterOffset(validateRegion.getOffset());
-		while (region != null && !reporter.isCancelled() && (region.getStartOffset() <= (validateRegion.getOffset() + validateRegion.getLength()))) {
-			if (region.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-				// only checking directives
-				processDirective(reporter, f, model, region);
-				fTaglibPrefixes.clear();
-			}
-			else if (region.getType() == DOMRegionContext.XML_TAG_NAME) {
-				// and jsp tags
-				String tagName = getStartTagName(region);
-				int colonPosition = tagName.indexOf(':');
-				if (colonPosition > -1) {
-					// get tag's prefix and check if it's really a jsp action
-					// tag
-					String prefix = tagName.substring(0, colonPosition);
-					if (getTaglibPrefixes(sDoc).contains(prefix))
-						processDirective(reporter, f, model, region);
-				}
-			}
-			region = region.getNext();
-		}
-		unloadPreferences();
-	}
-
-	private void processDirective(IReporter reporter, IFile file, IStructuredModel model, IStructuredDocumentRegion documentRegion) {
-		IndexedRegion ir = model.getIndexedRegion(documentRegion.getStartOffset());
-		if (ir instanceof IDOMElement) {
-			IDOMElement element = (IDOMElement) ir;
-			ModelQuery query = ModelQueryUtil.getModelQuery(model);
-			if (query != null) {
-				CMElementDeclaration cmElement = query.getCMElementDeclaration(element);
-				if (cmElement != null) {
-					CMNamedNodeMap cmAttributes = cmElement.getAttributes();
-
-					CMNamedNodeMapImpl allAttributes = new CMNamedNodeMapImpl(cmAttributes);
-					List nodes = query.getAvailableContent(element, cmElement, ModelQuery.INCLUDE_ATTRIBUTES);
-					for (int k = 0; k < nodes.size(); k++) {
-						CMNode cmnode = (CMNode) nodes.get(k);
-						if (cmnode.getNodeType() == CMNode.ATTRIBUTE_DECLARATION) {
-							allAttributes.put(cmnode);
-						}
-					}
-					cmAttributes = allAttributes;
-
-					boolean foundjspattribute = checkUnknownAttributes(element, cmAttributes, reporter, file, model.getStructuredDocument(), documentRegion);
-					// required attributes could be hidden in jsp regions in
-					// tags, so if jsp regions were detected, do not check for
-					// missing required attributes
-					if (!foundjspattribute && fSeverityMissingRequiredAttribute != ValidationMessage.IGNORE)
-						checkRequiredAttributes(element, cmAttributes, reporter, file, model.getStructuredDocument(), documentRegion);
-
-					if (fSeverityNonEmptyInlineTag != ValidationMessage.IGNORE)
-						checkNonEmptyInlineTag(element, cmElement, reporter, file, model.getStructuredDocument());
-				}
-			}
-		}
-	}
-
-	private void unloadPreferences() {
-		fPreferencesService = null;
-		fScopes = null;
-	}
-
-	protected void validateFile(IFile f, IReporter reporter) {
-		if (DEBUG) {
-			Logger.log(Logger.INFO, getClass().getName() + " validating: " + f); //$NON-NLS-1$
-		}
-
-		IStructuredModel sModel = null;
-		try {
-			sModel = StructuredModelManager.getModelManager().getModelForRead(f);
-			if (sModel != null && !reporter.isCancelled()) {
-				performValidation(f, reporter, sModel);
-			}
-		}
-		catch (Exception e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (sModel != null)
-				sModel.releaseFromRead();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPBatchValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPBatchValidator.java
deleted file mode 100644
index 8f3b47e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPBatchValidator.java
+++ /dev/null
@@ -1,531 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache.PropertyGroup;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.validation.AbstractValidator;
-import org.eclipse.wst.validation.ValidationResult;
-import org.eclipse.wst.validation.ValidationState;
-import org.eclipse.wst.validation.internal.ConfigurationManager;
-import org.eclipse.wst.validation.internal.ProjectConfiguration;
-import org.eclipse.wst.validation.internal.ValidationRegistryReader;
-import org.eclipse.wst.validation.internal.core.Message;
-import org.eclipse.wst.validation.internal.core.ValidationException;
-import org.eclipse.wst.validation.internal.operations.IWorkbenchContext;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
-import org.eclipse.wst.validation.internal.provisional.core.IValidatorJob;
-
-/**
- * Performs JSP validation tasks for batch validation. The individual
- * validator classes will still be used for source validation.
- */
-public final class JSPBatchValidator extends AbstractValidator implements IValidatorJob, IExecutableExtension {
-	class JSPFileVisitor implements IResourceProxyVisitor {
-
-		private List fFiles = new ArrayList();
-		private IReporter fReporter = null;
-
-		public JSPFileVisitor(IReporter reporter) {
-			fReporter = reporter;
-		}
-
-		final IFile[] getFiles() {
-			return (IFile[]) fFiles.toArray(new IFile[fFiles.size()]);
-		}
-
-		public boolean visit(IResourceProxy proxy) throws CoreException {
-
-			// check validation
-			if (fReporter.isCancelled())
-				return false;
-
-			if (proxy.getType() == IResource.FILE) {
-
-				if (isJSPType(proxy.getName()) && proxy.isAccessible()) {
-					IFile file = (IFile) proxy.requestResource();
-					if (DEBUG)
-						System.out.println("(+) JSPValidator adding file: " + file.getName()); //$NON-NLS-1$
-					fFiles.add(file);
-
-					// don't search deeper for files
-					return false;
-				}
-			}
-			return true;
-		}
-	}
-
-	// for debugging
-	static final boolean DEBUG = Boolean.valueOf(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspvalidator")).booleanValue(); //$NON-NLS-1$
-
-	private static final String PLUGIN_ID_JSP_CORE = "org.eclipse.jst.jsp.core"; //$NON-NLS-1$
-
-	/**
-	 * List of IResources that the currently validating file depends upon
-	 */
-	private Collection fDependsOn;
-
-	/**
-	 * Gets current validation project configuration based on current project
-	 * (which is based on current document)
-	 * 
-	 * @return ProjectConfiguration
-	 */
-	static private ProjectConfiguration getProjectConfiguration(IFile file) {
-		ProjectConfiguration projectConfiguration = null;
-		if (file != null) {
-			IProject project = file.getProject();
-			if (project != null) {
-				try {
-					projectConfiguration = ConfigurationManager.getManager().getProjectConfiguration(project);
-				}
-				catch (InvocationTargetException e) {
-					Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e);
-				}
-			}
-		}
-
-		return projectConfiguration;
-	}
-
-	/**
-	 * Checks if validator is enabled according in Validation preferences
-	 * 
-	 * @param vmd
-	 * @return
-	 */
-	static boolean isBatchValidatorPreferenceEnabled(IFile file) {
-		if (file == null) {
-			return true;
-		}
-
-		boolean enabled = true;
-		ProjectConfiguration configuration = getProjectConfiguration(file);
-		if (configuration != null) {
-			org.eclipse.wst.validation.internal.ValidatorMetaData metadata = ValidationRegistryReader.getReader().getValidatorMetaData(JSPBatchValidator.class.getName());
-			if (configuration != null && metadata != null) {
-				if (!configuration.isBuildEnabled(metadata) && !configuration.isManualEnabled(metadata))
-					enabled = false;
-			}
-		}
-		return enabled;
-	}
-
-	String fAdditionalContentTypesIDs[] = null;
-
-	private IContentType[] fContentTypes = null;
-
-	private JSPDirectiveValidator fJSPDirectiveValidator = new JSPDirectiveValidator(this);
-
-	private JSPELValidator fJSPELValidator = new JSPELValidator(this);
-
-	private IContentType fJSPFContentType = null;
-
-	private JSPJavaValidator fJSPJavaValidator = new JSPJavaValidator(this);
-
-	private JSPActionValidator fJSPActionValidator = new JSPActionValidator(this);
-
-	void addDependsOn(IResource resource) {
-		fDependsOn.add(resource);
-	}
-
-	public void cleanup(IReporter reporter) {
-		fJSPDirectiveValidator.cleanup(reporter);
-		fJSPELValidator.cleanup(reporter);
-		fJSPJavaValidator.cleanup(reporter);
-		fJSPActionValidator.cleanup(reporter);
-	}
-
-
-	void doValidate(IValidationContext helper, IReporter reporter) throws ValidationException {
-		String[] uris = helper.getURIs();
-		if (uris.length > 0) {
-			IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
-			IFile currentFile = null;
-			for (int i = 0; i < uris.length && !reporter.isCancelled(); i++) {
-				currentFile = wsRoot.getFile(new Path(uris[i]));
-				if (currentFile != null && currentFile.exists()) {
-					if (shouldValidate(currentFile) && fragmentCheck(currentFile)) {
-						Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, currentFile.getFullPath().toString().substring(1));
-						reporter.displaySubtask(this, message);
-						validateFile(currentFile, reporter);
-					}
-					if (DEBUG)
-						System.out.println("validating: [" + uris[i] + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			}
-		}
-		else {
-			// if uris[] length 0 -> validate() gets called for each project
-			if (helper instanceof IWorkbenchContext) {
-				IProject project = ((IWorkbenchContext) helper).getProject();
-
-				Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, NLS.bind(JSPCoreMessages.JSPBatchValidator_0, project.getFullPath()));
-				reporter.displaySubtask(this, message);
-
-				JSPFileVisitor visitor = new JSPFileVisitor(reporter);
-				try {
-					// collect all jsp files for the project
-					project.accept(visitor, IResource.DEPTH_INFINITE);
-				}
-				catch (CoreException e) {
-					if (DEBUG)
-						e.printStackTrace();
-				}
-				IFile[] files = visitor.getFiles();
-				for (int i = 0; i < files.length && !reporter.isCancelled(); i++) {
-					if (shouldValidate(files[i]) && fragmentCheck(files[i])) {
-
-						message = new LocalizedMessage(IMessage.LOW_SEVERITY, files[i].getFullPath().toString().substring(1));
-						reporter.displaySubtask(this, message);
-
-						validateFile(files[i], reporter);
-					}
-					if (DEBUG)
-						System.out.println("validating: [" + files[i] + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			}
-		}
-	}
-
-	/**
-	 * Checks if file is a jsp fragment or not. If so, check if the fragment
-	 * should be validated or not.
-	 * 
-	 * @param file
-	 *            Assumes shouldValidate was already called on file so it
-	 *            should not be null and does exist
-	 * @return false if file is a fragment and it should not be validated,
-	 *         true otherwise
-	 */
-	private boolean fragmentCheck(IFile file) {
-		boolean shouldValidate = true;
-		// quick check to see if this is possibly a jsp fragment
-		if (getJSPFContentType().isAssociatedWith(file.getName())) {
-			// get preference for validate jsp fragments
-			boolean shouldValidateFragments = FragmentValidationTools.shouldValidateFragment(file);
-			/*
-			 * if jsp fragments should not be validated, check if file is
-			 * really jsp fragment
-			 */
-			if (!shouldValidateFragments) {
-				boolean isFragment = isFragment(file);
-				shouldValidate = !isFragment;
-			}
-		}
-		return shouldValidate;
-	}
-
-	/**
-	 * Returns JSP fragment content type
-	 * 
-	 * @return jspf content type
-	 */
-	private IContentType getJSPFContentType() {
-		if (fJSPFContentType == null) {
-			fJSPFContentType = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT);
-		}
-		return fJSPFContentType;
-	}
-
-	public ISchedulingRule getSchedulingRule(IValidationContext helper) {
-		if (helper instanceof IWorkbenchContext) {
-			/*
-			 * Use a single build rule when running batch validation.
-			 */
-			return ResourcesPlugin.getWorkspace().getRuleFactory().buildRule();
-		}
-		/*
-		 * For other kinds of validation, use no specific rule
-		 */
-		return null;
-	}
-
-	/**
-	 * Gets list of content types this visitor is interested in
-	 * 
-	 * @return All JSP-related content types
-	 */
-	private IContentType[] getValidContentTypes() {
-		if (fContentTypes == null) {
-			// currently "hard-coded" to be jsp & jspf
-			fContentTypes = new IContentType[]{Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP), Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT)};
-			if (fAdditionalContentTypesIDs != null) {
-				List allTypes = new ArrayList(Arrays.asList(fContentTypes));
-				for (int i = 0; i < fAdditionalContentTypesIDs.length; i++) {
-					IContentType type = Platform.getContentTypeManager().getContentType(fAdditionalContentTypesIDs[i]);
-					if (type != null) {
-						allTypes.add(type);
-					}
-				}
-				fContentTypes = (IContentType[]) allTypes.toArray(new IContentType[allTypes.size()]);
-			}
-		}
-		return fContentTypes;
-	}
-
-	/**
-	 * Determines if file is jsp fragment or not (does a deep, indepth check,
-	 * looking into contents of file)
-	 * 
-	 * @param file
-	 *            assumes file is not null and exists
-	 * @return true if file is jsp fragment, false otherwise
-	 */
-	private boolean isFragment(IFile file) {
-		boolean isFragment = false;
-		InputStream is = null;
-		try {
-			IContentDescription contentDescription = file.getContentDescription();
-			// it can be null
-			if (contentDescription == null) {
-				is = file.getContents();
-				contentDescription = Platform.getContentTypeManager().getDescriptionFor(is, file.getName(), new QualifiedName[]{IContentDescription.CHARSET});
-			}
-			if (contentDescription != null) {
-				String fileCtId = contentDescription.getContentType().getId();
-				isFragment = (fileCtId != null && ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT.equals(fileCtId));
-			}
-		}
-		catch (IOException e) {
-			// ignore, assume it's invalid JSP
-		}
-		catch (CoreException e) {
-			// ignore, assume it's invalid JSP
-		}
-		finally {
-			/*
-			 * must close input stream in case others need it
-			 * (IFile.getContents() requirement as well)
-			 */
-			if (is != null)
-				try {
-					is.close();
-				}
-				catch (Exception e) {
-					// not sure how to recover at this point
-				}
-		}
-		return isFragment;
-	}
-
-	/**
-	 * Checks if fileName is some type of JSP (including JSP fragments)
-	 * 
-	 * @param fileName
-	 * @return true if filename indicates some type of JSP, false otherwise
-	 */
-	private boolean isJSPType(String fileName) {
-		boolean valid = false;
-
-		IContentType[] types = getValidContentTypes();
-		int i = 0;
-		while (i < types.length && !valid) {
-			valid = types[i].isAssociatedWith(fileName);
-			++i;
-		}
-		return valid;
-	}
-
-	private void performValidation(IFile f, IReporter reporter, IStructuredModel model) {
-		if (!reporter.isCancelled())
-			fJSPJavaValidator.performValidation(f, reporter, model);
-		if (!reporter.isCancelled())
-			fJSPDirectiveValidator.performValidation(f, reporter, model.getStructuredDocument());
-		if (!reporter.isCancelled())
-			fJSPELValidator.performValidation(f, reporter, model.getStructuredDocument());
-		if (!reporter.isCancelled())
-			fJSPActionValidator.performValidation(f, reporter, model);
-	}
-
-	/**
-	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
-	 *      java.lang.String, java.lang.Object)
-	 */
-	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
-		fAdditionalContentTypesIDs = new String[0];
-		if (data != null) {
-			if (data instanceof String && data.toString().length() > 0) {
-				fAdditionalContentTypesIDs = StringUtils.unpack(data.toString());
-			}
-		}
-	}
-
-	private boolean shouldValidate(IFile file) {
-		IResource resource = file;
-		do {
-			if (resource.isDerived() || resource.isTeamPrivateMember() || !resource.isAccessible() || resource.getName().charAt(0) == '.') {
-				return false;
-			}
-			resource = resource.getParent();
-		}
-		while ((resource.getType() & IResource.PROJECT) == 0);
-		return true;
-	}
-
-	public void validate(IValidationContext helper, IReporter reporter) throws ValidationException {
-		doValidate(helper, reporter);
-	}
-
-	/**
-	 * Validate one file. It's assumed that the file has JSP content type.
-	 * 
-	 * @param f
-	 * @param reporter
-	 */
-	void validateFile(IFile f, IReporter reporter) {
-		try {
-			f.refreshLocal(IResource.DEPTH_ZERO, new NullProgressMonitor());
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		IStructuredModel model = null;
-		try {
-			// get JSP model on behalf of all JSP validators
-			model = StructuredModelManager.getModelManager().getModelForRead(f);
-			if (!reporter.isCancelled() && model != null) {
-				reporter.removeAllMessages(this, f);
-				performValidation(f, reporter, model);
-			}
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (model != null)
-				model.releaseFromRead();
-		}
-	}
-
-	public IStatus validateInJob(final IValidationContext helper, final IReporter reporter) throws ValidationException {
-		Job currentJob = Job.getJobManager().currentJob();
-		ISchedulingRule rule = null;
-		if (currentJob != null) {
-			rule = currentJob.getRule();
-		}
-		IWorkspaceRunnable validationRunnable = new IWorkspaceRunnable() {
-			public void run(IProgressMonitor monitor) throws CoreException {
-				try {
-					doValidate(helper, reporter);
-				}
-				catch (ValidationException e) {
-					throw new CoreException(new Status(IStatus.ERROR, PLUGIN_ID_JSP_CORE, 0, PLUGIN_ID_JSP_CORE, e));
-				}
-			}
-		};
-		try {
-			JavaCore.run(validationRunnable, rule, new NullProgressMonitor());
-		}
-		catch (CoreException e) {
-			if (e.getCause() instanceof ValidationException) {
-				throw (ValidationException) e.getCause();
-			}
-			throw new ValidationException(new LocalizedMessage(IMessage.ERROR_AND_WARNING, e.getMessage()), e);
-		}
-		return Status.OK_STATUS;
-	}
-
-	public ValidationResult validate(final IResource resource, int kind, ValidationState state, IProgressMonitor monitor) {
-		if (resource.getType() != IResource.FILE)
-			return null;
-		final ValidationResult result = new ValidationResult();
-		final IReporter reporter = result.getReporter(monitor);
-		fDependsOn = new HashSet();
-		
-		// List relevant JSP 2.0 preludes/codas as dependencies
-		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
-		IFile descriptor = DeploymentDescriptorPropertyCache.getInstance().getWebXML(resource.getFullPath());
-		if (descriptor != null) {
-			addDependsOn(descriptor);
-		}
-		PropertyGroup[] propertyGroups = DeploymentDescriptorPropertyCache.getInstance().getPropertyGroups(resource.getFullPath());
-		for (int j = 0; j < propertyGroups.length; j++) {
-			IPath[] preludes = propertyGroups[j].getIncludePrelude();
-			for (int i = 0; i < preludes.length; i++) {
-				addDependsOn(workspaceRoot.getFile(preludes[i]));
-			}
-			IPath[] codas = propertyGroups[j].getIncludeCoda();
-			for (int i = 0; i < codas.length; i++) {
-				addDependsOn(workspaceRoot.getFile(codas[i]));
-			}
-		}
-		
-		IWorkspaceRunnable validationRunnable = new IWorkspaceRunnable() {
-			public void run(IProgressMonitor monitor) throws CoreException {
-				if (fragmentCheck((IFile) resource)) {
-					validateFile((IFile) resource, reporter);
-				}
-				result.setDependsOn((IResource[]) fDependsOn.toArray(new IResource[fDependsOn.size()]));
-				fDependsOn.clear();
-			}
-		};
-		Job currentJob = Job.getJobManager().currentJob();
-		ISchedulingRule rule = null;
-		if (currentJob != null) {
-			rule = currentJob.getRule();
-		}
-		try {
-			JavaCore.run(validationRunnable, rule, new NullProgressMonitor());
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPContentValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPContentValidator.java
deleted file mode 100644
index 79b332e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPContentValidator.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.io.IOException;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.wst.html.core.internal.document.HTMLDocumentTypeConstants;
-import org.eclipse.wst.html.core.internal.validate.HTMLValidationAdapterFactory;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.validate.ValidationAdapter;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.xml.core.internal.document.DocumentTypeAdapter;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-
-/**
- * This validator validates the contents of the content type of the JSP, like
- * the HTML regions in a JSP with content type="text/html"
- */
-public class JSPContentValidator extends JSPValidator {
-	private IContentType fJSPFContentType;
-
-	/*
-	 * Copied from HTMLValidator
-	 */
-	private boolean hasHTMLFeature(IDOMDocument document) {
-		DocumentTypeAdapter adapter = (DocumentTypeAdapter) document.getAdapterFor(DocumentTypeAdapter.class);
-		if (adapter == null)
-			return false;
-		return adapter.hasFeature(HTMLDocumentTypeConstants.HTML);
-	}
-
-	/**
-	 * Returns JSP fragment content type
-	 * 
-	 * @return jspf content type
-	 */
-	private IContentType getJSPFContentType() {
-		if (fJSPFContentType == null) {
-			fJSPFContentType = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT);
-		}
-		return fJSPFContentType;
-	}
-
-
-	private boolean fragmentCheck(IFile file) {
-		boolean shouldValidate = true;
-		// quick check to see if this is possibly a jsp fragment
-		if (getJSPFContentType().isAssociatedWith(file.getName())) {
-			// get preference for validate jsp fragments
-			shouldValidate = FragmentValidationTools.shouldValidateFragment(file);
-		}
-		return shouldValidate;
-	}
-
-	/*
-	 * Copied from HTMLValidator
-	 */
-	private HTMLValidationReporter getReporter(IReporter reporter, IFile file, IDOMModel model) {
-		return new HTMLValidationReporter(this, reporter, file, model);
-	}
-
-	/*
-	 * Mostly copied from HTMLValidator
-	 */
-	private void validate(IReporter reporter, IFile file, IDOMModel model) {
-		if (file == null || model == null)
-			return; // error
-		IDOMDocument document = model.getDocument();
-		if (document == null)
-			return; // error
-
-		// This validator currently only handles validating HTML content in
-		// JSP
-		if (hasHTMLFeature(document)) {
-			INodeAdapterFactory factory = HTMLValidationAdapterFactory.getInstance();
-			ValidationAdapter adapter = (ValidationAdapter) factory.adapt(document);
-			if (adapter == null)
-				return; // error
-
-			HTMLValidationReporter rep = getReporter(reporter, file, model);
-			rep.clear();
-			adapter.setReporter(rep);
-			adapter.validate(document);
-		}
-	}
-
-	protected void validateFile(IFile f, IReporter reporter) {
-		IStructuredModel model = null;
-		try {
-			model = StructuredModelManager.getModelManager().getModelForRead(f);
-			if (!reporter.isCancelled() && model instanceof IDOMModel) {
-				reporter.removeAllMessages(this, f);
-				if (fragmentCheck(f)) {
-					validate(reporter, f, (IDOMModel) model);
-				}
-			}
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (model != null)
-				model.releaseFromRead();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java
deleted file mode 100644
index c0890d7..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java
+++ /dev/null
@@ -1,633 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceVisitor;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.internal.util.FacetModuleCoreSupport;
-import org.eclipse.jst.jsp.core.taglib.ITLDRecord;
-import org.eclipse.jst.jsp.core.taglib.ITagDirRecord;
-import org.eclipse.jst.jsp.core.taglib.ITaglibRecord;
-import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.html.core.internal.contentmodel.JSP20Namespace;
-import org.eclipse.wst.html.core.internal.preferences.HTMLCorePreferenceNames;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.validate.ValidationMessage;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidator;
-
-import com.ibm.icu.text.Collator;
-
-/**
- * Checks for: - duplicate taglib prefix values and reserved taglib prefix
- * values in the same file
- */
-public class JSPDirectiveValidator extends JSPValidator {
-	/**
-	 * 
-	 */
-	private static final String PREFERENCE_NODE_QUALIFIER = JSPCorePlugin.getDefault().getBundle().getSymbolicName();
-
-	private static Collator collator = Collator.getInstance(Locale.US);
-
-	private static final boolean DEBUG = Boolean.valueOf(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspvalidator")).booleanValue(); //$NON-NLS-1$
-
-	private IValidator fMessageOriginator;
-	private IEclipsePreferences fPreferences = null;
-
-	private IPreferencesService fPreferencesService = null;
-	private HashMap fPrefixValueRegionToDocumentRegionMap = new HashMap();
-	private IJavaProject fProject = null;
-	private HashMap fReservedPrefixes = new HashMap();
-	private IScopeContext[] fScopes = null;
-	private int fSeverityIncludeFileMissing = -1;
-	private int fSeverityIncludeFileNotSpecified = -1;
-	private int fSeveritySuperClassNotFound = -1;
-	private int fSeverityTagdirUnresolvableURI = -1;
-	private int fSeverityTaglibDuplicatePrefixWithDifferentURIs = -1;
-
-	private int fSeverityTaglibDuplicatePrefixWithSameURIs = -1;
-	private int fSeverityTaglibMissingPrefix = -1;
-
-	private int fSeverityTaglibMissingURI = -1;
-
-
-	private int fSeverityTaglibUnresolvableURI = -1;
-
-	private HashMap fTaglibPrefixesInUse = new HashMap();
-
-	public JSPDirectiveValidator() {
-		initReservedPrefixes();
-		fMessageOriginator = this;
-	}
-
-	public JSPDirectiveValidator(IValidator validator) {
-		initReservedPrefixes();
-		this.fMessageOriginator = validator;
-	}
-
-	/**
-	 * Record that the currently validating resource depends on the given
-	 * file. Only possible during batch (not source) validation.
-	 * 
-	 * @param file
-	 */
-	private void addDependsOn(IResource file) {
-		if (fMessageOriginator instanceof JSPBatchValidator) {
-			((JSPBatchValidator) fMessageOriginator).addDependsOn(file);
-		}
-	}
-
-	public void cleanup(IReporter reporter) {
-		super.cleanup(reporter);
-		fTaglibPrefixesInUse.clear();
-		fPrefixValueRegionToDocumentRegionMap.clear();
-	}
-
-	private void collectTaglibPrefix(IStructuredDocumentRegion documentRegion, ITextRegion valueRegion, String taglibPrefix) {
-		fPrefixValueRegionToDocumentRegionMap.put(valueRegion, documentRegion);
-
-		Object o = fTaglibPrefixesInUse.get(taglibPrefix);
-		if (o == null) {
-			// prefix doesn't exist, remember it
-			fTaglibPrefixesInUse.put(taglibPrefix, valueRegion);
-		}
-		else {
-			List regionList = null;
-			// already a List
-			if (o instanceof List) {
-				regionList = (List) o;
-			}
-			/*
-			 * a single value region, create a new List and add previous
-			 * valueRegion
-			 */
-			else {
-				regionList = new ArrayList();
-				regionList.add(o);
-				fTaglibPrefixesInUse.put(taglibPrefix, regionList);
-			}
-			regionList.add(valueRegion);
-		}
-	}
-
-	int getMessageSeverity(String key) {
-		int sev = fPreferencesService.getInt(PREFERENCE_NODE_QUALIFIER, key, IMessage.NORMAL_SEVERITY, fScopes);
-		switch (sev) {
-			case ValidationMessage.ERROR :
-				return IMessage.HIGH_SEVERITY;
-			case ValidationMessage.WARNING :
-				return IMessage.NORMAL_SEVERITY;
-			case ValidationMessage.INFORMATION :
-				return IMessage.LOW_SEVERITY;
-			case ValidationMessage.IGNORE :
-				return ValidationMessage.IGNORE;
-		}
-		return IMessage.NORMAL_SEVERITY;
-	}
-	private void initReservedPrefixes() {
-		fReservedPrefixes.put("jsp", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		fReservedPrefixes.put("jspx", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		fReservedPrefixes.put("java", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		fReservedPrefixes.put("javax", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-		fReservedPrefixes.put("servlet", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-		fReservedPrefixes.put("sun", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-		fReservedPrefixes.put("sunw", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-	}
-
-	private boolean isReservedTaglibPrefix(String name) {
-		return fReservedPrefixes.get(name) != null;
-	}
-	
-	private void loadPreferences(IFile file) {
-		fScopes = new IScopeContext[]{new InstanceScope(), new DefaultScope()};
-
-		fPreferencesService = Platform.getPreferencesService();
-		if (file != null && file.isAccessible()) {
-			ProjectScope projectScope = new ProjectScope(file.getProject());
-			if (projectScope.getNode(PREFERENCE_NODE_QUALIFIER).getBoolean(JSPCorePreferenceNames.VALIDATION_USE_PROJECT_SETTINGS, false)) {
-				fScopes = new IScopeContext[]{projectScope, new InstanceScope(), new DefaultScope()};
-			}
-		}
-
-		fSeverityIncludeFileMissing = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_INCLUDE_FILE_NOT_FOUND);
-		fSeverityIncludeFileNotSpecified = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_INCLUDE_NO_FILE_SPECIFIED);
-		fSeverityTaglibDuplicatePrefixWithDifferentURIs = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_DUPLICATE_PREFIXES_DIFFERENT_URIS);
-		fSeverityTaglibDuplicatePrefixWithSameURIs = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_DUPLICATE_PREFIXES_SAME_URIS);
-		fSeverityTaglibMissingPrefix = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_MISSING_PREFIX);
-		fSeverityTaglibMissingURI = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_MISSING_URI_OR_TAGDIR);
-		fSeverityTaglibUnresolvableURI = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_UNRESOLVABLE_URI_OR_TAGDIR);
-		fSeverityTagdirUnresolvableURI = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_TAGLIB_UNRESOLVABLE_URI_OR_TAGDIR);
-		fSeveritySuperClassNotFound = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_DIRECTIVE_PAGE_SUPERCLASS_NOT_FOUND);
-
-	}
-	
-	protected void performValidation(IFile f, IReporter reporter, IStructuredDocument sDoc) {
-		loadPreferences(f);
-		
-		
-		setProject(f.getProject());
-		/*
-		 * when validating an entire file need to clear dupes or else you're
-		 * comparing between files
-		 */
-		fPrefixValueRegionToDocumentRegionMap.clear();
-		fTaglibPrefixesInUse.clear();
-
-		// iterate all document regions
-		IStructuredDocumentRegion region = sDoc.getFirstStructuredDocumentRegion();
-		while (region != null && !reporter.isCancelled()) {
-			// only checking directives
-			if (region.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-				processDirective(reporter, f, sDoc, region);
-			}
-			region = region.getNext();
-		}
-
-		if (!reporter.isCancelled()) {
-			reportTaglibDuplicatePrefixes(f, reporter, sDoc);
-		}
-
-		fPrefixValueRegionToDocumentRegionMap.clear();
-		fTaglibPrefixesInUse.clear();
-		setProject(null);
-		unloadPreferences();
-	}
-
-	private void processDirective(IReporter reporter, IFile file, IStructuredDocument sDoc, IStructuredDocumentRegion documentRegion) {
-		String directiveName = getDirectiveName(documentRegion);
-		// we only care about taglib directive
-		if (directiveName.equals("taglib")) { //$NON-NLS-1$
-			processTaglibDirective(reporter, file, sDoc, documentRegion);
-		}
-		else if (directiveName.equals("include")) { //$NON-NLS-1$
-			processIncludeDirective(reporter, file, sDoc, documentRegion);
-		}
-		else if (directiveName.equals("page")) { //$NON-NLS-1$
-			processPageDirective(reporter, file, sDoc, documentRegion);
-		}
-	}
-
-	private void processIncludeDirective(IReporter reporter, IFile file, IStructuredDocument sDoc, IStructuredDocumentRegion documentRegion) {
-		ITextRegion fileValueRegion = getAttributeValueRegion(documentRegion, JSP11Namespace.ATTR_NAME_FILE);
-		if (fileValueRegion != null) {
-			// file specified
-			String fileValue = documentRegion.getText(fileValueRegion);
-			fileValue = StringUtils.stripQuotes(fileValue);
-
-			if (fileValue.length() == 0 && fSeverityIncludeFileNotSpecified != ValidationMessage.IGNORE) {
-				// file value is specified but empty
-				String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_3, JSP11Namespace.ATTR_NAME_FILE);
-				LocalizedMessage message = new LocalizedMessage(fSeverityIncludeFileNotSpecified, msgText, file);
-				int start = documentRegion.getStartOffset(fileValueRegion);
-				int length = fileValueRegion.getTextLength();
-				int lineNo = sDoc.getLineOfOffset(start);
-				message.setLineNo(lineNo + 1);
-				message.setOffset(start);
-				message.setLength(length);
-
-				reporter.addMessage(fMessageOriginator, message);
-			}
-			else {
-				IPath testPath = FacetModuleCoreSupport.resolve(file.getFullPath(), fileValue);
-				if (testPath.segmentCount() > 1) {
-					IFile testFile = file.getWorkspace().getRoot().getFile(testPath);
-					addDependsOn(testFile);
-					if (!testFile.isAccessible()) {
-						if (fSeverityIncludeFileMissing != ValidationMessage.IGNORE) {
-							// File not found
-							String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_4, new String[]{fileValue, testPath.toString()});
-							LocalizedMessage message = new LocalizedMessage(fSeverityIncludeFileMissing, msgText, file);
-							int start = documentRegion.getStartOffset(fileValueRegion);
-							int length = fileValueRegion.getTextLength();
-							int lineNo = sDoc.getLineOfOffset(start);
-							message.setLineNo(lineNo + 1);
-							message.setOffset(start);
-							message.setLength(length);
-
-							reporter.addMessage(fMessageOriginator, message);
-						}
-					}
-				}
-			}
-		}
-		else if (fSeverityIncludeFileNotSpecified != ValidationMessage.IGNORE) {
-			// file is not specified at all
-			String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_3, JSP11Namespace.ATTR_NAME_FILE);
-			LocalizedMessage message = new LocalizedMessage(fSeverityIncludeFileNotSpecified, msgText, file);
-			int start = documentRegion.getStartOffset();
-			int length = documentRegion.getTextLength();
-			int lineNo = sDoc.getLineOfOffset(start);
-			message.setLineNo(lineNo + 1);
-			message.setOffset(start);
-			message.setLength(length);
-
-			reporter.addMessage(fMessageOriginator, message);
-		}
-	}
-
-	/**
-	 * @param reporter
-	 * @param file
-	 * @param doc
-	 * @param documentRegion
-	 */
-	private void processPageDirective(IReporter reporter, IFile file, IStructuredDocument doc, IStructuredDocumentRegion documentRegion) {
-		ITextRegion superclassValueRegion = getAttributeValueRegion(documentRegion, JSP11Namespace.ATTR_NAME_EXTENDS);
-		if (superclassValueRegion != null) {
-			// file specified
-			String superclassName = documentRegion.getText(superclassValueRegion);
-			superclassName = StringUtils.stripQuotes(superclassName);
-
-			IType superClass = null;
-			if (superclassName != null && superclassName.length() > 0 && fProject != null && fProject.exists()) {
-				try {
-					superClass = fProject.findType(superclassName.trim(), new NullProgressMonitor());
-				}
-				catch (JavaModelException e) {
-					Logger.logException(e);
-				}
-			}
-
-			if (superClass == null && fSeveritySuperClassNotFound != ValidationMessage.IGNORE) {
-				// superclass not found
-				String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_8, superclassName);
-				LocalizedMessage message = new LocalizedMessage(fSeveritySuperClassNotFound, msgText, file);
-				int start = documentRegion.getStartOffset(superclassValueRegion);
-				int length = superclassValueRegion.getTextLength();
-				int lineNo = doc.getLineOfOffset(start);
-				message.setLineNo(lineNo + 1);
-				message.setOffset(start);
-				message.setLength(length);
-
-				reporter.addMessage(fMessageOriginator, message);
-			}
-		}
-	}
-
-	private void processTaglibDirective(IReporter reporter, IFile file, IStructuredDocument sDoc, IStructuredDocumentRegion documentRegion) {
-		ITextRegion prefixValueRegion = null;
-		ITextRegion uriValueRegion = getAttributeValueRegion(documentRegion, JSP11Namespace.ATTR_NAME_URI);
-		ITextRegion tagdirValueRegion = getAttributeValueRegion(documentRegion, JSP20Namespace.ATTR_NAME_TAGDIR);
-		if (uriValueRegion != null) {
-			// URI is specified
-			String uri = documentRegion.getText(uriValueRegion);
-
-			if (file != null) {
-				uri = StringUtils.stripQuotes(uri);
-				if (uri.length() > 0) {
-					ITaglibRecord reference = TaglibIndex.resolve(file.getFullPath().toString(), uri, false);
-					if (reference != null) {
-						switch (reference.getRecordType()) {
-							case (ITaglibRecord.TLD) : {
-								ITLDRecord record = (ITLDRecord) reference;
-								IResource tldfile = ResourcesPlugin.getWorkspace().getRoot().getFile(record.getPath());
-								addDependsOn(tldfile);
-							}
-								break;
-							case (ITaglibRecord.TAGDIR) : {
-								ITagDirRecord record = (ITagDirRecord) reference;
-								IPath path = record.getPath();
-								IResource found = ResourcesPlugin.getWorkspace().getRoot().findMember(path, false);
-
-								try {
-									found.accept(new IResourceVisitor() {
-										public boolean visit(IResource resource) throws CoreException {
-											if (resource.getType() == IResource.FILE) {
-												addDependsOn(resource);
-											}
-											return true;
-										}
-									});
-								}
-								catch (CoreException e) {
-									Logger.logException(e);
-								}
-							}
-								break;
-						}
-					}
-					if (reference == null && fSeverityTaglibUnresolvableURI != ValidationMessage.IGNORE) {
-						// URI specified but does not resolve
-						String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_1, uri);
-						LocalizedMessage message = new LocalizedMessage(fSeverityTaglibUnresolvableURI, msgText, file);
-						int start = documentRegion.getStartOffset(uriValueRegion);
-						int length = uriValueRegion.getTextLength();
-						int lineNo = sDoc.getLineOfOffset(start);
-						message.setLineNo(lineNo);
-						message.setOffset(start);
-						message.setLength(length);
-
-						message.setAttribute("PROBLEM_ID", new Integer(611));
-
-						reporter.addMessage(fMessageOriginator, message);
-					}
-				}
-				else if (fSeverityTaglibMissingURI != ValidationMessage.IGNORE) {
-					// URI specified but empty string
-					String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_3, JSP11Namespace.ATTR_NAME_URI);
-					LocalizedMessage message = new LocalizedMessage(fSeverityTaglibMissingURI, msgText, file);
-					int start = documentRegion.getStartOffset(uriValueRegion);
-					int length = uriValueRegion.getTextLength();
-					int lineNo = sDoc.getLineOfOffset(start);
-					message.setLineNo(lineNo + 1);
-					message.setOffset(start);
-					message.setLength(length);
-
-					reporter.addMessage(fMessageOriginator, message);
-				}
-			}
-		}
-		else if (tagdirValueRegion != null) {
-			// URI is specified
-			String tagdir = documentRegion.getText(tagdirValueRegion);
-
-			if (file != null) {
-				tagdir = StringUtils.stripQuotes(tagdir);
-				if (tagdir.length() <= 0 && fSeverityTaglibMissingURI != ValidationMessage.IGNORE) {
-					// tagdir specified but empty string
-					String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_3, JSP20Namespace.ATTR_NAME_TAGDIR);
-					LocalizedMessage message = new LocalizedMessage(fSeverityTaglibMissingURI, msgText, file);
-					int start = documentRegion.getStartOffset(tagdirValueRegion);
-					int length = tagdirValueRegion.getTextLength();
-					int lineNo = sDoc.getLineOfOffset(start);
-					message.setLineNo(lineNo + 1);
-					message.setOffset(start);
-					message.setLength(length);
-
-					reporter.addMessage(fMessageOriginator, message);
-				}
-				else if (TaglibIndex.resolve(file.getFullPath().toString(), tagdir, false) == null && fSeverityTagdirUnresolvableURI != ValidationMessage.IGNORE) {
-					// URI specified but does not resolve
-					String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_1, tagdir);
-					LocalizedMessage message = new LocalizedMessage(fSeverityTaglibUnresolvableURI, msgText, file);
-					int start = documentRegion.getStartOffset(tagdirValueRegion);
-					int length = tagdirValueRegion.getTextLength();
-					int lineNo = sDoc.getLineOfOffset(start);
-					message.setLineNo(lineNo + 1);
-					message.setOffset(start);
-					message.setLength(length);
-
-					reporter.addMessage(fMessageOriginator, message);
-				}
-			}
-		}
-		else if (fSeverityTaglibMissingURI != ValidationMessage.IGNORE) {
-			// URI not specified or empty string
-			String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_7, new String[]{JSP20Namespace.ATTR_NAME_TAGDIR, JSP11Namespace.ATTR_NAME_URI});
-			LocalizedMessage message = new LocalizedMessage(fSeverityTaglibMissingURI, msgText, file);
-			int start = documentRegion.getStartOffset();
-			int length = documentRegion.getTextLength();
-			int lineNo = sDoc.getLineOfOffset(start);
-			message.setLineNo(lineNo + 1);
-			message.setOffset(start);
-			message.setLength(length);
-
-			reporter.addMessage(fMessageOriginator, message);
-		}
-
-		prefixValueRegion = getAttributeValueRegion(documentRegion, JSP11Namespace.ATTR_NAME_PREFIX);
-		if (prefixValueRegion != null) {
-			// prefix specified
-			String taglibPrefix = documentRegion.getText(prefixValueRegion);
-			taglibPrefix = StringUtils.stripQuotes(taglibPrefix);
-
-			collectTaglibPrefix(documentRegion, prefixValueRegion, taglibPrefix);
-
-			if (isReservedTaglibPrefix(taglibPrefix)) {
-				// prefix is a reserved prefix
-				String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_0, taglibPrefix);
-				int sev = IMessage.HIGH_SEVERITY;
-				LocalizedMessage message = (file == null ? new LocalizedMessage(sev, msgText) : new LocalizedMessage(sev, msgText, file));
-				int start = documentRegion.getStartOffset(prefixValueRegion);
-				int length = prefixValueRegion.getTextLength();
-				int lineNo = sDoc.getLineOfOffset(start);
-				message.setLineNo(lineNo + 1);
-				message.setOffset(start);
-				message.setLength(length);
-
-				reporter.addMessage(fMessageOriginator, message);
-			}
-			if (taglibPrefix.length() == 0 && fSeverityTaglibMissingPrefix != ValidationMessage.IGNORE) {
-				// prefix is specified but empty
-				String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_3, JSP11Namespace.ATTR_NAME_PREFIX);
-				LocalizedMessage message = new LocalizedMessage(fSeverityTaglibMissingPrefix, msgText, file);
-				int start = documentRegion.getStartOffset(prefixValueRegion);
-				int length = prefixValueRegion.getTextLength();
-				int lineNo = sDoc.getLineOfOffset(start);
-				message.setLineNo(lineNo + 1);
-				message.setOffset(start);
-				message.setLength(length);
-
-				reporter.addMessage(fMessageOriginator, message);
-			}
-		}
-		else if (fSeverityTaglibMissingPrefix != ValidationMessage.IGNORE) {
-			// prefix is not specified
-			String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_3, JSP11Namespace.ATTR_NAME_PREFIX);
-			LocalizedMessage message = new LocalizedMessage(fSeverityTaglibMissingPrefix, msgText, file);
-			int start = documentRegion.getStartOffset();
-			int length = documentRegion.getTextLength();
-			int lineNo = sDoc.getLineOfOffset(start);
-			message.setLineNo(lineNo + 1);
-			message.setOffset(start);
-			message.setLength(length);
-
-			reporter.addMessage(fMessageOriginator, message);
-		}
-	}
-
-	private void reportTaglibDuplicatePrefixes(IFile file, IReporter reporter, IStructuredDocument document) {
-		if (fSeverityTaglibDuplicatePrefixWithDifferentURIs == ValidationMessage.IGNORE && fSeverityTaglibDuplicatePrefixWithSameURIs == ValidationMessage.IGNORE)
-			return;
-
-		String[] prefixes = (String[]) fTaglibPrefixesInUse.keySet().toArray(new String[0]);
-		for (int prefixNumber = 0; prefixNumber < prefixes.length; prefixNumber++) {
-			int severity = fSeverityTaglibDuplicatePrefixWithSameURIs;
-
-			Object o = fTaglibPrefixesInUse.get(prefixes[prefixNumber]);
-			/*
-			 * Only care if it's a List (because there was more than one
-			 * directive with that prefix) and if we're supposed to report
-			 * duplicates
-			 */
-			if (o instanceof List) {
-				List valueRegions = (List) o;
-				String uri = null;
-				for (int regionNumber = 0; regionNumber < valueRegions.size(); regionNumber++) {
-					IStructuredDocumentRegion documentRegion = (IStructuredDocumentRegion) fPrefixValueRegionToDocumentRegionMap.get(valueRegions.get(regionNumber));
-					ITextRegion uriValueRegion = getAttributeValueRegion(documentRegion, JSP11Namespace.ATTR_NAME_URI);
-					if (uriValueRegion == null) {
-						uriValueRegion = getAttributeValueRegion(documentRegion, JSP20Namespace.ATTR_NAME_TAGDIR);
-					}
-					if (uriValueRegion != null) {
-						String uri2 = StringUtils.stripQuotes(documentRegion.getText(uriValueRegion));
-						if (uri == null) {
-							uri = uri2;
-						}
-						else {
-							if (collator.compare(uri, uri2) != 0) {
-								severity = fSeverityTaglibDuplicatePrefixWithDifferentURIs;
-							}
-						}
-					}
-				}
-
-				if (severity != ValidationMessage.IGNORE) {
-					String msgText = NLS.bind(JSPCoreMessages.JSPDirectiveValidator_2, prefixes[prefixNumber]); //$NON-NLS-2$ //$NON-NLS-1$
-
-					// Report an error in all directives using this prefix
-					for (int regionNumber = 0; regionNumber < valueRegions.size(); regionNumber++) {
-
-						ITextRegion valueRegion = (ITextRegion) valueRegions.get(regionNumber);
-						IStructuredDocumentRegion documentRegion = (IStructuredDocumentRegion) fPrefixValueRegionToDocumentRegionMap.get(valueRegion);
-						LocalizedMessage message = (file == null ? new LocalizedMessage(severity, msgText) : new LocalizedMessage(severity, msgText, file));
-
-						// if there's a message, there was an error found
-						int start = documentRegion.getStartOffset(valueRegion);
-						int length = valueRegion.getTextLength();
-						int lineNo = document.getLineOfOffset(start);
-						message.setLineNo(lineNo + 1);
-						message.setOffset(start);
-						message.setLength(length);
-
-						reporter.addMessage(fMessageOriginator, message);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * @param project
-	 */
-	private void setProject(IProject project) {
-		boolean useProject = false;
-		if (project != null) {
-			fProject = JavaCore.create(project);
-			fPreferences = new ProjectScope(fProject.getProject()).getNode(PREFERENCE_NODE_QUALIFIER);
-			useProject = fPreferences.getBoolean(HTMLCorePreferenceNames.USE_PROJECT_SETTINGS, false);
-		}
-		else {
-			fProject = null;
-		}
-
-		if (!useProject) {
-			fPreferences = new InstanceScope().getNode(PREFERENCE_NODE_QUALIFIER);
-		}
-	}
-
-	private void unloadPreferences() {
-		fPreferencesService = null;
-		fScopes = null;
-	}
-
-	/**
-	 * batch validation call
-	 */
-	protected void validateFile(IFile f, IReporter reporter) {
-		if (DEBUG) {
-			Logger.log(Logger.INFO, getClass().getName() + " validating: " + f); //$NON-NLS-1$
-		}
-
-		IStructuredModel sModel = null;
-		try {
-			sModel = StructuredModelManager.getModelManager().getModelForRead(f);
-			if (sModel != null && !reporter.isCancelled()) {
-				performValidation(f, reporter, sModel.getStructuredDocument());
-			}
-		}
-		catch (Exception e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (sModel != null)
-				sModel.releaseFromRead();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPELValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPELValidator.java
deleted file mode 100644
index cf84532..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPELValidator.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*******************************************************************************
- Copyright (c) 2005, 2008 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.java.jspel.JSPELParser;
-import org.eclipse.jst.jsp.core.internal.java.jspel.ParseException;
-import org.eclipse.jst.jsp.core.internal.java.jspel.Token;
-import org.eclipse.jst.jsp.core.internal.java.jspel.TokenMgrError;
-import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
-import org.eclipse.wst.sse.core.internal.validate.ValidationMessage;
-import org.eclipse.wst.validation.internal.core.Message;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidator;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-
-public class JSPELValidator extends JSPValidator {
-	private static final boolean DEBUG = Boolean.valueOf(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspvalidator")).booleanValue(); //$NON-NLS-1$		
-	private static final String PREFERENCE_NODE_QUALIFIER = JSPCorePlugin.getDefault().getBundle().getSymbolicName();
-	private static final int MAX_REGIONS = 1000;
-	
-	private IValidator fMessageOriginator;
-
-	public JSPELValidator() {
-		this.fMessageOriginator = this;
-	}
-
-	public JSPELValidator(IValidator validator) {
-		this.fMessageOriginator = validator;
-	}
-
-	protected void validateFile(IFile file, IReporter reporter) {
-		if (DEBUG) {
-			Logger.log(Logger.INFO, getClass().getName() + " validating: " + file); //$NON-NLS-1$
-		}
-
-		IStructuredModel model = null;
-		try {
-			model = StructuredModelManager.getModelManager().getModelForRead(file);
-			if (!reporter.isCancelled() && model != null) {
-				performValidation(file, reporter, model.getStructuredDocument());
-			}
-		}
-		catch (Exception e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (null != model)
-				model.releaseFromRead();
-		}
-	}
-
-	private IPreferencesService fPreferencesService = null;
-	private IScopeContext[] fScopes = null;
-
-	private void loadPreferences(IFile file) {
-		fScopes = new IScopeContext[]{new InstanceScope(), new DefaultScope()};
-
-		fPreferencesService = Platform.getPreferencesService();
-		if (file != null && file.isAccessible()) {
-			ProjectScope projectScope = new ProjectScope(file.getProject());
-			if (projectScope.getNode(PREFERENCE_NODE_QUALIFIER).getBoolean(JSPCorePreferenceNames.VALIDATION_USE_PROJECT_SETTINGS, false)) {
-				fScopes = new IScopeContext[]{projectScope, new InstanceScope(), new DefaultScope()};
-			}
-		}
-	}
-	
-	int getMessageSeverity(String key) {
-		int sev = fPreferencesService.getInt(PREFERENCE_NODE_QUALIFIER, key, IMessage.NORMAL_SEVERITY, fScopes);
-		switch (sev) {
-			case ValidationMessage.ERROR :
-				return IMessage.HIGH_SEVERITY;
-			case ValidationMessage.WARNING :
-				return IMessage.NORMAL_SEVERITY;
-			case ValidationMessage.INFORMATION :
-				return IMessage.LOW_SEVERITY;
-			case ValidationMessage.IGNORE :
-				return ValidationMessage.IGNORE;
-		}
-		return IMessage.NORMAL_SEVERITY;
-	}
-	
-	private void unloadPreferences() {
-		fPreferencesService = null;
-		fScopes = null;
-	}
-
-	protected void performValidation(IFile file, IReporter reporter, IStructuredDocument structuredDoc) {
-		loadPreferences(file);
-		IStructuredDocumentRegion curNode = structuredDoc.getFirstStructuredDocumentRegion();
-		while (null != curNode && !reporter.isCancelled()) {
-			if (curNode.getType() != DOMRegionContext.XML_COMMENT_TEXT && curNode.getType() != DOMRegionContext.XML_CDATA_TEXT && curNode.getType() != DOMRegionContext.UNDEFINED) {
-				validateRegionContainer(curNode, reporter, file);
-			}
-			curNode = curNode.getNext();
-		}
-		unloadPreferences();
-	}
-
-	protected void validateRegionContainer(ITextRegionCollection container, IReporter reporter, IFile file) {
-		ITextRegionCollection containerRegion = container;
-		Iterator regions = containerRegion.getRegions().iterator();
-		ITextRegion region = null;
-		while (regions.hasNext() && !reporter.isCancelled()) {
-			region = (ITextRegion) regions.next();
-			String type = region.getType();
-			if (type != null && region instanceof ITextRegionCollection) {
-				ITextRegionCollection parentRegion = ((ITextRegionCollection) region);
-				Iterator childRegions = parentRegion.getRegions().iterator();
-				while (childRegions.hasNext() && !reporter.isCancelled()) {
-					ITextRegion childRegion = (ITextRegion) childRegions.next();
-					/* [136795] Validate everything in the EL container, not just JSP_EL_CONTENT */
-					if (childRegion.getType() == DOMJSPRegionContexts.JSP_EL_OPEN)
-						validateELContent(parentRegion, childRegion, childRegions, reporter, file);
-				}
-			}
-		}
-	}
-	
-	protected void validateELContent(ITextRegionCollection container, ITextRegion elOpenRegion, Iterator elRegions, IReporter reporter, IFile file) {
-		int contentStart = elOpenRegion.getEnd();
-		int contentDocStart = container.getEndOffset(elOpenRegion);
-		int contentLength = container.getLength();
-		int regionCount = 0;
-		ITextRegion elRegion = null;
-		/* Find the EL closing region, otherwise the last region will be used to calculate the EL content text */
-		while (elRegions != null && elRegions.hasNext() && (regionCount++ < MAX_REGIONS)) {
-			elRegion = (ITextRegion) elRegions.next();
-			if (elRegion.getType() == DOMJSPRegionContexts.JSP_EL_CLOSE)
-				break;
-		}
-		
-		String elText = container.getFullText().substring(contentStart, (elRegion != null) ? elRegion.getStart() : (contentLength - 1));
-		JSPELParser elParser = JSPELParser.createParser(elText);
-		try {
-			elParser.Expression();
-		}
-		catch (ParseException e) {
-			int sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_EL_SYNTAX);
-			if (sev != ValidationMessage.IGNORE) {
-				Token curTok = e.currentToken;
-				int problemStartOffset = contentDocStart + curTok.beginColumn;
-				Message message = new LocalizedMessage(sev, JSPCoreMessages.JSPEL_Syntax);
-				message.setOffset(problemStartOffset);
-				message.setLength(curTok.endColumn - curTok.beginColumn + 1);
-				message.setTargetObject(file);
-				reporter.addMessage(fMessageOriginator, message);
-			}
-		}
-		catch (TokenMgrError te) {
-			int sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_EL_LEXER);
-			if (sev != ValidationMessage.IGNORE) {
-				Message message = new LocalizedMessage(IMessage.NORMAL_SEVERITY, JSPCoreMessages.JSPEL_Token);
-				message.setOffset(contentDocStart);
-				message.setLength(contentLength);
-				message.setTargetObject(file);
-				reporter.addMessage(fMessageOriginator, message);
-			}
-		}
-	}
-
-	protected void validateXMLNode(ITextRegionCollection container, ITextRegion region, IReporter reporter, IFile file) {
-		String elText = container.getText(region);
-		JSPELParser elParser = JSPELParser.createParser(elText);
-		int contentStart = container.getStartOffset(region);
-		int contentLength = container.getLength();
-		try {
-			elParser.Expression();
-		}
-		catch (ParseException e) {
-			int sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_EL_SYNTAX);
-			if (sev != ValidationMessage.IGNORE) {
-				Token curTok = e.currentToken;
-				int problemStartOffset = contentStart + curTok.beginColumn;
-				Message message = new LocalizedMessage(sev, JSPCoreMessages.JSPEL_Syntax);
-				message.setOffset(problemStartOffset);
-				message.setLength(curTok.endColumn - curTok.beginColumn + 1);
-				message.setTargetObject(file);
-				reporter.addMessage(fMessageOriginator, message);
-			}
-		}
-		catch (TokenMgrError te) {
-			int sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_EL_LEXER);
-			if (sev != ValidationMessage.IGNORE) {
-				Message message = new LocalizedMessage(IMessage.NORMAL_SEVERITY, JSPCoreMessages.JSPEL_Token);
-				message.setOffset(contentStart);
-				message.setLength(contentLength);
-				message.setTargetObject(file);
-				reporter.addMessage(fMessageOriginator, message);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java
deleted file mode 100644
index 4d5420c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.io.IOException;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.preferences.DefaultScope;
-import org.eclipse.core.runtime.preferences.IPreferencesService;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.java.IJSPProblem;
-import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationExtension;
-import org.eclipse.jst.jsp.core.internal.modelhandler.ModelHandlerForJSP;
-import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.validate.ValidationMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidator;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-
-public class JSPJavaValidator extends JSPValidator {
-	private static final boolean DEBUG = Boolean.valueOf(Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspvalidator")).booleanValue(); //$NON-NLS-1$
-	private IValidator fMessageOriginator;
-
-	private IPreferencesService fPreferencesService = null;
-	private static final String PREFERENCE_NODE_QUALIFIER = JSPCorePlugin.getDefault().getBundle().getSymbolicName();
-	private IScopeContext[] fScopes = null;
-	
-	private static final String[] DEPEND_ONs = new String[]{".classpath", ".project", ".settings/org.eclipse.jst.jsp.core.prefs", ".settings/org.eclipse.wst.common.project.facet.core.xml", ".settings/org.eclipse.wst.common.component"};
-
-	public JSPJavaValidator() {
-		this.fMessageOriginator = this;
-	}
-
-	public JSPJavaValidator(IValidator validator) {
-		this.fMessageOriginator = validator;
-	}
-
-	/**
-	 * Assumed the message offset is an indirect position. In other words, an
-	 * error from an included file.
-	 * 
-	 * @param m
-	 * @param translation
-	 */
-	private void adjustIndirectPosition(IMessage m, IJSPTranslation translation) {
-
-		if (!(translation instanceof JSPTranslationExtension))
-			return;
-
-		IDocument jspDoc = ((JSPTranslationExtension) translation).getJspDocument();
-		if (!(jspDoc instanceof IStructuredDocument))
-			return;
-
-		IStructuredDocument sDoc = (IStructuredDocument) jspDoc;
-		IStructuredDocumentRegion[] regions = sDoc.getStructuredDocumentRegions(0, m.getOffset() + m.getLength());
-		// iterate backwards until you hit the include directive
-		for (int i = regions.length - 1; i >= 0; i--) {
-			IStructuredDocumentRegion region = regions[i];
-			if (region.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-				if (getDirectiveName(region).equals("include")) { //$NON-NLS-1$
-					ITextRegion fileValueRegion = getAttributeValueRegion(region, "file"); //$NON-NLS-1$
-					if (fileValueRegion != null) {
-						m.setOffset(region.getStartOffset(fileValueRegion));
-						m.setLength(fileValueRegion.getTextLength());
-					}
-					else {
-						m.setOffset(region.getStartOffset());
-						m.setLength(region.getTextLength());
-					}
-					/**
-					 * Bug 219761 - Syntax error reported at wrong location
-					 * (don't forget to adjust the line number, too)
-					 */
-					m.setLineNo(sDoc.getLineOfOffset(m.getOffset()) + 1);
-					break;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Creates an IMessage from asn IProblem
-	 * 
-	 * @param problem
-	 * @param f
-	 * @param translation
-	 * @param structuredDoc
-	 * @return message representation of the problem, or null if it could not
-	 *         create one
-	 */
-	private IMessage createMessageFromProblem(IProblem problem, IFile f, IJSPTranslation translation, IStructuredDocument structuredDoc) {
-		int sev = -1;
-		int sourceStart = -1;
-		int sourceEnd = -1;
-
-		if (problem instanceof IJSPProblem) {
-			sourceStart = problem.getSourceStart();
-			sourceEnd = problem.getSourceEnd();
-			switch (((IJSPProblem) problem).getEID()) {
-				case IJSPProblem.TEIClassNotFound :
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TEI_CLASS_NOT_FOUND);
-					break;
-				case IJSPProblem.TEIValidationMessage :
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TEI_VALIDATION_MESSAGE);
-					break;
-				case IJSPProblem.TEIClassNotInstantiated :
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TEI_CLASS_NOT_INSTANTIATED);
-					break;
-				case IJSPProblem.TEIClassMisc :
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TEI_CLASS_RUNTIME_EXCEPTION);
-					break;
-				case IJSPProblem.TagClassNotFound :
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_TRANSLATION_TAG_HANDLER_CLASS_NOT_FOUND);
-					break;
-				case IJSPProblem.UseBeanInvalidID :
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_TRANSLATION_USEBEAN_INVALID_ID);
-					break;
-				case IJSPProblem.UseBeanMissingTypeInfo :
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_TRANSLATION_USBEAN_MISSING_TYPE_INFO);
-					break;
-				case IJSPProblem.UseBeanAmbiguousType :
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_TRANSLATION_USEBEAN_AMBIGUOUS_TYPE_INFO);
-					break;
-				default :
-					sev = problem.isError() ? IMessage.HIGH_SEVERITY : (problem.isWarning() ? IMessage.NORMAL_SEVERITY : ValidationMessage.IGNORE);
-
-			}
-		}
-		else {
-			sourceStart = translation.getJspOffset(problem.getSourceStart());
-			sourceEnd = translation.getJspOffset(problem.getSourceEnd());
-			switch (problem.getID()) {
-				case IProblem.LocalVariableIsNeverUsed : {
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_JAVA_LOCAL_VARIABLE_NEVER_USED);
-				}
-					break;
-				case IProblem.NullLocalVariableReference : {
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_JAVA_NULL_LOCAL_VARIABLE_REFERENCE);
-				}
-					break;
-				case IProblem.ArgumentIsNeverUsed : {
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_JAVA_ARGUMENT_IS_NEVER_USED);
-				}
-					break;
-				case IProblem.PotentialNullLocalVariableReference : {
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_JAVA_POTENTIAL_NULL_LOCAL_VARIABLE_REFERENCE);
-				}
-					break;
-				case IProblem.UnusedImport : {
-					sev = getMessageSeverity(JSPCorePreferenceNames.VALIDATION_JAVA_UNUSED_IMPORT);
-				}
-					break;
-
-				default : {
-					if (problem.isError()) {
-						sev = IMessage.HIGH_SEVERITY;
-					}
-					else {
-						sev = IMessage.NORMAL_SEVERITY;
-					}
-				}
-					if (sev == ValidationMessage.IGNORE) {
-						return null;
-					}
-
-					/* problems without JSP positions are in generated code */
-					if (sourceStart == -1) {
-						int problemID = problem.getID();
-						/*
-						 * Quoting IProblem doc: "When a problem is tagged as
-						 * Internal, it means that no change other than a
-						 * local source code change can fix the corresponding
-						 * problem." Assuming that our generated code is
-						 * correct, that should reduce the reported problems
-						 * to those the user can correct.
-						 */
-						if (((problemID & IProblem.Internal) != 0) && ((problemID & IProblem.Syntax) != 0) && translation instanceof JSPTranslation) {
-							// Attach to the last code scripting section
-							JSPTranslation jspTranslation = ((JSPTranslation) translation);
-							Position[] jspPositions = (Position[]) jspTranslation.getJsp2JavaMap().keySet().toArray(new Position[jspTranslation.getJsp2JavaMap().size()]);
-							for (int i = 0; i < jspPositions.length; i++) {
-								sourceStart = Math.max(sourceStart, jspPositions[i].getOffset());
-							}
-							IMessage m = new LocalizedMessage(sev, problem.getMessage(), f);
-							m.setOffset(sourceStart);
-							m.setLength(1);
-							return m;
-						}
-						else {
-							return null;
-						}
-					}
-			}
-		}
-		if (sev == ValidationMessage.IGNORE) {
-			return null;
-		}
-
-		// line number for marker starts @ 1
-		// line number from document starts @ 0
-		int lineNo = structuredDoc.getLineOfOffset(sourceStart) + 1;
-
-		IMessage m = new LocalizedMessage(sev, problem.getMessage(), f);
-
-		m.setLineNo(lineNo);
-		m.setOffset(sourceStart);
-		m.setLength(sourceEnd - sourceStart + 1);
-
-		// need additional adjustment for problems from
-		// indirect (included) files
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=119633
-		if (translation.isIndirect(problem.getSourceStart())) {
-			adjustIndirectPosition(m, translation);
-		}
-
-		return m;
-	}
-
-	int getMessageSeverity(String key) {
-		int sev = fPreferencesService.getInt(PREFERENCE_NODE_QUALIFIER, key, IMessage.NORMAL_SEVERITY, fScopes);
-		switch (sev) {
-			case ValidationMessage.ERROR :
-				return IMessage.HIGH_SEVERITY;
-			case ValidationMessage.WARNING :
-				return IMessage.NORMAL_SEVERITY;
-			case ValidationMessage.INFORMATION :
-				return IMessage.LOW_SEVERITY;
-			case ValidationMessage.IGNORE :
-				return ValidationMessage.IGNORE;
-		}
-		return IMessage.NORMAL_SEVERITY;
-	}
-
-	private void loadPreferences(IFile file) {
-		fScopes = new IScopeContext[]{new InstanceScope(), new DefaultScope()};
-
-		fPreferencesService = Platform.getPreferencesService();
-		if (file != null && file.isAccessible()) {
-			ProjectScope projectScope = new ProjectScope(file.getProject());
-			if (projectScope.getNode(PREFERENCE_NODE_QUALIFIER).getBoolean(JSPCorePreferenceNames.VALIDATION_USE_PROJECT_SETTINGS, false)) {
-				fScopes = new IScopeContext[]{projectScope, new InstanceScope(), new DefaultScope()};
-			}
-		}
-	}
-
-	void performValidation(IFile f, IReporter reporter, IStructuredModel model) {
-		for (int i = 0; i < DEPEND_ONs.length; i++) {
-			addDependsOn(f.getProject().getFile(DEPEND_ONs[i]));	
-		}
-		if (model instanceof IDOMModel) {
-			IDOMModel domModel = (IDOMModel) model;
-			ModelHandlerForJSP.ensureTranslationAdapterFactory(domModel);
-
-			IDOMDocument xmlDoc = domModel.getDocument();
-			JSPTranslationAdapter translationAdapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class);
-			IJSPTranslation translation = translationAdapter.getJSPTranslation();
-
-			if (!reporter.isCancelled()) {
-				loadPreferences(f);
-
-				translation.setProblemCollectingActive(true);
-				translation.reconcileCompilationUnit();
-				List problems = translation.getProblems();
-				// add new messages
-				for (int i = 0; i < problems.size() && !reporter.isCancelled(); i++) {
-					IProblem problem = (IProblem) problems.get(i);
-					if (problem.getID() != IProblem.Task) {
-						IMessage m = createMessageFromProblem(problem, f, translation, domModel.getStructuredDocument());
-						if (m != null)
-							reporter.addMessage(fMessageOriginator, m);
-					}
-				}
-			}
-		}
-		unloadPreferences();
-	}
-
-	private void unloadPreferences() {
-		fPreferencesService = null;
-		fScopes = null;
-	}
-
-	/**
-	 * Validate one file. It's assumed that the file has JSP content type.
-	 * 
-	 * @param f
-	 * @param reporter
-	 */
-	protected void validateFile(IFile f, IReporter reporter) {
-		if (DEBUG) {
-			Logger.log(Logger.INFO, getClass().getName() + " validating: " + f); //$NON-NLS-1$
-		}
-
-		IStructuredModel model = null;
-		try {
-			// get jsp model, get tranlsation
-			model = StructuredModelManager.getModelManager().getModelForRead(f);
-			if (!reporter.isCancelled() && model != null) {
-				for (int i = 0; i < DEPEND_ONs.length; i++) {
-					addDependsOn(f.getProject().getFile(DEPEND_ONs[i]));	
-				}
-				// get jsp model, get translation
-				if (model instanceof IDOMModel) {
-					reporter.removeAllMessages(fMessageOriginator, f);
-					performValidation(f, reporter, model);
-				}
-			}
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (model != null)
-				model.releaseFromRead();
-		}
-	}
-
-	/**
-	 * Record that the currently validating resource depends on the given
-	 * file. Only possible during batch (not source) validation.
-	 * 
-	 * @param file
-	 */
-	private void addDependsOn(IFile file) {
-		if (fMessageOriginator instanceof JSPBatchValidator) {
-			((JSPBatchValidator) fMessageOriginator).addDependsOn(file);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPValidator.java
deleted file mode 100644
index 1ecbf45..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPValidator.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentProperties;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.validation.AbstractValidator;
-import org.eclipse.wst.validation.ValidationResult;
-import org.eclipse.wst.validation.ValidationState;
-import org.eclipse.wst.validation.internal.core.Message;
-import org.eclipse.wst.validation.internal.core.ValidationException;
-import org.eclipse.wst.validation.internal.operations.IWorkbenchContext;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
-import org.eclipse.wst.validation.internal.provisional.core.IValidatorJob;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
-
-/**
- * Performs some common JSP validation tasks
- */
-public class JSPValidator extends AbstractValidator implements IValidatorJob {
-
-	private static final String PLUGIN_ID_JSP_CORE = "org.eclipse.jst.jsp.core"; //$NON-NLS-1$
-	private IContentType fJSPFContentType = null;
-
-	protected class LocalizedMessage extends Message {
-
-		private String _message = null;
-
-		public LocalizedMessage(int severity, String messageText) {
-			this(severity, messageText, null);
-		}
-
-		public LocalizedMessage(int severity, String messageText, IResource targetObject) {
-			this(severity, messageText, (Object) targetObject);
-		}
-
-		public LocalizedMessage(int severity, String messageText, Object targetObject) {
-			super(null, severity, null);
-			setLocalizedMessage(messageText);
-			setTargetObject(targetObject);
-		}
-
-		public void setLocalizedMessage(String message) {
-			_message = message;
-		}
-
-		public String getLocalizedMessage() {
-			return _message;
-		}
-
-		public String getText() {
-			return getLocalizedMessage();
-		}
-
-		public String getText(ClassLoader cl) {
-			return getLocalizedMessage();
-		}
-
-		public String getText(Locale l) {
-			return getLocalizedMessage();
-		}
-
-		public String getText(Locale l, ClassLoader cl) {
-			return getLocalizedMessage();
-		}
-	}
-
-	protected class JSPFileVisitor implements IResourceProxyVisitor {
-
-		private List fFiles = new ArrayList();
-		private IContentType[] fContentTypes = null;
-		private IReporter fReporter = null;
-
-		public JSPFileVisitor(IReporter reporter) {
-			fReporter = reporter;
-		}
-
-		public boolean visit(IResourceProxy proxy) throws CoreException {
-
-			// check validation
-			if (fReporter.isCancelled())
-				return false;
-
-			if (proxy.getType() == IResource.FILE) {
-
-				if (isJSPType(proxy.getName())) {
-					IFile file = (IFile) proxy.requestResource();
-					if (file.exists()) {
-
-						if (DEBUG)
-							System.out.println("(+) JSPValidator adding file: " + file.getName()); //$NON-NLS-1$
-						fFiles.add(file);
-
-						// don't search deeper for files
-						return false;
-					}
-				}
-			}
-			return true;
-		}
-
-		public final IFile[] getFiles() {
-			return (IFile[]) fFiles.toArray(new IFile[fFiles.size()]);
-		}
-
-		/**
-		 * Gets list of content types this visitor is interested in
-		 * 
-		 * @return All JSP-related content types
-		 */
-		private IContentType[] getValidContentTypes() {
-			if (fContentTypes == null) {
-				// currently "hard-coded" to be jsp & jspf
-				fContentTypes = new IContentType[]{Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP), Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT)};
-			}
-			return fContentTypes;
-		}
-
-		/**
-		 * Checks if fileName is some type of JSP (including JSP fragments)
-		 * 
-		 * @param fileName
-		 * @return true if filename indicates some type of JSP, false
-		 *         otherwise
-		 */
-		private boolean isJSPType(String fileName) {
-			boolean valid = false;
-
-			IContentType[] types = getValidContentTypes();
-			int i = 0;
-			while (i < types.length && !valid) {
-				valid = types[i].isAssociatedWith(fileName);
-				++i;
-			}
-			return valid;
-		}
-	}
-
-	public void cleanup(IReporter reporter) {
-		// nothing to do
-	}
-
-	public void validate(IValidationContext helper, IReporter reporter) throws ValidationException {
-		String[] uris = helper.getURIs();
-		IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
-		if (uris.length > 0) {
-			IFile currentFile = null;
-
-			for (int i = 0; i < uris.length && !reporter.isCancelled(); i++) {
-				// might be called with just project path?
-				currentFile = wsRoot.getFile(new Path(uris[i]));
-				if (currentFile != null && currentFile.exists()) {
-					if (shouldValidate(currentFile) && fragmentCheck(currentFile)) {
-
-						Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, uris[i]);
-						reporter.displaySubtask(this, message);
-
-						validateFile(currentFile, reporter);
-					}
-					if (DEBUG)
-						System.out.println("validating: [" + uris[i] + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			}
-		}
-		else {
-
-			// if uris[] length 0 -> validate() gets called for each project
-			if (helper instanceof IWorkbenchContext) {
-
-				IProject project = ((IWorkbenchContext) helper).getProject();
-				JSPFileVisitor visitor = new JSPFileVisitor(reporter);
-				try {
-					// collect all jsp files for the project
-					project.accept(visitor, IResource.DEPTH_INFINITE);
-				}
-				catch (CoreException e) {
-					if (DEBUG)
-						e.printStackTrace();
-				}
-				IFile[] files = visitor.getFiles();
-				for (int i = 0; i < files.length && !reporter.isCancelled(); i++) {
-					if (shouldValidate(files[i]) && fragmentCheck(files[i])) {
-						int percent = (i * 100) / files.length + 1;
-						Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, percent + "% " + files[i].getFullPath().toString());
-						reporter.displaySubtask(this, message);
-
-						validateFile(files[i], reporter);
-					}
-					if (DEBUG)
-						System.out.println("validating: [" + files[i] + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-			}
-		}
-	}
-
-	/**
-	 * Validate one file. It's assumed that the file has JSP content type.
-	 * 
-	 * @param f
-	 * @param reporter
-	 */
-	protected void validateFile(IFile f, IReporter reporter) {
-		// subclasses should implement (for batch validation)
-	}
-
-	public ValidationResult validate(final IResource resource, int kind, ValidationState state, IProgressMonitor monitor) {
-		if (resource.getType() != IResource.FILE)
-			return null;
-		ValidationResult result = new ValidationResult();
-		final IReporter reporter = result.getReporter(monitor);
-		validateFile((IFile) resource, reporter);
-		return result;
-	}
-
-	/**
-	 * 
-	 * @param sdr
-	 * @return the jsp directive name
-	 */
-	protected String getDirectiveName(IStructuredDocumentRegion sdr) {
-		String name = ""; //$NON-NLS-1$
-		ITextRegionList subRegions = sdr.getRegions();
-		for (int j = 0; j < subRegions.size(); j++) {
-			ITextRegion subRegion = subRegions.get(j);
-			if (subRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-				name = sdr.getText(subRegion);
-				break;
-			}
-		}
-		return name;
-	}
-
-	/**
-	 * 
-	 * @param sdr
-	 * @param attrName
-	 * @return the ITextRegion for the attribute value of the given attribute
-	 *         name, case sensitive, null if no matching attribute is found
-	 */
-	protected ITextRegion getAttributeValueRegion(IStructuredDocumentRegion sdr, String attrName) {
-		ITextRegion valueRegion = null;
-		ITextRegionList subRegions = sdr.getRegions();
-		for (int i = 0; i < subRegions.size(); i++) {
-			ITextRegion subRegion = subRegions.get(i);
-			if (subRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME && sdr.getText(subRegion).equals(attrName)) {
-				for (int j = i; j < subRegions.size(); j++) {
-					subRegion = subRegions.get(j);
-					if (subRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-						valueRegion = subRegion;
-						break;
-					}
-				}
-				break;
-			}
-		}
-		return valueRegion;
-	}
-
-	protected String getAttributeValue(IStructuredDocumentRegion sdr, String attrName) {
-		ITextRegion r = getAttributeValueRegion(sdr, attrName);
-		if (r != null)
-			return sdr.getText(r).trim();
-		return ""; //$NON-NLS-1$
-	}
-
-	/**
-	 * Determines if file is jsp fragment or not (does a deep, indepth check,
-	 * looking into contents of file)
-	 * 
-	 * @param file
-	 *            assumes file is not null and exists
-	 * @return true if file is jsp fragment, false otherwise
-	 */
-	private boolean isFragment(IFile file) {
-		boolean isFragment = false;
-		InputStream is = null;
-		try {
-			IContentDescription contentDescription = file.getContentDescription();
-			// it can be null
-			if (contentDescription == null) {
-				is = file.getContents();
-				contentDescription = Platform.getContentTypeManager().getDescriptionFor(is, file.getName(), new QualifiedName[]{IContentDescription.CHARSET});
-			}
-			if (contentDescription != null) {
-				String fileCtId = contentDescription.getContentType().getId();
-				isFragment = (fileCtId != null && ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT.equals(fileCtId));
-			}
-		}
-		catch (IOException e) {
-			// ignore, assume it's invalid JSP
-		}
-		catch (CoreException e) {
-			// ignore, assume it's invalid JSP
-		}
-		finally {
-			// must close input stream in case others need it
-			if (is != null)
-				try {
-					is.close();
-				}
-				catch (Exception e) {
-					// not sure how to recover at this point
-				}
-		}
-		return isFragment;
-	}
-
-	private boolean shouldValidate(IFile file) {
-		IResource resource = file;
-		do {
-			if (resource.isDerived() || resource.isTeamPrivateMember() || !resource.isAccessible() || resource.getName().charAt(0) == '.') {
-				return false;
-			}
-			resource = resource.getParent();
-		}
-		while ((resource.getType() & IResource.PROJECT) == 0);
-		return true;
-	}
-
-	// for debugging
-	static final boolean DEBUG;
-	static {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspvalidator"); //$NON-NLS-1$
-		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Checks if file is a jsp fragment or not. If so, check if the fragment
-	 * should be validated or not.
-	 * 
-	 * @param file
-	 *            Assumes shouldValidate was already called on file so it
-	 *            should not be null and does exist
-	 * @return false if file is a fragment and it should not be validated,
-	 *         true otherwise
-	 */
-	private boolean fragmentCheck(IFile file) {
-		boolean shouldValidate = true;
-		// quick check to see if this is possibly a jsp fragment
-		if (getJSPFContentType().isAssociatedWith(file.getName())) {
-			// get preference for validate jsp fragments
-			boolean shouldValidateFragments = Boolean.valueOf(JSPFContentProperties.getProperty(JSPFContentProperties.VALIDATE_FRAGMENTS, file, true)).booleanValue();
-			/*
-			 * if jsp fragments should not be validated, check if file is
-			 * really jsp fragment
-			 */
-			if (!shouldValidateFragments) {
-				boolean isFragment = isFragment(file);
-				shouldValidate = !isFragment;
-			}
-		}
-		return shouldValidate;
-	}
-
-	/**
-	 * Returns JSP fragment content type
-	 * 
-	 * @return jspf content type
-	 */
-	private IContentType getJSPFContentType() {
-		if (fJSPFContentType == null) {
-			fJSPFContentType = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT);
-		}
-		return fJSPFContentType;
-	}
-
-	public ISchedulingRule getSchedulingRule(IValidationContext helper) {
-		return null;
-	}
-
-	public IStatus validateInJob(IValidationContext helper, IReporter reporter) throws ValidationException {
-		IStatus status = Status.OK_STATUS;
-		try {
-			validate(helper, reporter);
-		}
-		catch (ValidationException e) {
-			Logger.logException(e);
-			status = new Status(IStatus.ERROR, PLUGIN_ID_JSP_CORE, IStatus.ERROR, e.getLocalizedMessage(), e);
-		}
-		return status;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/LocalizedMessage.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/LocalizedMessage.java
deleted file mode 100644
index 7bd2f31..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/LocalizedMessage.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.util.Locale;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.wst.validation.internal.core.Message;
-
-/**
- * Simple implementation of Message all validators in package can use.
- */
-class LocalizedMessage extends Message {
-	private String _message = null;
-
-	public LocalizedMessage(int severity, String messageText) {
-		this(severity, messageText, null);
-	}
-
-	public LocalizedMessage(int severity, String messageText, IResource targetObject) {
-		this(severity, messageText, (Object) targetObject);
-	}
-
-	public LocalizedMessage(int severity, String messageText, Object targetObject) {
-		super(null, severity, null);
-		setLocalizedMessage(messageText);
-		setTargetObject(targetObject);
-	}
-
-	public void setLocalizedMessage(String message) {
-		_message = message;
-	}
-
-	public String getLocalizedMessage() {
-		return _message;
-	}
-
-	public String getText() {
-		return getLocalizedMessage();
-	}
-
-	public String getText(ClassLoader cl) {
-		return getLocalizedMessage();
-	}
-
-	public String getText(Locale l) {
-		return getLocalizedMessage();
-	}
-
-	public String getText(Locale l, ClassLoader cl) {
-		return getLocalizedMessage();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/jspel/ELProblem.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/jspel/ELProblem.java
deleted file mode 100644
index cb548c0..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/jspel/ELProblem.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.jspel;
-
-import org.eclipse.jface.text.Position;
-
-public class ELProblem {
-	private Position fPos;
-	private String fMessage;
-	
-	public ELProblem(Position pos, String message)	{
-		fPos = pos;
-		fMessage = message;
-	}
-	
-	public String getMessage() {
-		return fMessage;
-	}
-	
-
-	public Position getPosition() {
-		return fPos;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/jspel/IJSPELTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/jspel/IJSPELTranslator.java
deleted file mode 100644
index 55e8460..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/jspel/IJSPELTranslator.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 BEA Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     BEA Systems - initial implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.core.jspel;
-
-import java.util.List;
-import java.util.HashMap;
-
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-
-public interface IJSPELTranslator {
-
-	/**
-	 * To override the EL translation, please see the extension point 
-	 * org.eclipse.jst.jsp.core.eltranslator.
-	 * 
-	 * @param elText  The text to be translated.
-	 * @param delim	The starting delimiter
-	 * @param currentNode The current IStructuredDocumentRegion
-	 * @param contentStart The starting offset of the EL to be translated
-	 * @param contentLength The length of the EL content to be translated
-	 * @param fUserELExpressions A string buffer to which generated code can be appended.
-	 *		The text appended here will be inserted into the generated class at the top level 
-	 *		not at the point in the JSP translation where the EL was found. 
-	 * 
-	 * @param fUserELRanges  Map of location ranges from JSP EL offsets to generated Java code.
-	 * @param document The structured document.
-	 * @return A list of ELProblems that describes any syntactic issues found.
-	 */
-	public List translateEL(String elText,
-			String delim,
-			IStructuredDocumentRegion currentNode, 
-			int contentStart,
-			int contentLength,
-			StringBuffer userELExpressions,
-			HashMap userELRanges,
-			IStructuredDocument document);
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/IJarRecord.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/IJarRecord.java
deleted file mode 100644
index 6416473..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/IJarRecord.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import org.eclipse.core.runtime.IPath;
-
-/**
- * A record to a .jar file directly referencable as a tag library.
- * 
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 1.0
- */
-
-public interface IJarRecord extends ITaglibRecord {
-	/**
-	 * @return Returns the location of the .jar in the file-system.
-	 */
-	public IPath getLocation();
-
-	/**
-	 * @return Returns the recommended/default prefix if one was given.
-	 */
-	public String getShortName();
-
-	/**
-	 * @deprecated - use the descriptor's URI value
-	 * @return Returns the uri.
-	 */
-	String getURI();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITLDRecord.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITLDRecord.java
deleted file mode 100644
index 395d3b1..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITLDRecord.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import org.eclipse.core.runtime.IPath;
-
-/**
- * A record representing a standalone .tld file.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 1.0
- */
-public interface ITLDRecord extends ITaglibRecord {
-
-	/**
-	 * @return Returns the path within the workspace.
-	 */
-	IPath getPath();
-
-	/**
-	 * @return Returns the recommended/default prefix if one was given.
-	 */
-	String getShortName();
-
-	/**
-	 * @deprecated - use the descriptor's URI value
-	 * @return Returns the uri.
-	 */
-	String getURI();
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITagDirRecord.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITagDirRecord.java
deleted file mode 100644
index af20861..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITagDirRecord.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import org.eclipse.core.runtime.IPath;
-
-/**
- * A record representing a folder of .tag/.tagx files
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 1.0
- */
-public interface ITagDirRecord extends ITaglibRecord {
-	/**
-	 * @return Returns the path within the workspace to this directory.
-	 */
-	IPath getPath();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibDescriptor.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibDescriptor.java
deleted file mode 100644
index dfba477..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibDescriptor.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-/**
- * A representation of information within a tag library descriptor. Provides
- * much of the high-level information expressed by the descriptor.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 1.2
- */
-public interface ITaglibDescriptor {
-	/**
-	 * @return the description value of this tag library
-	 */
-	String getDescription();
-	/**
-	 * @return the display name value of this tag library
-	 */
-	String getDisplayName();
-	/**
-	 * @return the stated required JSP version of this tag library
-	 */
-	String getJSPVersion();
-	/**
-	 * @return a URL string to the large icon for this tag library
-	 */
-	String getLargeIcon();
-	/**
-	 * @return the stated short name for this tag library
-	 */
-	String getShortName();
-	/**
-	 * @return a URL string to the small icon for this tag library
-	 */
-	String getSmallIcon();
-	/**
-	 * @return the stated version of this tag library if specified
-	 */
-	String getTlibVersion();
-	/**
-	 * @return a URI pointing to this tag library's descriptor, or null
-	 */
-	String getURI();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibIndexDelta.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibIndexDelta.java
deleted file mode 100644
index 14b3bb8..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibIndexDelta.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import org.eclipse.core.resources.IProject;
-
-/**
- * Describes changes to the known records within the TaglibIndex.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 1.2
- */
-public interface ITaglibIndexDelta {
-
-	/**
-	 * Status constant indicating that the record has been added. Note that an
-	 * added taglib record delta has no children, as they are all implicitely
-	 * added.
-	 */
-	public int ADDED = 1;
-	/**
-	 * Status constant indicating that the record has been changed, as
-	 * described by the change flags.
-	 */
-	public int CHANGED = 4;
-	/**
-	 * Status constant indicating that the record has been removed. Note that
-	 * a removed taglib element delta has no children, as they are all
-	 * implicitely removed.
-	 */
-	public int REMOVED = 2;
-
-
-	/**
-	 * Returns deltas for the affected (added, removed, or changed) records.
-	 * 
-	 * @return
-	 */
-	ITaglibIndexDelta[] getAffectedChildren();
-
-	/**
-	 * @return the type of change, one of ADDED, CHANGED, or REMOVED
-	 */
-	int getKind();
-	
-	/**
-	 * @return the IProject in which this delta originated
-	 */
-	IProject getProject();
-
-
-	/**
-	 * @return the record that was changed
-	 */
-	ITaglibRecord getTaglibRecord();
-
-	/**
-	 * Accepts the given visitor. The only kinds of index deltas visited are
-	 * <code>ADDED</code>, <code>REMOVED</code>, and
-	 * <code>CHANGED</code>. The visitor's <code>visit</code> method is
-	 * called with this index delta if applicable. If the visitor returns
-	 * <code>true</code>, the resource delta's children are also visited.
-	 * 
-	 * @param visitor
-	 *            the visitor
-	 * @exception CoreException
-	 *                if the visitor failed with this exception.
-	 * @see IResourceDeltaVisitor#visit(ITaglibIndexDeltaVisitor)
-	 */
-	// public void accept(ITaglibIndexDeltaVisitor visitor);
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibIndexListener.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibIndexListener.java
deleted file mode 100644
index b81027e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibIndexListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-/**
- * A listener for changes in the index's records.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 1.2
- */
-public interface ITaglibIndexListener {
-
-	/**
-	 * Notifies this listener that a change in the TaglibIndex, described by
-	 * an ITaglibIndexDelta, has occurred
-	 * 
-	 * @param delta
-	 *            the delta of changes
-	 */
-	void indexChanged(ITaglibIndexDelta delta);
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibRecord.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibRecord.java
deleted file mode 100644
index 5cb6462..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibRecord.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-/**
- * A representation of information about a single tag library descriptor. This
- * interface is common to all record types.
- * 
- * 
- * @see IJarRecord
- * @see ITagDirRecord
- * @see ITLDRecord
- * @see IURLRecord
- *      <p>
- *      This interface is not intended to be implemented by clients.
- *      </p>
- * 
- * @since 1.0
- */
-public interface ITaglibRecord {
-	/**
-	 * A record to a .jar file referrable directly, 1.1 style, or mentioned in
-	 * a web.xml file.
-	 */
-	int JAR = 1 << 1;
-
-	/**
-	 * A record representing a folder of .tag/.tagx files
-	 */
-	int TAGDIR = 1 << 3;
-
-	/**
-	 * A record representing a standalone .tld file
-	 */
-	int TLD = 1;
-
-	/**
-	 * A record representing a .tld that is not a standalone file
-	 */
-	int URL = 1 << 2;
-
-	/**
-	 * Returns the type of this record. The returned value will be one of
-	 * <code>URL</code>, <code>TAGDIR</code>, <code>TLD</code>, or
-	 * <code>JAR</code>.
-	 * <p>
-	 * <ul>
-	 * <li> All records of type <code>JAR</code> implement
-	 * <code>IJarRecord</code>.</li>
-	 * <li> All records of type <code>TAGDIR</code> implement
-	 * <code>ITagDirRecord</code>.</li>
-	 * <li> All records of type <code>TLD</code> implement
-	 * <code>ITLDRecord</code>.</li>
-	 * <li> All records of type <code>URL</code> implement
-	 * <code>IURLRecord</code>.</li>
-	 * </ul>
-	 * </p>
-	 * 
-	 * @return the type of this resource
-	 * @see #JAR
-	 * @see #TAGDIR
-	 * @see #TLD
-	 * @see #URL
-	 */
-	int getRecordType();
-	
-	ITaglibDescriptor getDescriptor();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibRecordEvent.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibRecordEvent.java
deleted file mode 100644
index c1d17ca..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ITaglibRecordEvent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import org.eclipse.core.resources.IResourceDelta;
-
-/**
- * Describes changes to the known records within the TaglibIndex.
- * 
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- */
-public interface ITaglibRecordEvent {
-
-	/**
-	 * @return the record that was changed
-	 */
-	ITaglibRecord getTaglibRecord();
-
-	/**
-	 * @return the type of change, one of ADDED, CHANGED, or REMOVED
-	 */
-	int getType();
-
-	int ADDED = IResourceDelta.ADDED;
-	int CHANGED = IResourceDelta.CHANGED;
-	int REMOVED = IResourceDelta.REMOVED;
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/IURLRecord.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/IURLRecord.java
deleted file mode 100644
index e974d36..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/IURLRecord.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import java.net.URL;
-
-/**
- * A record representing a .tld that is not a standalone file
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 1.0
- */
-public interface IURLRecord extends ITaglibRecord {
-
-	/**
-	 * @return the base location to use for further resolution of resources
-	 *         from the TLD
-	 */
-	String getBaseLocation();
-
-	/**
-	 * @return Returns the short-name (normally treated as the
-	 *         recommended/default prefix), if one was specified within this
-	 *         TLD's contents.
-	 */
-	String getShortName();
-
-	/**
-	 * @deprecated - use the descriptor's URI value
-	 * @return Returns the uri specified within this TLD's contents.
-	 */
-	String getURI();
-
-	/**
-	 * @return Returns the URL to this TLD's contents.
-	 */
-	URL getURL();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
deleted file mode 100644
index 4137f67..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
+++ /dev/null
@@ -1,2289 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.Writer;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipException;
-import java.util.zip.ZipFile;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.jobs.ILock;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.core.IClasspathContainer;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IJavaElementDelta;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IPackageFragmentRoot;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP11TLDNames;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
-import org.eclipse.jst.jsp.core.internal.contenttype.DeploymentDescriptorPropertyCache;
-import org.eclipse.jst.jsp.core.internal.java.ArrayMap;
-import org.eclipse.jst.jsp.core.internal.util.DocumentProvider;
-import org.eclipse.jst.jsp.core.internal.util.FacetModuleCoreSupport;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.sse.core.internal.util.JarUtilities;
-import org.eclipse.wst.sse.core.internal.util.Sorter;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
-import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalog;
-import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
-import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog;
-import org.w3c.dom.Document;
-import org.w3c.dom.EntityReference;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import com.ibm.icu.text.Collator;
-import com.ibm.icu.util.StringTokenizer;
-
-/**
- * Contains the tag library information for a single project.
- * 
- *  * <p>
- * This class is neither intended to be instantiated nor accessed by clients.
- * </p>
- *
- */
-class ProjectDescription {
-
-	class DeltaVisitor implements IResourceDeltaVisitor {
-		public boolean visit(IResourceDelta delta) throws CoreException {
-			IResource resource = delta.getResource();
-			if (resource.getType() == IResource.FILE) {
-				if (delta.getKind() == IResourceDelta.CHANGED && (delta.getFlags() == IResourceDelta.ENCODING || delta.getFlags() == IResourceDelta.MARKERS))
-					return true;
-				if (resource.getName().endsWith(".tld")) { //$NON-NLS-1$
-					if (delta.getKind() == IResourceDelta.REMOVED) {
-						removeTLD(resource);
-					}
-					else {
-						updateTLD(resource, delta.getKind());
-					}
-				}
-				else if (resource.getName().endsWith(".jar")) { //$NON-NLS-1$
-					if (delta.getKind() == IResourceDelta.REMOVED) {
-						removeJAR(resource);
-					}
-					else {
-						updateJAR(resource, delta.getKind());
-					}
-				}
-				else if ("tag".equalsIgnoreCase(resource.getFileExtension()) || "tagx".equalsIgnoreCase(resource.getFileExtension())) { //$NON-NLS-1$ //$NON-NLS-2$
-					if (delta.getKind() == IResourceDelta.REMOVED) {
-						removeTag(resource);
-					}
-					else {
-						updateTag(resource, delta.getKind());
-					}
-				}
-				else if (resource.getName().equals(WEB_XML) && resource.getParent().getName().equals(WEB_INF)) {
-					if (delta.getKind() == IResourceDelta.REMOVED) {
-						removeWebXML(resource);
-					}
-					else {
-						updateWebXML(resource, delta.getKind());
-					}
-				}
-			}
-			return resource.getName().length() != 0 && resource.getName().charAt(0) != '.';
-		}
-	}
-
-	class Indexer implements IResourceProxyVisitor {
-		public boolean visit(IResourceProxy proxy) throws CoreException {
-			boolean visitMembers = true;
-			if (proxy.getType() == IResource.FILE) {
-				if (proxy.getName().endsWith(".tld")) { //$NON-NLS-1$
-					updateTLD(proxy.requestResource(), ITaglibIndexDelta.ADDED);
-				}
-				else if (proxy.getName().endsWith(".jar")) { //$NON-NLS-1$
-					updateJAR(proxy.requestResource(), ITaglibIndexDelta.ADDED);
-				}
-				else if (proxy.getName().endsWith(".tag") || proxy.getName().endsWith(".tagx")) { //$NON-NLS-1$ //$NON-NLS-2$
-					updateTagDir(proxy.requestResource().getParent(), ITaglibIndexDelta.ADDED);
-					// any folder with these files will create a record for
-					// that folder in one pass
-					visitMembers = false;
-				}
-				else if (proxy.getName().equals(WEB_XML) && proxy.requestResource().getParent().getName().equals(WEB_INF)) {
-					updateWebXML(proxy.requestResource(), ITaglibIndexDelta.ADDED);
-				}
-			}
-			String name = proxy.getName();
-			return name.length() != 0 && name.charAt(0) != '.' && visitMembers;
-		}
-	}
-
-	static class JarRecord implements IJarRecord {
-		boolean has11TLD;
-		TaglibInfo info;
-
-		boolean isExported = true;
-		boolean isMappedInWebXML;
-		IPath location;
-		List urlRecords;
-
-		public boolean equals(Object obj) {
-			if (!(obj instanceof JarRecord))
-				return false;
-			return ((JarRecord) obj).location.equals(location) && ((JarRecord) obj).has11TLD == has11TLD && ((JarRecord) obj).info.equals(info);
-		}
-
-		public ITaglibDescriptor getDescriptor() {
-			return info != null ? info : new TaglibInfo();
-		}
-
-		/**
-		 * @return Returns the location.
-		 */
-		public IPath getLocation() {
-			return location;
-		}
-
-		public int getRecordType() {
-			return ITaglibRecord.JAR;
-		}
-
-		/**
-		 * @return Returns the recommended/default prefix if one was given.
-		 */
-		public String getShortName() {
-			if (info == null)
-				return null;
-			return info.shortName;
-		}
-
-		/**
-		 * @return Returns the uri.
-		 */
-		public String getURI() {
-			if (info == null)
-				return null;
-			return info.uri;
-		}
-
-		public List getURLRecords() {
-			return urlRecords;
-		}
-
-		public String toString() {
-			StringBuffer s = new StringBuffer("JarRecord: ");//$NON-NLS-1$ 
-			s.append(location);
-			if (urlRecords.size() > 0) {
-				s.append('\n');//$NON-NLS-1$ 
-				for (int i = 0; i < urlRecords.size(); i++) {
-					s.append(urlRecords.get(i));
-					s.append('\n');//$NON-NLS-1$ 
-				}
-			}
-			return s.toString();
-		}
-	}
-
-	static class TagDirRecord implements ITagDirRecord {
-		TaglibInfo info;
-		IPath path;
-		// a List holding Strings of .tag and .tagx filenames relative to the
-		// tagdir's location
-		List tags = new ArrayList(0);
-
-		public boolean equals(Object obj) {
-			if (!(obj instanceof TagDirRecord))
-				return false;
-			return ((TagDirRecord) obj).path.equals(path) && ((TagDirRecord) obj).info.equals(info);
-		}
-
-		public ITaglibDescriptor getDescriptor() {
-			return info != null ? info : (info = new TaglibInfo());
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.jst.jsp.core.taglib.ITagDirRecord#getPath()
-		 */
-		public IPath getPath() {
-			return path;
-		}
-
-		public int getRecordType() {
-			return ITaglibRecord.TAGDIR;
-		}
-
-		/**
-		 * @return Returns the tags.
-		 */
-		public String[] getTagFilenames() {
-			return (String[]) tags.toArray(new String[tags.size()]);
-		}
-
-		public String toString() {
-			return "TagdirRecord: " + path + " <-> " + info.shortName; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	/**
-	 * A brief representation of the information in a TLD.
-	 */
-	static class TaglibInfo implements ITaglibDescriptor {
-		// extract only when asked?
-		String description = "";
-		String displayName = "";
-		String jspVersion = "";
-		String largeIcon = "";
-		String shortName = "";
-		String smallIcon = "";
-		String tlibVersion = "";
-		String uri = "";
-
-		public TaglibInfo() {
-			super();
-		}
-
-		public boolean equals(Object obj) {
-			if (!(obj instanceof TaglibInfo))
-				return false;
-			return ((TaglibInfo) obj).jspVersion == jspVersion && ((TaglibInfo) obj).description.equals(description) && ((TaglibInfo) obj).largeIcon.equals(largeIcon) && ((TaglibInfo) obj).shortName.equals(shortName) && ((TaglibInfo) obj).smallIcon.equals(smallIcon) && ((TaglibInfo) obj).tlibVersion.equals(tlibVersion) && ((TaglibInfo) obj).uri.equals(uri);
-		}
-
-		public String getDescription() {
-			return description;
-		}
-
-		public String getDisplayName() {
-			return displayName;
-		}
-
-		public String getJSPVersion() {
-			return jspVersion;
-		}
-
-		public String getLargeIcon() {
-			return largeIcon;
-		}
-
-		public String getShortName() {
-			return shortName;
-		}
-
-		public String getSmallIcon() {
-			return smallIcon;
-		}
-
-		public String getTlibVersion() {
-			return tlibVersion;
-		}
-
-		public String getURI() {
-			return uri;
-		}
-
-		public String toString() {
-			return "TaglibInfo|" + shortName + "|" + tlibVersion + "|" + smallIcon + "|" + largeIcon + "|" + jspVersion + "|" + uri + "|" + description; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
-		}
-	}
-
-	static class TLDRecord implements ITLDRecord {
-		TaglibInfo info;
-		IPath path;
-
-		public boolean equals(Object obj) {
-			if (!(obj instanceof TLDRecord))
-				return false;
-			return ((TLDRecord) obj).path.equals(path) && ((TLDRecord) obj).getURI().equals(getURI()) && ((TLDRecord) obj).info.equals(info);
-		}
-
-		public ITaglibDescriptor getDescriptor() {
-			return info != null ? info : new TaglibInfo();
-		}
-
-		public IPath getPath() {
-			return path;
-		}
-
-		public int getRecordType() {
-			return ITaglibRecord.TLD;
-		}
-
-		public String getShortName() {
-			if (info == null)
-				return null;
-			return info.shortName;
-		}
-
-		/**
-		 * @return Returns the uri.
-		 */
-		public String getURI() {
-			if (info == null)
-				return null;
-			return info.uri;
-		}
-
-		public String toString() {
-			return "TLDRecord: " + getURI() + " <-> " + path; //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	static class URLRecord implements IURLRecord {
-		String baseLocation;
-		TaglibInfo info;
-		boolean isExported = true;
-		URL url;
-
-		public URLRecord() {
-			super();
-		}
-
-		public boolean equals(Object obj) {
-			if (!(obj instanceof URLRecord))
-				return false;
-			return ((URLRecord) obj).baseLocation.equals(baseLocation) && ((URLRecord) obj).url.equals(url) && ((URLRecord) obj).info.equals(info);
-		}
-
-		public String getBaseLocation() {
-			return baseLocation;
-		}
-
-		public ITaglibDescriptor getDescriptor() {
-			return info != null ? info : new TaglibInfo();
-		}
-
-		public int getRecordType() {
-			return ITaglibRecord.URL;
-		}
-
-		/**
-		 * @return Returns the recommended/default prefix if one was given.
-		 */
-		public String getShortName() {
-			if (info == null)
-				return null;
-			return info.shortName;
-		}
-
-		/**
-		 * @return Returns the uri.
-		 */
-		public String getURI() {
-			if (info == null)
-				return ""; //$NON-NLS-1$
-			return info.uri;
-		}
-
-		/**
-		 * @return Returns the URL.
-		 */
-		public URL getURL() {
-			return url;
-		}
-
-		public String toString() {
-			return "URLRecord: (exported=" + isExported + ") " + baseLocation + " <-> " + getURI(); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	static class WebXMLRecord {
-		TaglibInfo info;
-		IPath path;
-		List tldRecords = new ArrayList(0);
-
-		public boolean equals(Object obj) {
-			if (!(obj instanceof WebXMLRecord))
-				return false;
-			return ((WebXMLRecord) obj).path.equals(path) && ((WebXMLRecord) obj).info.equals(info);
-		}
-
-		/**
-		 * @return Returns the recommended/default prefix if one was given.
-		 */
-		public String getPrefix() {
-			if (info == null)
-				return null;
-			return info.shortName;
-		}
-
-		/**
-		 * 
-		 */
-		public List getTLDRecords() {
-			return tldRecords;
-		}
-
-		/**
-		 * @return Returns the webxml.
-		 */
-		public IPath getWebXML() {
-			return path;
-		}
-
-		public String toString() {
-			StringBuffer s = new StringBuffer("WebXMLRecord: ");//$NON-NLS-1$ 
-			s.append(path);
-			if (tldRecords.size() > 0) {
-				s.append('\n');//$NON-NLS-1$ 
-				for (int i = 0; i < tldRecords.size(); i++) {
-					s.append(tldRecords.get(i));
-					s.append('\n');//$NON-NLS-1$ 
-				}
-			}
-			return s.toString();
-		}
-	}
-	
-	private class TaglibSorter extends Sorter {
-		Collator collator = Collator.getInstance();
-
-		public boolean compare(Object elementOne, Object elementTwo) {
-			/**
-			 * Returns true if elementTwo is 'greater than' elementOne This is
-			 * the 'ordering' method of the sort operation. Each subclass
-			 * overides this method with the particular implementation of the
-			 * 'greater than' concept for the objects being sorted.
-			 */
-			
-			return (collator.compare(getTaglibPath((ITaglibRecord) elementOne), getTaglibPath((ITaglibRecord) elementTwo))) < 0;
-		}
-		
-		private String getTaglibPath(ITaglibRecord record) {
-			switch(record.getRecordType()) {
-				case ITaglibRecord.JAR:
-					return ((JarRecord) record).getLocation().toString();
-				case ITaglibRecord.TAGDIR:
-					return ((TagDirRecord) record).getPath().toString();
-				case ITaglibRecord.TLD:
-					return ((TLDRecord) record).getPath().toString();
-				case ITaglibRecord.URL:
-					return ((URLRecord) record).getBaseLocation();
-				default:
-					return ""; //$NON-NLS-1$
-			}
-		}
-	}
-
-	static boolean _debugIndexCreation = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/taglib/indexcreation")); //$NON-NLS-1$ //$NON-NLS-2$
-	static boolean _debugIndexTime = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/taglib/indextime")); //$NON-NLS-1$ //$NON-NLS-2$
-
-	private static final String BUILDPATH_DIRTY = "BUILDPATH_DIRTY"; //$NON-NLS-1$
-	private static final String BUILDPATH_ENTRIES = "BUILDPATH_ENTRIES"; //$NON-NLS-1$
-	private static final String BUILDPATH_PROJECT = "BUILDPATH_PROJECT"; //$NON-NLS-1$
-	private static final String SAVE_FORMAT_VERSION = "Tag Library Index 1.0.3"; //$NON-NLS-1$
-	private static final String WEB_INF = "WEB-INF"; //$NON-NLS-1$
-	private static final IPath WEB_INF_PATH = new Path(WEB_INF);
-	private static final String WEB_XML = "web.xml"; //$NON-NLS-1$
-
-	/**
-	 * Notes that the build path information is stale. Some operations can now
-	 * be skipped until a resolve/getAvailable call is made.
-	 */
-	boolean fBuildPathIsDirty = false;
-
-	/**
-	 * Count of entries on the build path. Primary use case is for classpath
-	 * containers that add an entry. Without notification (3.3), we can only
-	 * check after-the-fact.
-	 */
-	int fBuildPathEntryCount = 0;
-
-	/**
-	 * A cached copy of all of the records createable from the XMLCatalog.
-	 */
-	private Collection fCatalogRecords;
-
-	/*
-	 * Records active JARs on the classpath. Taglib descriptors should be
-	 * usable, but the jars by themselves are not.
-	 */
-	Hashtable fClasspathJars;
-
-	/**
-	 * A set of the projects that are in this project's build path.
-	 * Lookups/enumerations will be redirected to the corresponding
-	 * ProjectDescription instances
-	 */
-	Set fClasspathProjects = null;
-
-	// holds references by URI to JARs
-	Hashtable fClasspathReferences;
-
-	/*
-	 * this table is special in that it holds tables of references according
-	 * to local roots
-	 */
-	Hashtable fImplicitReferences;
-
-	Hashtable fJARReferences;
-
-	IProject fProject;
-
-	private String fSaveStateFilename;
-
-	Hashtable fTagDirReferences;
-
-	Hashtable fTLDReferences;
-
-	IResourceDeltaVisitor fVisitor;
-	Hashtable fWebXMLReferences;
-
-	ILock LOCK = Job.getJobManager().newLock();
-
-	private long time0;
-	
-	private TaglibSorter fTaglibSorter = new TaglibSorter();
-
-	ProjectDescription(IProject project, String saveStateFile) {
-		super();
-		fProject = project;
-		fSaveStateFilename = saveStateFile;
-
-		fClasspathJars = new Hashtable(0);
-		fJARReferences = new Hashtable(0);
-		fTagDirReferences = new Hashtable(0);
-		fTLDReferences = new Hashtable(0);
-		fWebXMLReferences = new Hashtable(0);
-		fImplicitReferences = new Hashtable(0);
-		fClasspathReferences = new Hashtable(0);
-		fClasspathProjects = new HashSet();
-
-		restoreReferences();
-	}
-
-	private Collection _getJSP11AndWebXMLJarReferences(Collection allJARs) {
-		List collection = new ArrayList(allJARs.size());
-		Iterator i = allJARs.iterator();
-		while (i.hasNext()) {
-			JarRecord record = (JarRecord) i.next();
-			if (record.has11TLD || record.isMappedInWebXML) {
-				collection.add(record);
-			}
-		}
-		return collection;
-	}
-
-	/**
-	 * Adds the list of known references from this project's build path to the
-	 * map, appending any processed projects into the list to avoid
-	 * build-path-cycles.
-	 * 
-	 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=142408
-	 * 
-	 * @param references -
-	 *            the map of references to ITaglibRecords
-	 * @param projectsProcessed -
-	 *            the list of projects already considered
-	 * @param exportedOnly -
-	 *            Whether to only add references derived from exported build
-	 *            path containers. This method calls itself recursively with
-	 *            this parameter as false.
-	 */
-	void addBuildPathReferences(Map references, List projectsProcessed, boolean exportedOnly) {
-		ensureUpTodate();
-
-		// Add the build path references that are exported from this project
-		Enumeration keys = fClasspathReferences.keys();
-		while (keys.hasMoreElements()) {
-			Object key = keys.nextElement();
-			URLRecord urlRecord = (URLRecord) fClasspathReferences.get(key);
-			if (exportedOnly) {
-				if (urlRecord.isExported) {
-					references.put(key, urlRecord);
-				}
-			}
-			else {
-				references.put(key, urlRecord);
-			}
-		}
-		IProject[] buildpathProjects = (IProject[]) fClasspathProjects.toArray(new IProject[fClasspathProjects.size()]);
-		for (int i = 0; i < buildpathProjects.length; i++) {
-			if (!projectsProcessed.contains(buildpathProjects[i]) && buildpathProjects[i].isAccessible()) {
-				projectsProcessed.add(buildpathProjects[i]);
-				ProjectDescription description = TaglibIndex.getInstance().createDescription(buildpathProjects[i]);
-				description.addBuildPathReferences(references, projectsProcessed, true);
-
-				/*
-				 * 199843 (183756) - JSP Validation Cannot Find Tag Library
-				 * Descriptor in Referenced Projects
-				 * 
-				 * Add any TLD records having URI values from projects on the
-				 * build path
-				 */
-				Map[] rootReferences = (Map[]) description.fImplicitReferences.values().toArray(new Map[description.fImplicitReferences.size()]);
-				for (int j = 0; j < rootReferences.length; j++) {
-					Iterator implicitRecords = rootReferences[j].values().iterator();
-					while (implicitRecords.hasNext()) {
-						ITaglibRecord record = (ITaglibRecord) implicitRecords.next();
-						if (record.getRecordType() == ITaglibRecord.TLD && ((ITLDRecord) record).getURI() != null) {
-							references.put(((ITLDRecord) record).getURI(), record);
-						}
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Erases all known tables
-	 */
-	void clear() {
-		fClasspathJars = new Hashtable(0);
-		fJARReferences = new Hashtable(0);
-		fTagDirReferences = new Hashtable(0);
-		fTLDReferences = new Hashtable(0);
-		fWebXMLReferences = new Hashtable(0);
-		fImplicitReferences = new Hashtable(0);
-		fClasspathReferences = new Hashtable(0);
-	}
-
-	private void closeJarFile(ZipFile file) {
-		if (file == null)
-			return;
-		try {
-			file.close();
-		}
-		catch (IOException ioe) {
-			// no cleanup can be done
-			Logger.logException("TaglibIndex: Could not close zip file " + file.getName(), ioe); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * @param catalogEntry
-	 *            a XML catalog entry pointing to a .jar or .tld file
-	 * @return a ITaglibRecord describing a TLD contributed to the XMLCatalog
-	 *         if one was found at the given location, null otherwise
-	 */
-	private ITaglibRecord createCatalogRecord(ICatalogEntry catalogEntry) {
-		return createCatalogRecord(catalogEntry.getKey(), catalogEntry.getURI());
-	}
-
-	/**
-	 * @param uri -
-	 *            the key value that will become the returned record's "URI"
-	 * @param urlString -
-	 *            the string indicating where the TLD really is
-	 * @return a ITaglibRecord describing a TLD contributed to the XMLCatalog
-	 *         if one was found at the given location, null otherwise
-	 */
-	private ITaglibRecord createCatalogRecord(String uri, String urlString) {
-		ITaglibRecord record = null;
-		// handle "file:" URLs that point to a .jar file on disk (1.1 mode)
-		if (urlString.toLowerCase(Locale.US).endsWith((".jar")) && urlString.startsWith("file:")) { //$NON-NLS-1$ //$NON-NLS-2$
-			String fileLocation = null;
-			try {
-				URL url = new URL(urlString);
-				fileLocation = url.getFile();
-			}
-			catch (MalformedURLException e) {
-				// not worth reporting
-			}
-			if (fileLocation != null) {
-				JarRecord jarRecord = createJARRecord(fileLocation);
-				String[] entries = JarUtilities.getEntryNames(fileLocation);
-				for (int jEntry = 0; jEntry < entries.length; jEntry++) {
-					if (entries[jEntry].endsWith(".tld")) { //$NON-NLS-1$
-						if (entries[jEntry].equals(JarUtilities.JSP11_TAGLIB)) {
-							jarRecord.has11TLD = true;
-							InputStream contents = JarUtilities.getInputStream(fileLocation, entries[jEntry]);
-							if (contents != null) {
-								TaglibInfo info = extractInfo(fileLocation, contents);
-								/*
-								 * the record's reported URI should match the
-								 * catalog entry's "key" so replace the
-								 * detected value
-								 */
-								info.uri = uri;
-								jarRecord.info = info;
-							}
-							try {
-								contents.close();
-							}
-							catch (IOException e) {
-							}
-						}
-					}
-				}
-				if (jarRecord.has11TLD) {
-					if (_debugIndexCreation)
-						Logger.log(Logger.INFO, "created catalog record for " + urlString + "@" + jarRecord.getLocation()); //$NON-NLS-1$ //$NON-NLS-2$
-					record = jarRecord;
-				}
-
-			}
-		}
-		// The rest are URLs into a plug-in...somewhere
-		else {
-			URL url = null;
-			ByteArrayInputStream cachedContents = null;
-			InputStream tldStream = null;
-			try {
-				url = new URL(urlString);
-				URLConnection connection = url.openConnection();
-				connection.setDefaultUseCaches(false);
-				tldStream = connection.getInputStream();
-			}
-			catch (Exception e1) {
-				Logger.logException("Exception reading TLD contributed to the XML Catalog", e1);
-			}
-
-			if (tldStream != null) {
-				int c;
-				ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-				// array dim restriction?
-				byte bytes[] = new byte[2048];
-				try {
-					while ((c = tldStream.read(bytes)) >= 0) {
-						buffer.write(bytes, 0, c);
-					}
-					cachedContents = new ByteArrayInputStream(buffer.toByteArray());
-				}
-				catch (IOException ioe) {
-					// no cleanup can be done
-				}
-				finally {
-					try {
-						tldStream.close();
-					}
-					catch (IOException e) {
-					}
-				}
-
-				URLRecord urlRecord = null;
-				TaglibInfo info = extractInfo(urlString, cachedContents);
-				if (info != null) {
-					/*
-					 * the record's reported URI should match the catalog
-					 * entry's "key" so replace the detected value
-					 */
-					info.uri = uri;
-					urlRecord = new URLRecord();
-					urlRecord.info = info;
-					urlRecord.baseLocation = urlString;
-					urlRecord.url = url; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				try {
-					cachedContents.close();
-				}
-				catch (IOException e) {
-				}
-				record = urlRecord;
-			}
-		}
-		return record;
-	}
-
-	/**
-	 * @param resource
-	 * @return
-	 */
-	private JarRecord createJARRecord(IResource jar) {
-		IPath location = jar.getLocation();
-		JarRecord jarRecord = null;
-		if (location != null) {
-			jarRecord = createJARRecord(location.toString());
-		}
-		else if (jar.getLocationURI() != null) {
-			jarRecord = createJARRecord(jar.getLocationURI().toString());
-		}
-		return jarRecord;
-	}
-
-	private JarRecord createJARRecord(String fileLocation) {
-		JarRecord record = new JarRecord();
-		record.info = new TaglibInfo();
-		record.location = new Path(fileLocation);
-		record.urlRecords = new ArrayList(0);
-		return record;
-	}
-
-	/**
-	 * @return
-	 */
-	private TagDirRecord createTagdirRecord(IFolder tagdir) {
-		IPath tagdirPath = tagdir.getFullPath();
-		TagDirRecord record = new TagDirRecord();
-		record.path = tagdir.getFullPath();
-		record.info = new TaglibInfo();
-		// 8.4.3
-		if (tagdir.getName().equals("tags")) //$NON-NLS-1$
-			record.info.shortName = "tags"; //$NON-NLS-1$
-		else {
-			boolean determined = false;
-			IPath path = tagdirPath;
-			String[] segments = path.segments();
-			for (int i = 1; i < segments.length; i++) {
-				if (segments[i - 1].equals("WEB-INF") && segments[i].equals("tags")) { //$NON-NLS-1$ //$NON-NLS-2$
-					IPath tagdirLocalPath = path.removeFirstSegments(i + 1);
-					record.info.shortName = StringUtils.replace(tagdirLocalPath.toString(), "/", "-");
-					determined = true;
-				}
-			}
-			if (!determined) {
-				record.info.shortName = StringUtils.replace(tagdirPath.toString(), "/", "-");
-			}
-		}
-		// 8.4.3
-		record.info.tlibVersion = "1.0";
-		record.info.description = "";
-		record.info.displayName = "";
-		record.info.smallIcon = "";
-		record.info.largeIcon = "";
-
-		try {
-			IResource[] tagfiles = tagdir.members();
-			for (int i = 0; i < tagfiles.length; i++) {
-				if (tagfiles[i].getType() != IResource.FILE)
-					continue;
-				String extension = tagfiles[i].getFileExtension();
-				if (extension != null && (extension.equals("tag") || extension.equals("tagx"))) {
-					record.tags.add(tagfiles[i].getName());
-				}
-			}
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-
-		return record;
-	}
-
-	/**
-	 * @param resource
-	 * @return
-	 */
-	private TLDRecord createTLDRecord(IResource tld) {
-		TLDRecord record = new TLDRecord();
-		record.path = tld.getFullPath();
-		InputStream contents = null;
-		try {
-			if (tld.isAccessible()) {
-				contents = ((IFile) tld).getContents(true);
-				String basePath = tld.getFullPath().toString();
-				TaglibInfo info = extractInfo(basePath, contents);
-				if (info != null) {
-					record.info = info;
-				}
-			}
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		finally {
-			try {
-				if (contents != null) {
-					contents.close();
-				}
-			}
-			catch (IOException e) {
-				// ignore
-			}
-		}
-		return record;
-	}
-
-	private void ensureUpTodate() {
-		IClasspathEntry[] entries = null;
-			try {
-				/*
-				 * If the Java nature isn't present (or something else is
-				 * wrong), don't check the build path.
-				 */
-				IJavaProject jproject = JavaCore.create(fProject);
-				if (jproject != null && jproject.exists()) {
-					entries = jproject.getResolvedClasspath(true);
-				}
-			}
-			catch (JavaModelException e) {
-				Logger.logException(e);
-			}
-		if (entries != null) {
-			try {
-				LOCK.acquire();
-				/*
-				 * Double-check that the number of build path entries has not
-				 * changed. This should cover most cases such as when a
-				 * library is added into or removed from a container.
-				 */
-				fBuildPathIsDirty = fBuildPathIsDirty || (fBuildPathEntryCount != entries.length);
-
-				if (fBuildPathIsDirty) {
-					indexClasspath(entries);
-					fBuildPathIsDirty = false;
-				}
-			}
-			finally {
-				LOCK.release();
-			}
-		}
-	}
-
-	private TaglibInfo extractInfo(String basePath, InputStream tldContents) {
-		TaglibInfo info = new TaglibInfo();
-		if (tldContents != null) {
-			DocumentProvider provider = new DocumentProvider();
-			provider.setInputStream(tldContents);
-			provider.setValidating(false);
-			provider.setRootElementName(JSP12TLDNames.TAGLIB);
-			provider.setBaseReference(basePath);
-			Node child = provider.getRootElement();
-			if (child == null || child.getNodeType() != Node.ELEMENT_NODE || !child.getNodeName().equals(JSP12TLDNames.TAGLIB)) {
-				return null;
-			}
-			child = child.getFirstChild();
-			while (child != null) {
-				if (child.getNodeType() == Node.ELEMENT_NODE) {
-					if (child.getNodeName().equals(JSP12TLDNames.URI)) {
-						info.uri = getTextContents(child);
-					}
-					else if (child.getNodeName().equals(JSP12TLDNames.SHORT_NAME) || child.getNodeName().equals(JSP11TLDNames.SHORTNAME)) {
-						info.shortName = getTextContents(child);
-					}
-					else if (child.getNodeName().equals(JSP12TLDNames.DESCRIPTION) || child.getNodeName().equals(JSP11TLDNames.INFO)) {
-						info.description = getTextContents(child);
-					}
-					else if (child.getNodeName().equals(JSP12TLDNames.DISPLAY_NAME)) {
-						info.displayName = getTextContents(child);
-					}
-					else if (child.getNodeName().equals(JSP12TLDNames.JSP_VERSION) || child.getNodeName().equals(JSP11TLDNames.JSPVERSION)) {
-						info.jspVersion = getTextContents(child);
-					}
-					else if (child.getNodeName().equals(JSP12TLDNames.TLIB_VERSION) || child.getNodeName().equals(JSP11TLDNames.TLIBVERSION)) {
-						info.tlibVersion = getTextContents(child);
-					}
-					else if (child.getNodeName().equals(JSP12TLDNames.SMALL_ICON)) {
-						info.smallIcon = getTextContents(child);
-					}
-					else if (child.getNodeName().equals(JSP12TLDNames.LARGE_ICON)) {
-						info.largeIcon = getTextContents(child);
-					}
-				}
-				child = child.getNextSibling();
-			}
-		}
-		return info;
-	}
-
-	List getAvailableTaglibRecords(IPath path) {
-		ensureUpTodate();
-		Collection records = null;
-		try {
-			float jspVersion = DeploymentDescriptorPropertyCache.getInstance().getJSPVersion(path);
-			LOCK.acquire();
-
-			Collection implicitReferences = new HashSet(getImplicitReferences(path.toString()).values());
-			records = new ArrayList(fTLDReferences.size() + fTagDirReferences.size() + fJARReferences.size() + fWebXMLReferences.size());
-			records.addAll(fTLDReferences.values());
-			if (jspVersion >= 1.1) {
-				records.addAll(_getJSP11AndWebXMLJarReferences(fJARReferences.values()));
-			}
-
-			if (jspVersion >= 1.2) {
-				records.addAll(implicitReferences);
-
-				Map buildPathReferences = new HashMap();
-				List projectsProcessed = new ArrayList(fClasspathProjects.size() + 1);
-				projectsProcessed.add(fProject);
-				addBuildPathReferences(buildPathReferences, projectsProcessed, false);
-				records.addAll(buildPathReferences.values());
-			}
-			if (jspVersion >= 2.0) {
-				records.addAll(fTagDirReferences.values());
-			}
-
-			IPath localWebXML = new Path(getLocalRoot(path.toString())).append("/WEB-INF/web.xml"); //$NON-NLS-1$ 
-			WebXMLRecord webxmlRecord = (WebXMLRecord) fWebXMLReferences.get(localWebXML.toString());
-			if(webxmlRecord != null)
-				records.addAll(webxmlRecord.getTLDRecords());
-
-			records.addAll(getCatalogRecords());
-		}
-		finally {
-			LOCK.release();
-		}
-		return new ArrayList(records);
-	}
-
-	/**
-	 * Provides a stream to a local copy of the input or null if not possible
-	 */
-	private InputStream getCachedInputStream(ZipFile zipFile, ZipEntry zipEntry) {
-		InputStream cache = null;
-		if (zipFile != null) {
-			if (zipEntry != null) {
-				InputStream entryInputStream = null;
-				try {
-					entryInputStream = zipFile.getInputStream(zipEntry);
-				}
-				catch (IOException ioExc) {
-					Logger.logException("Taglib Index: " + zipFile.getName(), ioExc); //$NON-NLS-1$
-				}
-
-				if (entryInputStream != null) {
-					int c;
-					ByteArrayOutputStream buffer = null;
-					if (zipEntry.getSize() > 0) {
-						buffer = new ByteArrayOutputStream((int) zipEntry.getSize());
-					}
-					else {
-						buffer = new ByteArrayOutputStream();
-					}
-					// array dim restriction?
-					byte bytes[] = new byte[2048];
-					try {
-						while ((c = entryInputStream.read(bytes)) >= 0) {
-							buffer.write(bytes, 0, c);
-						}
-						cache = new ByteArrayInputStream(buffer.toByteArray());
-					}
-					catch (IOException ioe) {
-						// no cleanup can be done
-					}
-					finally {
-						try {
-							entryInputStream.close();
-						}
-						catch (IOException e) {
-						}
-					}
-				}
-			}
-		}
-
-		return cache;
-	}
-
-	private Collection getCatalogRecords() {
-		if (fCatalogRecords == null) {
-			List records = new ArrayList();
-			ICatalog defaultCatalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
-			if (defaultCatalog != null) {
-				// Process default catalog
-				ICatalogEntry[] entries = defaultCatalog.getCatalogEntries();
-				for (int entry = 0; entry < entries.length; entry++) {
-					ITaglibRecord record = createCatalogRecord(entries[entry]);
-					records.add(record);
-				}
-
-				// Process declared OASIS nextCatalogs catalog
-				INextCatalog[] nextCatalogs = defaultCatalog.getNextCatalogs();
-				for (int nextCatalog = 0; nextCatalog < nextCatalogs.length; nextCatalog++) {
-					ICatalog catalog = nextCatalogs[nextCatalog].getReferencedCatalog();
-					ICatalogEntry[] entries2 = catalog.getCatalogEntries();
-					for (int entry = 0; entry < entries2.length; entry++) {
-						String uri = entries2[entry].getURI();
-						if (uri != null) {
-							uri = uri.toLowerCase(Locale.US);
-							if (uri.endsWith((".jar")) || uri.endsWith((".tld"))) {
-								ITaglibRecord record = createCatalogRecord(entries2[entry]);
-								if (record != null) {
-									records.add(record);
-								}
-							}
-						}
-					}
-				}
-			}
-			fCatalogRecords = records;
-		}
-		return fCatalogRecords;
-	}
-
-	/**
-	 * @return Returns the implicitReferences for the given path
-	 */
-	Hashtable getImplicitReferences(String path) {
-		String localRoot = getLocalRoot(path);
-		Hashtable implicitReferences = (Hashtable) fImplicitReferences.get(localRoot);
-		if (implicitReferences == null) {
-			implicitReferences = new ArrayMap(1);
-			fImplicitReferences.put(localRoot, implicitReferences);
-		}
-		return implicitReferences;
-	}
-
-	/**
-	 * @param basePath
-	 * @return the applicable Web context root path, if one exists
-	 * @deprecated
-	 */
-	IPath getLocalRoot(IPath basePath) {
-		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
-
-		// existing workspace resources - this is the 93% case
-		IResource file = FileBuffers.getWorkspaceFileAtLocation(basePath);
-
-		// Try the base path as a folder first
-		if (file == null && basePath.segmentCount() > 1) {
-			file = workspaceRoot.getFolder(basePath);
-		}
-		// If not a folder, then try base path as a file
-		if (file != null && !file.exists() && basePath.segmentCount() > 1) {
-			file = workspaceRoot.getFile(basePath);
-		}
-
-		if (file == null && basePath.segmentCount() == 1) {
-			file = workspaceRoot.getProject(basePath.segment(0));
-		}
-
-		if (file == null) {
-			/*
-			 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=116529
-			 * 
-			 * This method produces a less accurate result, but doesn't
-			 * require that the file exist yet.
-			 */
-			IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(basePath);
-			if (files.length > 0)
-				file = files[0];
-		}
-
-		while (file != null) {
-			/**
-			 * Treat any parent folder with a WEB-INF subfolder as a web-app
-			 * root
-			 */
-			IContainer folder = null;
-			if ((file.getType() & IResource.FOLDER) != 0) {
-				folder = (IContainer) file;
-			}
-			else {
-				folder = file.getParent();
-			}
-			// getFolder on a workspace root must use a full path, skip
-			if (folder != null && (folder.getType() & IResource.ROOT) == 0) {
-				IFolder webinf = folder.getFolder(WEB_INF_PATH);
-				if (webinf != null && webinf.exists()) {
-					return folder.getFullPath();
-				}
-			}
-			file = file.getParent();
-		}
-
-		return fProject.getFullPath();
-	}
-
-	/**
-	 * @param basePath
-	 * @return
-	 */
-	private String getLocalRoot(String basePath) {
-		return getLocalRoot(new Path(basePath)).toString();
-	}
-
-	private String getTextContents(Node parent) {
-		NodeList children = parent.getChildNodes();
-		if (children.getLength() == 1) {
-			return children.item(0).getNodeValue().trim();
-		}
-		StringBuffer s = new StringBuffer();
-		Node child = parent.getFirstChild();
-		while (child != null) {
-			if (child.getNodeType() == Node.ENTITY_REFERENCE_NODE) {
-				String reference = ((EntityReference) child).getNodeValue();
-				if (reference == null && child.getNodeName() != null) {
-					reference = "&" + child.getNodeName() + ";"; //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				if (reference != null) {
-					s.append(reference.trim());
-				}
-			}
-			else {
-				s.append(child.getNodeValue().trim());
-			}
-			child = child.getNextSibling();
-		}
-		return s.toString().trim();
-	}
-
-	/**
-	 * @return Returns the visitor.
-	 */
-	IResourceDeltaVisitor getVisitor() {
-		if (fVisitor == null) {
-			fVisitor = new DeltaVisitor();
-		}
-		return fVisitor;
-	}
-
-	void handleElementChanged(IJavaElementDelta delta) {
-		if (fBuildPathIsDirty) {
-			return;
-		}
-
-		// Logger.log(Logger.INFO_DEBUG, "IJavaElementDelta: " + delta);
-		IJavaElement element = delta.getElement();
-		if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT && ((IPackageFragmentRoot) element).isArchive()) {
-			time0 = System.currentTimeMillis();
-			if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT && ((IPackageFragmentRoot) element).isExternal()) {
-			}
-			String libLocation = null;
-			int taglibRecordEventKind = -1;
-			if ((delta.getFlags() & IJavaElementDelta.F_ADDED_TO_CLASSPATH) > 0 || (delta.getFlags() & IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED) > 0 || (delta.getFlags() & IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) > 0) {
-				taglibRecordEventKind = ITaglibIndexDelta.ADDED;
-				IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(element.getPath());
-				if (file.isAccessible() && file.getLocation() != null)
-					libLocation = file.getLocation().toString();
-				else
-					libLocation = element.getPath().toString();
-			}
-			if (libLocation != null) {
-				boolean fragmentisExported = true;
-				try {
-					IClasspathEntry rawClasspathEntry = ((IPackageFragmentRoot) element).getRawClasspathEntry();
-					/*
-					 * null may also be returned for deletions depending on
-					 * resource/build path notification order. If it's null,
-					 * it's been deleted and whether it's exported won't
-					 * really matter
-					 */
-					if (rawClasspathEntry != null) {
-						fragmentisExported = rawClasspathEntry.isExported();
-					}
-				}
-				catch (JavaModelException e) {
-					Logger.logException("Problem handling build path entry for " + element.getPath(), e); //$NON-NLS-1$
-				}
-				if ((delta.getFlags() & IJavaElementDelta.F_ADDED_TO_CLASSPATH) > 0) {
-					fBuildPathEntryCount++;
-				}
-				else if ((delta.getFlags() & IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) > 0) {
-					fBuildPathEntryCount--;
-				}
-				updateClasspathLibrary(libLocation, taglibRecordEventKind, fragmentisExported);
-			}
-			if (_debugIndexTime)
-				Logger.log(Logger.INFO, "processed build path delta for " + fProject.getName() + "(" + element.getPath() + ") in " + (System.currentTimeMillis() - time0) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-	}
-
-	void index() {
-		time0 = System.currentTimeMillis();
-
-		fTLDReferences.clear();
-		fJARReferences.clear();
-		fTagDirReferences.clear();
-		fWebXMLReferences.clear();
-
-		try {
-			fProject.accept(new Indexer(), 0);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-
-		if (_debugIndexTime)
-			Logger.log(Logger.INFO, "indexed " + fProject.getName() + " contents in " + (System.currentTimeMillis() - time0) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	/**
-	 * @deprecated
-	 */
-	void indexClasspath() {
-		if (_debugIndexTime)
-			time0 = System.currentTimeMillis();
-		fClasspathProjects.clear();
-		fClasspathReferences.clear();
-		fClasspathJars.clear();
-		fBuildPathEntryCount = 0;
-
-		IJavaProject javaProject = JavaCore.create(fProject);
-		/*
-		 * If the Java nature isn't present (or something else is wrong),
-		 * don't check the build path.
-		 */
-		if (javaProject != null && javaProject.exists()) {
-			indexClasspath(javaProject);
-		}
-		// else {
-		// Logger.log(Logger.WARNING, "TaglibIndex was asked to index non-Java
-		// Project " + fProject.getName()); //$NON-NLS-1$
-		// }
-
-		if (_debugIndexTime)
-			Logger.log(Logger.INFO, "indexed " + fProject.getName() + " classpath in " + (System.currentTimeMillis() - time0) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	void indexClasspath(IClasspathEntry[] entries) {
-		if (_debugIndexTime)
-			time0 = System.currentTimeMillis();
-		fClasspathProjects.clear();
-		fClasspathReferences.clear();
-		fClasspathJars.clear();
-
-		fBuildPathEntryCount = entries.length;
-		for (int i = 0; i < entries.length; i++) {
-			indexClasspath(entries[i]);
-		}
-
-		if (_debugIndexTime)
-			Logger.log(Logger.INFO, "indexed " + fProject.getName() + " classpath in " + (System.currentTimeMillis() - time0) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	/**
-	 * @param entry
-	 */
-	private void indexClasspath(IClasspathEntry entry) {
-		switch (entry.getEntryKind()) {
-			case IClasspathEntry.CPE_CONTAINER : {
-				IClasspathContainer container = (IClasspathContainer) entry;
-				IClasspathEntry[] containedEntries = container.getClasspathEntries();
-				for (int i = 0; i < containedEntries.length; i++) {
-					indexClasspath(containedEntries[i]);
-				}
-			}
-				break;
-			case IClasspathEntry.CPE_LIBRARY : {
-				/*
-				 * Ignore libs in required projects that are not exported
-				 */
-				IPath libPath = entry.getPath();
-				if (!fClasspathJars.containsKey(libPath.toString())) {
-					if (libPath.toFile().exists()) {
-						updateClasspathLibrary(libPath.toString(), ITaglibIndexDelta.ADDED, entry.isExported());
-					}
-					else {
-						/*
-						 * Note: .jars on the classpath inside of the project
-						 * will have duplicate entries in the JAR references
-						 * table that will e returned to
-						 * getAvailableTaglibRecords().
-						 */
-						IFile libFile = ResourcesPlugin.getWorkspace().getRoot().getFile(libPath);
-						if (libFile != null && libFile.exists()) {
-							updateClasspathLibrary(libFile.getLocation().toString(), ITaglibIndexDelta.ADDED, entry.isExported());
-						}
-					}
-				}
-			}
-				break;
-			case IClasspathEntry.CPE_PROJECT : {
-				/*
-				 * We're currently ignoring whether the project exports all of
-				 * its build path
-				 */
-				IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(entry.getPath().lastSegment());
-				if (project != null) {
-					fClasspathProjects.add(project);
-				}
-			}
-				break;
-			case IClasspathEntry.CPE_SOURCE :
-				break;
-			case IClasspathEntry.CPE_VARIABLE : {
-				IPath libPath = JavaCore.getResolvedVariablePath(entry.getPath());
-				if (libPath != null) {
-					File file = libPath.toFile();
-
-					// file in filesystem
-					if (file.exists() && !file.isDirectory()) {
-						updateClasspathLibrary(libPath.toString(), ITaglibRecordEvent.ADDED, entry.isExported());
-					}
-					else {
-						// workspace file
-						IFile jarFile = ResourcesPlugin.getWorkspace().getRoot().getFile(libPath);
-						if (jarFile.isAccessible() && jarFile.getType() == IResource.FILE && jarFile.getLocation() != null) {
-							String jarPathString = jarFile.getLocation().toString();
-							updateClasspathLibrary(jarPathString, ITaglibRecordEvent.ADDED, entry.isExported());
-						}
-					}
-				}
-			}
-				break;
-		}
-	}
-
-	/*
-	 * private void removeClasspathLibrary(String libraryLocation) { JarRecord
-	 * record = (JarRecord) fClasspathJars.remove(libraryLocation); if (record !=
-	 * null) { URLRecord[] records = (URLRecord[])
-	 * record.getURLRecords().toArray(new URLRecord[0]); for (int i = 0; i <
-	 * records.length; i++) {
-	 * fClasspathReferences.remove(records[i].getURI()); }
-	 * TaglibIndex.fireTaglibRecordEvent(new TaglibRecordEvent(record,
-	 * ITaglibIndexDelta.REMOVED)); } }
-	 */
-
-	/**
-	 * @deprecated
-	 */
-	private void indexClasspath(IJavaProject javaProject) {
-		if (javaProject == null)
-			return;
-
-		IProject project = javaProject.getProject();
-		if (project.equals(fProject)) {
-			try {
-				IClasspathEntry[] entries = javaProject.getResolvedClasspath(true);
-				fBuildPathEntryCount = entries.length;
-				for (int i = 0; i < entries.length; i++) {
-					indexClasspath(entries[i]);
-				}
-			}
-			catch (JavaModelException e) {
-				Logger.logException("Error searching Java Build Path + (" + fProject.getName() + ") for tag libraries", e); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-	}
-
-	private String readTextofChild(Node node, String childName) {
-		NodeList children = node.getChildNodes();
-		for (int i = 0; i < children.getLength(); i++) {
-			Node child = children.item(i);
-			if (child.getNodeType() == Node.ELEMENT_NODE && child.getNodeName().equals(childName)) {
-				return getTextContents(child);
-			}
-		}
-		return ""; //$NON-NLS-1$
-	}
-
-	void removeJAR(IResource jar) {
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "removing records for JAR " + jar.getFullPath()); //$NON-NLS-1$
-		JarRecord record = (JarRecord) fJARReferences.remove(jar.getFullPath().toString());
-		if (record != null) {
-			URLRecord[] records = (URLRecord[]) record.getURLRecords().toArray(new URLRecord[0]);
-			for (int i = 0; i < records.length; i++) {
-				TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, records[i], ITaglibIndexDelta.REMOVED));
-				((ArrayMap) getImplicitReferences(jar.getFullPath().toString())).remove(records[i].getURI(), records[i]);
-			}
-			if (record.has11TLD) {
-				TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, ITaglibIndexDelta.REMOVED));
-			}
-		}
-	}
-
-	void removeTag(IResource resource) {
-		TagDirRecord record = (TagDirRecord) fTagDirReferences.get(resource.getParent().getFullPath().toString());
-		if (record != null) {
-			record.tags.remove(resource.getName());
-			TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, ITaglibIndexDelta.CHANGED));
-		}
-	}
-
-	void removeTagDir(IResource tagdir) {
-		IPath tagdirPath = tagdir.getFullPath();
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "removing record for " + tagdirPath); //$NON-NLS-1$
-		ITaglibRecord record = (ITaglibRecord) fTagDirReferences.remove(tagdirPath.toString());
-		if (record != null) {
-			TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, ITaglibIndexDelta.REMOVED));
-		}
-	}
-
-	void removeTLD(IResource tld) {
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "removing record for " + tld.getFullPath()); //$NON-NLS-1$
-		TLDRecord record = (TLDRecord) fTLDReferences.remove(tld.getFullPath().toString());
-		if (record != null) {
-			if (record.getURI() != null) {
-				((ArrayMap) getImplicitReferences(tld.getFullPath().toString())).remove(record.getURI(), record);
-			}
-			TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, ITaglibIndexDelta.REMOVED));
-		}
-	}
-
-	void removeWebXML(IResource webxml) {
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "removing records for " + webxml.getFullPath()); //$NON-NLS-1$
-		WebXMLRecord record = (WebXMLRecord) fWebXMLReferences.remove(webxml.getFullPath().toString());
-		if (record != null) {
-			TLDRecord[] records = (TLDRecord[]) record.getTLDRecords().toArray(new TLDRecord[0]);
-			for (int i = 0; i < records.length; i++) {
-				if (_debugIndexCreation)
-					Logger.log(Logger.INFO, "removed record for " + records[i].getURI() + "@" + records[i].path); //$NON-NLS-1$ //$NON-NLS-2$
-				((ArrayMap) getImplicitReferences(webxml.getFullPath().toString())).remove(records[i].getURI(), records[i]);
-				TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, records[i], ITaglibIndexDelta.REMOVED));
-			}
-		}
-	}
-
-	/**
-	 * @param basePath
-	 * @param reference
-	 * @return
-	 */
-	ITaglibRecord resolve(String basePath, String reference) {
-		ensureUpTodate();
-
-		ITaglibRecord record = null;
-		String path = null;
-		try {
-			float jspVersion = DeploymentDescriptorPropertyCache.getInstance().getJSPVersion(new Path(basePath));
-
-			/**
-			 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=196177 Support
-			 * resolution in flexible projects
-			 */
-			IPath resourcePath = FacetModuleCoreSupport.resolve(new Path(basePath), reference);
-			if (resourcePath.segmentCount() > 1) {
-				if (resourcePath.toString().toLowerCase(Locale.US).endsWith(".tld")) { //$NON-NLS-1$ 
-					IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(resourcePath);
-					if (file.isAccessible()) {
-						path = resourcePath.toString();
-					}
-				}
-				else if (resourcePath.toString().toLowerCase(Locale.US).endsWith(".jar")) { //$NON-NLS-1$ 
-					IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(resourcePath);
-					if (file.isAccessible()) {
-						path = resourcePath.toString();
-					}
-				}
-			}
-
-			LOCK.acquire();
-
-			String localRoot = getLocalRoot(basePath);
-			/**
-			 * Workaround for problem in URIHelper; uris starting with '/' are
-			 * returned as-is.
-			 */
-			if (path == null) {
-				if (reference.startsWith("/")) { //$NON-NLS-1$
-					path = localRoot + reference;
-				}
-				else {
-					path = URIHelper.normalize(reference, basePath, localRoot);
-				}
-			}
-
-			// order dictated by JSP spec 2.0 section 7.2.3
-			IPath localWebXML = new Path(localRoot).append("/WEB-INF/web.xml"); //$NON-NLS-1$ 
-			WebXMLRecord webxmlRecord = (WebXMLRecord) fWebXMLReferences.get(localWebXML.toString());
-			if (webxmlRecord != null) {
-				for (int i = 0; i < webxmlRecord.tldRecords.size(); i++) {
-					ITaglibRecord record2 = (ITaglibRecord) webxmlRecord.tldRecords.get(i);
-					ITaglibDescriptor descriptor = record2.getDescriptor();
-					if (reference.equals(descriptor.getURI())) {
-						record = record2;
-					}
-				}
-			}
-
-			if (record == null) {
-				record = (ITaglibRecord) fJARReferences.get(path);
-				// only if 1.1 TLD was found
-				if (jspVersion < 1.1 || (record instanceof JarRecord && !((JarRecord) record).has11TLD)) {
-					record = null;
-				}
-			}
-
-			if (record == null) {
-				record = (ITaglibRecord) fTLDReferences.get(path);
-			}
-			if (record == null && jspVersion >= 1.2) {
-				Object[] records = (Object[]) getImplicitReferences(basePath).get(reference);
-				if (records != null && records.length > 0) {
-					if (records.length > 1)
-						records = fTaglibSorter.sort(records);
-					record =  (ITaglibRecord) records[records.length - 1];
-				}
-			}
-
-
-			if (record == null && jspVersion >= 2.0) {
-				record = (ITaglibRecord) fTagDirReferences.get(path);
-			}
-
-			if (record == null && jspVersion >= 1.2) {
-				record = (ITaglibRecord) fClasspathReferences.get(reference);
-			}
-			if (record == null && jspVersion >= 1.2) {
-				Map buildPathReferences = new HashMap();
-				List projectsProcessed = new ArrayList(fClasspathProjects.size() + 1);
-				projectsProcessed.add(fProject);
-				addBuildPathReferences(buildPathReferences, projectsProcessed, false);
-				record = (ITaglibRecord) buildPathReferences.get(reference);
-			}
-
-			// Check the XML Catalog
-			if (record == null) {
-				ICatalog catalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
-				if (catalog != null) {
-					String resolvedString = null;
-					try {
-						// Check as system reference first
-						resolvedString = catalog.resolveSystem(reference);
-						// Check as URI
-						if (resolvedString == null || resolvedString.trim().length() == 0) {
-							resolvedString = catalog.resolveURI(reference);
-						}
-						// Check as public ID
-						if (resolvedString == null || resolvedString.trim().length() == 0) {
-							resolvedString = catalog.resolvePublic(reference, basePath);
-						}
-					}
-					catch (Exception e) {
-						Logger.logException(e);
-					}
-					if (resolvedString != null && resolvedString.trim().length() > 0) {
-						record = createCatalogRecord(reference, resolvedString);
-					}
-				}
-			}
-
-			/*
-			 * If no records were found and no local-root applies, check ALL
-			 * of the web.xml files as a fallback
-			 */
-			if (record == null && fProject.getFullPath().toString().equals(localRoot)) {
-				WebXMLRecord[] webxmls = (WebXMLRecord[]) fWebXMLReferences.values().toArray(new WebXMLRecord[0]);
-				for (int i = 0; i < webxmls.length; i++) {
-					if (record != null)
-						continue;
-					Object[] records = (Object[]) getImplicitReferences(webxmls[i].path.toString()).get(reference);
-					if (records != null && records.length > 0) {
-						if (records.length > 1)
-							records = fTaglibSorter.sort(records);
-						record =  (ITaglibRecord) records[records.length - 1];
-					}
-				}
-			}
-		}
-		finally {
-			LOCK.release();
-		}
-
-		return record;
-	}
-
-	/**
-	 * Restores any saved reference tables
-	 */
-	private void restoreReferences() {
-		final boolean notifyOnRestoration = true;
-		if (TaglibIndex.ENABLED) {
-			// resources first
-			index();
-			// now build path
-
-			// ================ test reload time ========================
-			boolean restored = false;
-			File savedState = new File(fSaveStateFilename);
-			if (savedState.exists()) {
-				Reader reader = null;
-				try {
-					time0 = System.currentTimeMillis();
-					reader = new InputStreamReader(new BufferedInputStream(new FileInputStream(savedState)), "UTF-16"); //$NON-NLS-1$ 
-					// use a string buffer temporarily to reduce string
-					// creation
-					StringBuffer buffer = new StringBuffer();
-					char array[] = new char[2048];
-					int charsRead = 0;
-					while ((charsRead = reader.read(array)) != -1) {
-						if (charsRead > 0) {
-							buffer.append(array, 0, charsRead);
-						}
-					}
-
-					IDocument doc = new org.eclipse.jface.text.Document();
-					doc.set(buffer.toString());
-					int lines = doc.getNumberOfLines();
-					if (lines > 0) {
-						IRegion line = doc.getLineInformation(0);
-						String lineText = doc.get(line.getOffset(), line.getLength());
-						JarRecord libraryRecord = null;
-						if (SAVE_FORMAT_VERSION.equals(lineText.trim())) {
-							IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
-
-							for (int i = 1; i < lines && !fBuildPathIsDirty; i++) {
-								line = doc.getLineInformation(i);
-								lineText = doc.get(line.getOffset(), line.getLength());
-								StringTokenizer toker = new StringTokenizer(lineText, "|"); //$NON-NLS-1$
-								if (toker.hasMoreTokens()) {
-									String tokenType = toker.nextToken();
-									if ("JAR".equalsIgnoreCase(tokenType)) { //$NON-NLS-1$ //$NON-NLS-2$
-										boolean has11TLD = Boolean.valueOf(toker.nextToken()).booleanValue();
-										boolean exported = Boolean.valueOf(toker.nextToken()).booleanValue();
-										// make the rest the libraryLocation
-										String libraryLocation = toker.nextToken();
-										while (toker.hasMoreTokens()) {
-											libraryLocation = libraryLocation + "|" + toker.nextToken(); //$NON-NLS-1$ //$NON-NLS-2$
-										}
-										libraryLocation = libraryLocation.trim();
-										if (libraryRecord != null && notifyOnRestoration) {
-											TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, libraryRecord, ITaglibIndexDelta.ADDED));
-										}
-										// Create a new JarRecord
-										libraryRecord = createJARRecord(libraryLocation);
-										libraryRecord.has11TLD = has11TLD;
-										libraryRecord.isExported = exported;
-
-										// Add a URLRecord for the 1.1 TLD
-										if (has11TLD) {
-											InputStream contents = JarUtilities.getInputStream(libraryLocation, JarUtilities.JSP11_TAGLIB);
-											if (contents != null) {
-												TaglibInfo info = extractInfo(libraryLocation, contents);
-
-												if (info != null && info.uri != null && info.uri.length() > 0) {
-													URLRecord urlRecord = new URLRecord();
-													urlRecord.info = info;
-													urlRecord.isExported = exported;
-													urlRecord.baseLocation = libraryLocation;
-													try {
-														urlRecord.url = new URL("jar:file:" + libraryLocation + "!/" + JarUtilities.JSP11_TAGLIB); //$NON-NLS-1$ //$NON-NLS-2$
-														libraryRecord.urlRecords.add(urlRecord);
-														fClasspathReferences.put(urlRecord.getURI(), urlRecord);
-														if (_debugIndexCreation)
-															Logger.log(Logger.INFO, "created record for " + urlRecord.getURI() + "@" + urlRecord.getURL()); //$NON-NLS-1$ //$NON-NLS-2$
-													}
-													catch (MalformedURLException e) {
-														/*
-														 * don't record this
-														 * URI
-														 */
-														Logger.logException(e);
-													}
-												}
-												try {
-													contents.close();
-												}
-												catch (IOException e) {
-												}
-											}
-										}
-
-										fClasspathJars.put(libraryLocation, libraryRecord);
-									}
-									else if ("URL".equalsIgnoreCase(tokenType) && libraryRecord != null) { //$NON-NLS-1$
-										// relies on a previously declared JAR
-										// record
-										boolean exported = Boolean.valueOf(toker.nextToken()).booleanValue();
-										// make the rest the URL
-										String urlString = toker.nextToken();
-										while (toker.hasMoreTokens()) {
-											urlString = urlString + "|" + toker.nextToken(); //$NON-NLS-1$ //$NON-NLS-2$
-										}
-										urlString = urlString.trim();
-										// Append a URLrecord
-										URLRecord urlRecord = new URLRecord();
-										urlRecord.url = new URL(urlString); //$NON-NLS-1$ //$NON-NLS-2$
-										urlRecord.isExported = exported;
-										urlRecord.baseLocation = libraryRecord.location.toString();
-										libraryRecord.urlRecords.add(urlRecord);
-
-										ByteArrayInputStream cachedContents = null;
-										InputStream tldStream = null;
-										try {
-											URLConnection connection = urlRecord.url.openConnection();
-											connection.setDefaultUseCaches(false);
-											tldStream = connection.getInputStream();
-										}
-										catch (IOException e1) {
-											Logger.logException(e1);
-										}
-
-										int c;
-										ByteArrayOutputStream byteArrayOutput = new ByteArrayOutputStream();
-										// array dim restriction?
-										byte bytes[] = new byte[2048];
-										try {
-											while ((c = tldStream.read(bytes)) >= 0) {
-												byteArrayOutput.write(bytes, 0, c);
-											}
-											cachedContents = new ByteArrayInputStream(byteArrayOutput.toByteArray());
-										}
-										catch (IOException ioe) {
-											// no cleanup can be done
-										}
-										finally {
-											try {
-												tldStream.close();
-											}
-											catch (IOException e) {
-											}
-										}
-
-										TaglibInfo info = extractInfo(urlRecord.url.toString(), cachedContents);
-										if (info != null) {
-											urlRecord.info = info;
-										}
-										try {
-											cachedContents.close();
-										}
-										catch (IOException e) {
-										}
-										fClasspathReferences.put(urlRecord.getURI(), urlRecord);
-									}
-									else if (BUILDPATH_PROJECT.equalsIgnoreCase(tokenType)) {
-										String projectName = toker.nextToken();
-										if (Path.ROOT.isValidSegment(projectName)) {
-											IProject project = workspaceRoot.getProject(projectName);
-											/* do not check if "open" here */
-											if (project != null) {
-												fClasspathProjects.add(project);
-											}
-										}
-									}
-									// last since they occur once
-									else if (BUILDPATH_DIRTY.equalsIgnoreCase(tokenType)) {
-										fBuildPathIsDirty = Boolean.valueOf(toker.nextToken()).booleanValue();
-									}
-									else if (BUILDPATH_ENTRIES.equalsIgnoreCase(tokenType)) {
-										fBuildPathEntryCount = Integer.valueOf(toker.nextToken()).intValue();
-									}
-								}
-								if (libraryRecord != null && notifyOnRestoration) {
-									TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, libraryRecord, ITaglibIndexDelta.ADDED));
-								}
-							}
-							restored = true;
-						}
-						else {
-							Logger.log(Logger.INFO, "Tag Library Index: different cache format found, was \"" + lineText + "\", supports \"" + SAVE_FORMAT_VERSION + "\", reindexing build path"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						}
-					}
-					if (_debugIndexTime)
-						Logger.log(Logger.INFO, "time spent reloading " + fProject.getName() + " build path: " + (System.currentTimeMillis() - time0)); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				catch (Exception e) {
-					restored = false;
-					if (_debugIndexTime)
-						Logger.log(Logger.INFO, "failure reloading " + fProject.getName() + " build path index", e); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				finally {
-					if (reader != null) {
-						try {
-							reader.close();
-						}
-						catch (IOException e) {
-						}
-					}
-				}
-			}
-
-			// ================ test reload time (end) ==================
-
-
-			if (!restored) {
-				setBuildPathIsDirty();
-			}
-		}
-	}
-
-	/**
-	 * Saves any storable references to disk. This is only called when the
-	 * description is being cleared and not after every update.
-	 */
-	void saveReferences() {
-		// the build path information is out of date, remember that
-		time0 = System.currentTimeMillis();
-		Writer writer = null;
-
-		/**
-		 * <pre>
-		 *                     		 1.0.1
-		 *                     		 Save classpath information (| is field delimiter)
-		 *                     		 Jars are saved as &quot;JAR:&quot;+ has11TLD + jar path 
-		 *                     		 URLRecords as &quot;URL:&quot;+URL
-		 * </pre>
-		 */
-		try {
-			writer = new OutputStreamWriter(new FileOutputStream(fSaveStateFilename), "UTF-16"); //$NON-NLS-1$
-			writer.write(SAVE_FORMAT_VERSION);
-			writer.write('\n'); //$NON-NLS-1$
-			writer.write(BUILDPATH_DIRTY + "|" + fBuildPathIsDirty); //$NON-NLS-1$
-			writer.write('\n'); //$NON-NLS-1$
-			writer.write(BUILDPATH_ENTRIES + "|" + fBuildPathEntryCount); //$NON-NLS-1$
-			writer.write('\n'); //$NON-NLS-1$
-
-			IProject[] projects = (IProject[]) fClasspathProjects.toArray(new IProject[0]);
-			for (int i = 0; i < projects.length; i++) {
-				writer.write(BUILDPATH_PROJECT);
-				writer.write("|"); //$NON-NLS-1$
-				writer.write(projects[i].getName());
-				writer.write('\n'); //$NON-NLS-1$
-			}
-
-			Enumeration jars = fClasspathJars.keys();
-			while (jars.hasMoreElements()) {
-				String jarPath = jars.nextElement().toString();
-				JarRecord jarRecord = (JarRecord) fClasspathJars.get(jarPath);
-				writer.write("JAR|"); //$NON-NLS-1$
-				writer.write(Boolean.toString(jarRecord.has11TLD));
-				writer.write('|'); //$NON-NLS-1$
-				writer.write(Boolean.toString(jarRecord.isExported));
-				writer.write('|'); //$NON-NLS-1$
-				writer.write(jarPath);
-				writer.write('\n'); //$NON-NLS-1$
-				Iterator i = jarRecord.urlRecords.iterator();
-				while (i.hasNext()) {
-					URLRecord urlRecord = (URLRecord) i.next();
-					writer.write("URL|"); //$NON-NLS-1$
-					writer.write(String.valueOf(urlRecord.isExported));
-					writer.write("|"); //$NON-NLS-1$
-					writer.write(urlRecord.getURL().toExternalForm());
-					writer.write('\n'); //$NON-NLS-1$
-				}
-			}
-		}
-		catch (IOException e) {
-		}
-		finally {
-			try {
-				if (writer != null) {
-					writer.close();
-				}
-			}
-			catch (Exception e) {
-			}
-		}
-
-		if (_debugIndexTime)
-			Logger.log(Logger.INFO, "time spent saving index for " + fProject.getName() + ": " + (System.currentTimeMillis() - time0)); //$NON-NLS-1$
-	}
-
-	void setBuildPathIsDirty() {
-		fBuildPathIsDirty = true;
-		if (_debugIndexTime)
-			Logger.log(Logger.INFO, "marking build path information for " + fProject.getName() + " as dirty"); //$NON-NLS-1$
-	}
-
-	void updateClasspathLibrary(String libraryLocation, int deltaKind, boolean isExported) {
-		JarRecord libraryRecord = null;
-		if (deltaKind == ITaglibIndexDelta.REMOVED || deltaKind == ITaglibIndexDelta.CHANGED) {
-			libraryRecord = (JarRecord) fClasspathJars.remove(libraryLocation);
-			if (libraryRecord != null) {
-				IURLRecord[] urlRecords = (IURLRecord[]) libraryRecord.urlRecords.toArray(new IURLRecord[0]);
-				for (int i = 0; i < urlRecords.length; i++) {
-					ITaglibRecord record = (ITaglibRecord) fClasspathReferences.remove(urlRecords[i].getURI());
-					if (record != null) {
-						TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, ITaglibIndexDelta.REMOVED));
-					}
-				}
-			}
-		}
-		if (deltaKind == ITaglibIndexDelta.ADDED || deltaKind == ITaglibIndexDelta.CHANGED) {
-			libraryRecord = createJARRecord(libraryLocation);
-			libraryRecord.isExported = isExported;
-			fClasspathJars.put(libraryLocation, libraryRecord);
-
-			ZipFile jarfile = null;
-			try {
-				jarfile = new ZipFile(libraryLocation);
-				Enumeration entries = jarfile.entries();
-				while (entries.hasMoreElements()) {
-					ZipEntry z = (ZipEntry) entries.nextElement();
-					if (!z.isDirectory()) {
-						if (z.getName().toLowerCase(Locale.US).endsWith(".tld")) { //$NON-NLS-1$
-							if (z.getName().equals(JarUtilities.JSP11_TAGLIB)) {
-								libraryRecord.has11TLD = true;
-							}
-							InputStream contents = getCachedInputStream(jarfile, z);
-							if (contents != null) {
-								TaglibInfo info = extractInfo(libraryLocation, contents);
-
-								if (info != null && info.uri != null && info.uri.length() > 0) {
-									URLRecord urlRecord = new URLRecord();
-									urlRecord.info = info;
-									urlRecord.baseLocation = libraryLocation;
-									try {
-										urlRecord.isExported = isExported;
-										urlRecord.url = new URL("jar:file:" + libraryLocation + "!/" + z.getName()); //$NON-NLS-1$ //$NON-NLS-2$
-										libraryRecord.urlRecords.add(urlRecord);
-										TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, urlRecord, deltaKind));
-										fClasspathReferences.put(urlRecord.getURI(), urlRecord);
-										if (_debugIndexCreation)
-											Logger.log(Logger.INFO, "created record for " + urlRecord.getURI() + "@" + urlRecord.getURL()); //$NON-NLS-1$ //$NON-NLS-2$
-									}
-									catch (MalformedURLException e) {
-										// don't record this URI
-										Logger.logException(e);
-									}
-								}
-								try {
-									contents.close();
-								}
-								catch (IOException e) {
-								}
-							}
-						}
-					}
-				}
-			}
-			catch (ZipException zExc) {
-				Logger.log(Logger.WARNING, "Taglib Index ZipException: " + libraryLocation + " " + zExc.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			catch (IOException ioExc) {
-				Logger.log(Logger.WARNING, "Taglib Index IOException: " + libraryLocation + " " + ioExc.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			finally {
-				closeJarFile(jarfile);
-			}
-		}
-		if (libraryRecord != null) {
-			TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, libraryRecord, deltaKind));
-		}
-	}
-
-	void updateJAR(IResource jar, int deltaKind) {
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "creating records for JAR " + jar.getFullPath()); //$NON-NLS-1$
-
-		String jarLocationString = null;
-		if (jar.getLocation() != null)
-			jarLocationString = jar.getLocation().toString();
-		else
-			jarLocationString = jar.getLocationURI().toString();
-		String[] entries = JarUtilities.getEntryNames(jar);
-		JarRecord jarRecord = createJARRecord(jar);
-		fJARReferences.put(jar.getFullPath().toString(), jarRecord);
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i].endsWith(".tld")) { //$NON-NLS-1$
-				if (entries[i].equals(JarUtilities.JSP11_TAGLIB)) {
-					jarRecord.has11TLD = true;
-				}
-				InputStream contents = JarUtilities.getInputStream(jar, entries[i]);
-				if (contents != null) {
-					TaglibInfo info = extractInfo(jarLocationString, contents);
-
-					if (info != null && info.uri != null && info.uri.length() > 0) {
-						URLRecord record = new URLRecord();
-						record.info = info;
-						record.baseLocation = jarLocationString;
-						try {
-							record.url = new URL("jar:file:" + jarLocationString + "!/" + entries[i]); //$NON-NLS-1$ //$NON-NLS-2$
-							jarRecord.urlRecords.add(record);
-
-							int taglibDeltaKind = ITaglibIndexDelta.ADDED;
-							Hashtable table = getImplicitReferences(jar.getFullPath().toString());
-							if (table != null && table.get(record.getURI()) != null) {
-								taglibDeltaKind = ITaglibIndexDelta.CHANGED;
-							}
-
-							getImplicitReferences(jar.getFullPath().toString()).put(record.getURI(), record);
-							TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, taglibDeltaKind));
-							if (_debugIndexCreation)
-								Logger.log(Logger.INFO, "created record for " + record.getURI() + "@" + record.getURL()); //$NON-NLS-1$ //$NON-NLS-2$
-						}
-						catch (MalformedURLException e) {
-							// don't record this URI
-							Logger.logException(e);
-						}
-					}
-					try {
-						contents.close();
-					}
-					catch (IOException e) {
-					}
-				}
-				else {
-					Logger.log(Logger.ERROR_DEBUG, getClass().getName() + "could not read resource " + jar.getFullPath()); //$NON-NLS-1$
-				}
-			}
-		}
-		if (jarRecord.has11TLD) {
-			TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, jarRecord, deltaKind));
-		}
-	}
-
-
-	void updateTag(IResource resource, int kind) {
-		TagDirRecord record = (TagDirRecord) fTagDirReferences.get(resource.getParent().getFullPath().toString());
-		if (record == null) {
-			record = createTagdirRecord((IFolder) resource.getParent());
-			fTagDirReferences.put(resource.getParent().getFullPath().toString(), record);
-			TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, ITaglibIndexDelta.ADDED));
-		}
-		else {
-			if (!record.tags.contains(resource.getName())) {
-				record.tags.add(resource.getName());
-			}
-			TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, ITaglibIndexDelta.CHANGED));
-		}
-	}
-
-	void updateTagDir(IResource tagdirResource, int deltaKind) {
-		/**
-		 * 8.4.1: tag files are loose files under /WEB-INF/tags
-		 */
-		if ((tagdirResource.getType() & IResource.FOLDER) != 0) {
-			if (_debugIndexCreation)
-				Logger.log(Logger.INFO, "creating record for directory " + tagdirResource.getFullPath()); //$NON-NLS-1$
-			TagDirRecord record = (TagDirRecord) fTagDirReferences.get(tagdirResource.getFullPath().toString());
-			if (record == null) {
-				record = createTagdirRecord((IFolder) tagdirResource);
-				fTagDirReferences.put(tagdirResource.getFullPath().toString(), record);
-				TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, deltaKind));
-			}
-			else {
-
-			}
-		}
-		/**
-		 * 8.4.1: tag files can also be packaged in the /META-INF/tags folder
-		 * of a jar in /WEB-INF/lib/ (8.4.2: but must be mentioned in a .tld)
-		 */
-		else {
-			// these tags are merely surfaced when the TLD is modelled
-		}
-	}
-
-	void updateTLD(IResource tld, int deltaKind) {
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "creating record for " + tld.getFullPath()); //$NON-NLS-1$
-		TLDRecord record = createTLDRecord(tld);
-		fTLDReferences.put(tld.getFullPath().toString(), record);
-		if (record.getURI() != null) {
-			getImplicitReferences(tld.getFullPath().toString()).put(record.getURI(), record);
-		}
-		TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, deltaKind));
-	}
-
-	void updateWebXML(IResource webxml, int deltaKind) {
-		if (webxml.getType() != IResource.FILE)
-			return;
-		InputStream webxmlContents = null;
-		Document document = null;
-		try {
-			webxmlContents = ((IFile) webxml).getContents(true);
-			DocumentProvider provider = new DocumentProvider();
-			provider.setInputStream(webxmlContents);
-			provider.setValidating(false);
-			provider.setRootElementName("web-app"); //$NON-NLS-1$
-			provider.setBaseReference(webxml.getParent().getFullPath().toString());
-			document = provider.getDocument(false);
-		}
-		catch (CoreException e) {
-			Logger.log(Logger.ERROR_DEBUG, "", e); //$NON-NLS-1$
-		}
-		finally {
-			if (webxmlContents != null)
-				try {
-					webxmlContents.close();
-				}
-				catch (IOException e1) {
-					// ignore
-				}
-		}
-		if (document == null)
-			return;
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "creating records for " + webxml.getFullPath()); //$NON-NLS-1$
-
-		WebXMLRecord webxmlRecord = new WebXMLRecord();
-		webxmlRecord.path = webxml.getFullPath();
-		fWebXMLReferences.put(webxmlRecord.getWebXML().toString(), webxmlRecord);
-		NodeList taglibs = document.getElementsByTagName(JSP12TLDNames.TAGLIB);
-		for (int iTaglib = 0; iTaglib < taglibs.getLength(); iTaglib++) {
-			String taglibUri = readTextofChild(taglibs.item(iTaglib), "taglib-uri").trim(); //$NON-NLS-1$
-			// specified location is relative to root of the webapp
-			String taglibLocation = readTextofChild(taglibs.item(iTaglib), "taglib-location").trim(); //$NON-NLS-1$
-			IPath path = null;
-			if (taglibLocation.startsWith("/")) { //$NON-NLS-1$
-				path = new Path(getLocalRoot(webxml.getFullPath().toString()) + taglibLocation);
-			}
-			else {
-				path = new Path(URIHelper.normalize(taglibLocation, webxml.getFullPath().toString(), getLocalRoot(webxml.getFullPath().toString())));
-			}
-			if (path.segmentCount() > 1) {
-				IFile resource = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-				if (resource.isAccessible()) {
-					ITaglibRecord record = null;
-					/*
-					 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=125960
-					 * 
-					 * Also support mappings to .jar files
-					 */
-					if ("jar".equalsIgnoreCase(resource.getFileExtension())) { //$NON-NLS-1$
-						JarRecord jarRecord = createJARRecord(resource);
-						String[] entries = JarUtilities.getEntryNames(resource);
-						for (int jEntry = 0; jEntry < entries.length; jEntry++) {
-							if (entries[jEntry].endsWith(".tld")) { //$NON-NLS-1$
-								if (entries[jEntry].equals(JarUtilities.JSP11_TAGLIB)) {
-									jarRecord.has11TLD = true;
-									InputStream contents = JarUtilities.getInputStream(resource, entries[jEntry]);
-									if (contents != null) {
-										TaglibInfo info = extractInfo(resource.getFullPath().toString(), contents);
-										jarRecord.info = info;
-										try {
-											contents.close();
-										}
-										catch (IOException e) {
-										}
-									}
-								}
-							}
-						}
-						record = jarRecord;
-						// the stored URI should reflect the web.xml's value
-						if (jarRecord.info == null) {
-							jarRecord.info = new TaglibInfo();
-						}
-						jarRecord.info.uri = taglibUri;
-						jarRecord.isMappedInWebXML = true;
-						if (_debugIndexCreation)
-							Logger.log(Logger.INFO, "created web.xml record for " + taglibUri + "@" + jarRecord.getLocation()); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-					else {
-						TLDRecord tldRecord = createTLDRecord(resource);
-						record = tldRecord;
-						// the stored URI should reflect the web.xml's value
-						tldRecord.info.uri = taglibUri;
-						if (_debugIndexCreation)
-							Logger.log(Logger.INFO, "created web.xml record for " + taglibUri + "@" + tldRecord.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-					if (record != null) {
-						webxmlRecord.tldRecords.add(record);
-						getImplicitReferences(webxml.getFullPath().toString()).put(taglibUri, record);
-						TaglibIndex.getInstance().addDelta(new TaglibIndexDelta(fProject, record, deltaKind));
-					}
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java
deleted file mode 100644
index 7785fc0..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java
+++ /dev/null
@@ -1,948 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import java.io.File;
-import java.lang.ref.Reference;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.zip.CRC32;
-
-import org.eclipse.core.filebuffers.FileBuffers;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.jobs.ILock;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.core.ElementChangedEvent;
-import org.eclipse.jdt.core.IElementChangedListener;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IJavaElementDelta;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentmodel.tld.TLDCMDocumentManager;
-import org.osgi.framework.Bundle;
-
-/**
- * A non-extendable index manager for taglibs similar to the previous J2EE
- * ITaglibRegistry but lacking any ties to project natures. Each record
- * returned from the index represents a single tag library descriptor.
- * 
- * Indexing is only persisted between sessions for entries on the Java Build
- * Path. New ADD events will be sent to ITaglibIndexListeners during each
- * workbench session for both cached and newly found records. REMOVE events
- * are not fired on workbench shutdown. The record's contents should be
- * examined for any further information.
- * 
- * @since 1.0
- */
-public final class TaglibIndex {
-	class ClasspathChangeListener implements IElementChangedListener {
-		List projectsIndexed = new ArrayList(1);
-
-		public void elementChanged(ElementChangedEvent event) {
-			if (!isIndexAvailable())
-				return;
-			try {
-				LOCK.acquire();
-				if (_debugEvents) {
-					Logger.log(Logger.INFO, "TaglibIndex responding to:" + event); //$NON-NLS-1$
-				}
-				projectsIndexed.clear();
-				elementChanged(event.getDelta(), true);
-				fireCurrentDelta(event);
-			}
-			finally {
-				LOCK.release();
-			}
-		}
-
-		private void elementChanged(IJavaElementDelta delta, boolean forceUpdate) {
-			if (frameworkIsShuttingDown())
-				return;
-
-			IJavaElement element = delta.getElement();
-			if (element.getElementType() == IJavaElement.JAVA_MODEL) {
-				IJavaElementDelta[] changed = delta.getAffectedChildren();
-				for (int i = 0; i < changed.length; i++) {
-					elementChanged(changed[i], forceUpdate);
-				}
-			}
-			// Handle any changes at the project level
-			else if (element.getElementType() == IJavaElement.JAVA_PROJECT) {
-				if ((delta.getFlags() & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) {
-					IJavaElement proj = element;
-					handleClasspathChange((IJavaProject) proj, forceUpdate);
-				}
-				else {
-					IJavaElementDelta[] deltas = delta.getAffectedChildren();
-					if (deltas.length == 0) {
-						if (delta.getKind() == IJavaElementDelta.REMOVED || (delta.getFlags() & IJavaElementDelta.F_CLOSED) != 0) {
-							/*
-							 * If the project is being deleted or closed, just
-							 * remove the description
-							 */
-							IJavaProject proj = (IJavaProject) element;
-							ProjectDescription description = (ProjectDescription) fProjectDescriptions.remove(proj.getProject());
-							if (description != null) {
-								if (_debugIndexCreation) {
-									Logger.log(Logger.INFO, "removing index of " + description.fProject.getName()); //$NON-NLS-1$
-								}
-								// removing the index file ensures that we
-								// don't get stale data if the project is
-								// reopened
-								removeIndex(proj.getProject());
-							}
-						}
-					}
-					/*
-					 * (else) Without the classpath changing, there's nothing
-					 * else to do
-					 */
-					else {
-						for (int i = 0; i < deltas.length; i++) {
-							elementChanged(deltas[i], false);
-						}
-					}
-				}
-			}
-			/*
-			 * Other modification to the classpath (such as within a classpath
-			 * container like "Web App Libraries") go to the description
-			 * itself
-			 */
-			else if ((delta.getFlags() & IJavaElementDelta.F_ADDED_TO_CLASSPATH) != 0 || (delta.getFlags() & IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) != 0) {
-				IJavaProject affectedProject = element.getJavaProject();
-				if (affectedProject != null) {
-					/*
-					 * If the affected project has an index on-disk, it's
-					 * going to be invalid--we need to create/load the
-					 * description so it will be up to date [loading now and
-					 * updating is usually faster than regenerating the entire
-					 * index]. If there is no index on disk, do nothing more.
-					 */
-					File indexFile = new File(computeIndexLocation(affectedProject.getProject().getFullPath()));
-					if (indexFile.exists()) {
-						ProjectDescription affectedDescription = createDescription(affectedProject.getProject());
-						if (affectedDescription != null) {
-							affectedDescription.handleElementChanged(delta);
-						}
-					}
-					projectsIndexed.add(affectedProject.getProject());
-				}
-			}
-		}
-
-		private void handleClasspathChange(IJavaProject project, boolean forceUpdate) {
-			if (frameworkIsShuttingDown())
-				return;
-
-			try {
-				/* Handle large changes to this project's build path */
-				IResource resource = project.getCorrespondingResource();
-				if (resource.getType() == IResource.PROJECT && !projectsIndexed.contains(resource)) {
-					/*
-					 * Use get instead of create since the downstream
-					 * (upstream?) project wasn't itself modified.
-					 */
-					ProjectDescription description = null;
-					if (forceUpdate) {
-						description = createDescription((IProject) resource);
-					}
-					else {
-						description = getDescription((IProject) resource);
-					}
-					if (description != null && !frameworkIsShuttingDown()) {
-						projectsIndexed.add(resource);
-						description.setBuildPathIsDirty();
-					}
-				}
-			}
-			catch (JavaModelException e) {
-				Logger.logException(e);
-			}
-		}
-	}
-
-	class ResourceChangeListener implements IResourceChangeListener {
-		public void resourceChanged(IResourceChangeEvent event) {
-			if (!isIndexAvailable())
-				return;
-			try {
-				LOCK.acquire();
-				if (_debugEvents) {
-					Logger.log(Logger.INFO, "TaglibIndex responding to:" + event + "\n" + event.getDelta()); //$NON-NLS-2$ //$NON-NLS-1$
-				}
-				switch (event.getType()) {
-					case IResourceChangeEvent.PRE_CLOSE :
-					case IResourceChangeEvent.PRE_DELETE : {
-						try {
-							// pair deltas with projects
-							IResourceDelta[] deltas = new IResourceDelta[]{event.getDelta()};
-							IProject[] projects = null;
-
-							if (deltas.length > 0) {
-								IResource resource = null;
-								if (deltas[0] != null) {
-									resource = deltas[0].getResource();
-								}
-								else {
-									resource = event.getResource();
-								}
-
-								if (resource != null) {
-									if (resource.getType() == IResource.ROOT) {
-										deltas = deltas[0].getAffectedChildren();
-										projects = new IProject[deltas.length];
-										for (int i = 0; i < deltas.length; i++) {
-											if (deltas[i].getResource().getType() == IResource.PROJECT) {
-												projects[i] = (IProject) deltas[i].getResource();
-											}
-										}
-									}
-									else {
-										projects = new IProject[1];
-										if (resource.getType() != IResource.PROJECT) {
-											projects[0] = resource.getProject();
-										}
-										else {
-											projects[0] = (IProject) resource;
-										}
-									}
-								}
-								for (int i = 0; i < projects.length; i++) {
-									if (_debugIndexCreation) {
-										Logger.log(Logger.INFO, "TaglibIndex noticed " + projects[i].getName() + " is about to be deleted/closed"); //$NON-NLS-1$ //$NON-NLS-2$
-									}
-									ProjectDescription description = (ProjectDescription) fProjectDescriptions.remove(projects[i]);
-									if (description != null) {
-										if (_debugIndexCreation) {
-											Logger.log(Logger.INFO, "removing index of " + description.fProject.getName()); //$NON-NLS-1$
-										}
-										description.clear();
-										removeIndex(description.fProject);
-									}
-								}
-							}
-						}
-						catch (Exception e) {
-							Logger.logException("Exception while processing resource deletion", e); //$NON-NLS-1$
-						}
-					}
-					case IResourceChangeEvent.POST_CHANGE : {
-						try {
-							// pair deltas with projects
-							IResourceDelta[] deltas = new IResourceDelta[]{event.getDelta()};
-							IProject[] projects = null;
-
-							if (deltas.length > 0) {
-								IResource resource = null;
-								if (deltas[0] != null) {
-									resource = deltas[0].getResource();
-								}
-								else {
-									resource = event.getResource();
-								}
-
-								if (resource != null) {
-									if (resource.getType() == IResource.ROOT) {
-										deltas = deltas[0].getAffectedChildren();
-										projects = new IProject[deltas.length];
-										for (int i = 0; i < deltas.length; i++) {
-											if (deltas[i].getResource().getType() == IResource.PROJECT) {
-												projects[i] = (IProject) deltas[i].getResource();
-											}
-										}
-									}
-									else {
-										projects = new IProject[1];
-										if (resource.getType() != IResource.PROJECT) {
-											projects[0] = resource.getProject();
-										}
-										else {
-											projects[0] = (IProject) resource;
-										}
-									}
-								}
-								for (int i = 0; i < projects.length; i++) {
-									if (deltas[i].getKind() == IResourceDelta.CHANGED && (deltas[i].getFlags() == IResourceDelta.ENCODING || deltas[i].getFlags() == IResourceDelta.MARKERS))
-										continue;
-									try {
-										if (deltas[i] != null && deltas[i].getKind() != IResourceDelta.REMOVED && projects[i].isAccessible()) {
-											ProjectDescription description = getDescription(projects[i]);
-											if (description != null && !frameworkIsShuttingDown()) {
-												deltas[i].accept(description.getVisitor());
-											}
-										}
-										if (!projects[i].isAccessible() || (deltas[i] != null && deltas[i].getKind() == IResourceDelta.REMOVED)) {
-											if (_debugIndexCreation) {
-												Logger.log(Logger.INFO, "TaglibIndex noticed " + projects[i].getName() + " was removed or is no longer accessible"); //$NON-NLS-1$ //$NON-NLS-2$
-											}
-											ProjectDescription description = (ProjectDescription) fProjectDescriptions.remove(projects[i]);
-											if (description != null) {
-												if (_debugIndexCreation) {
-													Logger.log(Logger.INFO, "removing index of " + description.fProject.getName()); //$NON-NLS-1$
-												}
-												description.clear();
-											}
-										}
-									}
-									catch (CoreException e) {
-										Logger.logException(e);
-									}
-								}
-							}
-						}
-						catch (Exception e) {
-							Logger.logException("Exception while processing resource change", e); //$NON-NLS-1$
-						}
-					}
-				}
-
-				fireCurrentDelta(event);
-			}
-			finally {
-				LOCK.release();
-			}
-		}
-	}
-
-	static final boolean _debugChangeListener = false;
-
-	static boolean _debugEvents = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/taglib/events")); //$NON-NLS-1$ //$NON-NLS-2$
-
-	static boolean _debugIndexCreation = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/taglib/indexcreation")); //$NON-NLS-1$ //$NON-NLS-2$
-
-	static final boolean _debugResolution = "true".equals(Platform.getDebugOption("org.eclipse.jst.jsp.core/taglib/resolve")); //$NON-NLS-1$ //$NON-NLS-2$
-
-	static TaglibIndex _instance = new TaglibIndex();
-
-	private boolean initialized;
-
-	private static final CRC32 checksumCalculator = new CRC32();
-
-	private static final String CLEAN = "CLEAN";
-	private static final String DIRTY = "DIRTY";
-	static boolean ENABLED = false;
-
-	static ILock LOCK = Job.getJobManager().newLock();
-
-	/**
-	 * NOT API.
-	 * 
-	 * @param listener
-	 *            the listener to be added
-	 */
-	public static void addTaglibIndexListener(ITaglibIndexListener listener) {
-		if (getInstance().isInitialized())
-			getInstance().internalAddTaglibIndexListener(listener);
-	}
-
-	static void fireTaglibDelta(ITaglibIndexDelta delta) {
-		if (_debugEvents) {
-			Logger.log(Logger.INFO, "TaglibIndex fired delta:" + delta + " [" + delta.getAffectedChildren().length + "]\n" + ((TaglibIndexDelta) delta).trigger); //$NON-NLS-1$
-		}
-		/*
-		 * Flush any shared cache entries, the TaglibControllers should handle
-		 * updating their documents as needed.
-		 */
-		ITaglibIndexDelta[] deltas = delta.getAffectedChildren();
-		for (int i = 0; i < deltas.length; i++) {
-			ITaglibRecord taglibRecord = deltas[i].getTaglibRecord();
-			if (taglibRecord != null) {
-				Object uniqueIdentifier = TLDCMDocumentManager.getUniqueIdentifier(taglibRecord);
-				if (uniqueIdentifier != null) {
-					TLDCMDocumentManager.getSharedDocumentCache().remove(uniqueIdentifier);
-				}
-				else {
-					Logger.log(Logger.ERROR, "identifier for " + taglibRecord + " was null");
-				}
-			}
-		}
-		synchronized (TLDCMDocumentManager.getSharedDocumentCache()) {
-			Iterator values = TLDCMDocumentManager.getSharedDocumentCache().values().iterator();
-			while (values.hasNext()) {
-				Object o = values.next();
-				if (o instanceof Reference) {
-					values.remove();
-				}
-			}
-		}
-
-		if (_instance.isInitialized()) {
-			ITaglibIndexListener[] listeners = _instance.fTaglibIndexListeners;
-			if (listeners != null) {
-				for (int j = 0; j < listeners.length; j++) {
-					try {
-						listeners[j].indexChanged(delta);
-					}
-					catch (Exception e) {
-						Logger.log(Logger.WARNING, e.getMessage());
-					}
-				}
-			}
-		}
-	}
-
-
-	/**
-	 * Finds all of the visible ITaglibRecords for the given path in the
-	 * workspace. Taglib mappings from web.xml files are only visible to paths
-	 * within the web.xml's corresponding web content folder.
-	 * 
-	 * @param fullPath -
-	 *            a path within the workspace
-	 * @return All of the visible ITaglibRecords from the given path.
-	 */
-	public static ITaglibRecord[] getAvailableTaglibRecords(IPath fullPath) {
-		if (!_instance.isInitialized()) {
-			return new ITaglibRecord[0];
-		}
-		ITaglibRecord[] records = null;
-		if (getInstance().isInitialized()) {
-			records = getInstance().internalGetAvailableTaglibRecords(fullPath);
-		}
-		else {
-			records = new ITaglibRecord[0];
-		}
-		getInstance().fireCurrentDelta("enumerate: " + fullPath); //$NON-NLS-1$
-		return records;
-	}
-
-	/**
-	 * Returns the IPath considered to be the web-app root for the given path.
-	 * All resolution from the given path beginning with '/' will be relative
-	 * to the computed web-app root.
-	 * 
-	 * @deprecated - is not correct in flexible projects
-	 * @param path -
-	 *            a path under the web-app root
-	 * @return the IPath considered to be the web-app's root for the given
-	 *         path or null if one could not be determined
-	 */
-	public static IPath getContextRoot(IPath path) {
-		try {
-			LOCK.acquire();
-			if (getInstance().isInitialized()) {
-				return getInstance().internalGetContextRoot(path);
-			}
-		}
-		finally {
-			LOCK.release();
-		}
-		return null;
-	}
-
-	public static TaglibIndex getInstance() {
-		return _instance;
-	}
-
-	/**
-	 * NOT API.
-	 * 
-	 * @param listener
-	 *            the listener to be removed
-	 */
-	public static void removeTaglibIndexListener(ITaglibIndexListener listener) {
-		if (!getInstance().isInitialized())
-			return;
-		if (getInstance().isInitialized())
-			getInstance().internalRemoveTaglibIndexListener(listener);
-	}
-
-	/**
-	 * Finds a matching ITaglibRecord given the reference. Typically the
-	 * result will have to be cast to a subiinterface of ITaglibRecord.
-	 * 
-	 * @param basePath -
-	 *            the workspace-relative path for IResources, full filesystem
-	 *            path otherwise
-	 * @param reference -
-	 *            the URI to lookup, for example the uri value from a taglib
-	 *            directive
-	 * @param crossProjects -
-	 *            whether to search across projects (currently ignored)
-	 * 
-	 * @return a visible ITaglibRecord or null if the reference points to no
-	 *         known tag library descriptor
-	 * 
-	 * @See ITaglibRecord
-	 */
-	public static ITaglibRecord resolve(String basePath, String reference, boolean crossProjects) {
-		ITaglibRecord result = null;
-		if (getInstance().isInitialized()) {
-			result = getInstance().internalResolve(basePath, reference, crossProjects);
-		}
-		getInstance().fireCurrentDelta("resolve: " + reference); //$NON-NLS-1$
-		if (_debugResolution) {
-			if (result == null) {
-				Logger.log(Logger.INFO, "TaglibIndex could not resolve \"" + reference + "\" from " + basePath); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			else {
-				switch (result.getRecordType()) {
-					case (ITaglibRecord.TLD) : {
-						ITLDRecord record = (ITLDRecord) result;
-						Logger.log(Logger.INFO, "TaglibIndex resolved " + basePath + ":" + reference + " = " + record.getPath()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-						break;
-					case (ITaglibRecord.JAR) : {
-						IJarRecord record = (IJarRecord) result;
-						Logger.log(Logger.INFO, "TaglibIndex resolved " + basePath + ":" + reference + " = " + record.getLocation()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-						break;
-					case (ITaglibRecord.TAGDIR) : {
-						ITagDirRecord record = (ITagDirRecord) result;
-						Logger.log(Logger.INFO, "TaglibIndex resolved " + basePath + ":" + reference + " = " + record.getPath()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-						break;
-					case (ITaglibRecord.URL) : {
-						IURLRecord record = (IURLRecord) result;
-						Logger.log(Logger.INFO, "TaglibIndex resolved " + basePath + ":" + reference + " = " + record.getURL()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-						break;
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Instructs the index to stop listening for resource and classpath
-	 * changes, and to forget all information about the workspace.
-	 */
-	public static void shutdown() {
-		try {
-			LOCK.acquire();
-			if (_instance.isInitialized()) {
-				_instance.stop();
-			}
-		}
-		finally {
-			LOCK.release();
-		}
-	}
-
-	/**
-	 * Instructs the index to begin listening for resource and classpath
-	 * changes.
-	 */
-	public static void startup() {
-		boolean shuttingDown = !Platform.isRunning() || Platform.getBundle(OSGI_FRAMEWORK_ID).getState() == Bundle.STOPPING;
-		if (!shuttingDown) {
-			try {
-				LOCK.acquire();
-				ENABLED = !"false".equalsIgnoreCase(System.getProperty(TaglibIndex.class.getName())); //$NON-NLS-1$
-				getInstance().initializeInstance();
-			}
-			finally {
-				LOCK.release();
-			}
-		}
-	}
-
-	private ClasspathChangeListener fClasspathChangeListener = null;
-
-	private TaglibIndexDelta fCurrentTopLevelDelta = null;
-
-	Map fProjectDescriptions = null;
-
-	private ResourceChangeListener fResourceChangeListener;
-
-	private ITaglibIndexListener[] fTaglibIndexListeners = null;
-
-	/** symbolic name for OSGI framework */
-	private final static String OSGI_FRAMEWORK_ID = "org.eclipse.osgi"; //$NON-NLS-1$
-
-	private TaglibIndex() {
-		super();
-	}
-
-	private void initializeInstance() {
-
-		if (isInitialized())
-			return;
-		try {
-			LOCK.acquire();
-			/*
-			 * check again, just incase it was initialized on another thread,
-			 * while we were waiting for the lock
-			 */
-			if (!isInitialized()) {
-				/*
-				 * Only consider a crash if a value exists and is DIRTY (not a
-				 * new workspace)
-				 */
-				if (DIRTY.equalsIgnoreCase(getState())) {
-					Logger.log(Logger.ERROR, "A workspace crash was detected. The previous session did not exit normally. Not using saved taglib indexes."); //$NON-NLS-3$
-					removeIndexes(false);
-				}
-
-				fProjectDescriptions = new Hashtable();
-				fResourceChangeListener = new ResourceChangeListener();
-				fClasspathChangeListener = new ClasspathChangeListener();
-				if (ENABLED) {
-					ResourcesPlugin.getWorkspace().addResourceChangeListener(fResourceChangeListener, IResourceChangeEvent.POST_CHANGE);
-					JavaCore.addElementChangedListener(fClasspathChangeListener);
-				}
-				setIntialized(true);
-			}
-		}
-		finally {
-			LOCK.release();
-		}
-	}
-
-	/**
-	 * Adds the given delta as a child to an overall delta
-	 * 
-	 * @param delta
-	 */
-	void addDelta(ITaglibIndexDelta delta) {
-		ensureDelta(delta.getProject()).addChildDelta(delta);
-	}
-
-	/**
-	 * Based on org.eclipse.jdt.internal.core.search.indexing.IndexManager
-	 * 
-	 * @param containerPath
-	 * @return
-	 */
-	String computeIndexLocation(IPath containerPath) {
-		String fileName = computeIndexName(containerPath);
-		if (_debugIndexCreation)
-			Logger.log(Logger.INFO, "-> index name for " + containerPath + " is " + fileName); //$NON-NLS-1$ //$NON-NLS-2$
-		String indexLocation = getTaglibIndexStateLocation().append(fileName).toOSString();
-		return indexLocation;
-	}
-
-	String computeIndexName(IPath containerPath) {
-		checksumCalculator.reset();
-		checksumCalculator.update(containerPath.toOSString().getBytes());
-		// use ".dat" so we're not confused with JDT indexes
-		String fileName = Long.toString(checksumCalculator.getValue()) + ".dat"; //$NON-NLS-1$
-		return fileName;
-	}
-
-	/**
-	 * @param project
-	 * @return
-	 */
-	ProjectDescription createDescription(IProject project) {
-		ProjectDescription description = null;
-		try {
-			LOCK.acquire();
-			description = (ProjectDescription) fProjectDescriptions.get(project);
-			if (description == null) {
-				// Once we've started indexing, we're dirty again
-				if (fProjectDescriptions.isEmpty()) {
-					setState(DIRTY);
-				}
-				description = new ProjectDescription(project, computeIndexLocation(project.getFullPath()));
-				fProjectDescriptions.put(project, description);
-			}
-		}
-		finally {
-			LOCK.release();
-		}
-		return description;
-	}
-
-	/**
-	 * Ensures that a delta exists for holding index change information
-	 */
-	private TaglibIndexDelta ensureDelta(IProject project) {
-		/*
-		 * The first delta to be added will determine which project the
-		 * top-level delta will contain.
-		 */
-		if (fCurrentTopLevelDelta == null) {
-			fCurrentTopLevelDelta = new TaglibIndexDelta(project, null, ITaglibIndexDelta.CHANGED);
-		}
-		return fCurrentTopLevelDelta;
-	}
-
-	void fireCurrentDelta(Object trigger) {
-		if (fCurrentTopLevelDelta != null) {
-			fCurrentTopLevelDelta.trigger = trigger;
-			ITaglibIndexDelta delta = fCurrentTopLevelDelta;
-			fCurrentTopLevelDelta = null;
-			fireTaglibDelta(delta);
-		}
-	}
-
-	/**
-	 * A check to see if the OSGI framework is shutting down.
-	 * 
-	 * @return true if the System Bundle is stopped (ie. the framework is
-	 *         shutting down)
-	 */
-	boolean frameworkIsShuttingDown() {
-		// in the Framework class there's a note:
-		// set the state of the System Bundle to STOPPING.
-		// this must be done first according to section 4.19.2 from the OSGi
-		// R3 spec.
-		boolean shuttingDown = !Platform.isRunning() || Platform.getBundle(OSGI_FRAMEWORK_ID).getState() == Bundle.STOPPING;
-		return shuttingDown;
-	}
-
-	ProjectDescription getDescription(IProject project) {
-		ProjectDescription description = null;
-		if (isInitialized()) {
-			description = (ProjectDescription) fProjectDescriptions.get(project);
-		}
-		return description;
-	}
-
-	private String getState() {
-		String state = JSPCorePlugin.getDefault().getPluginPreferences().getString(TaglibIndex.class.getName());
-		return state;
-	}
-
-	private IPath getTaglibIndexStateLocation() {
-		return JSPCorePlugin.getDefault().getStateLocation().append("taglibindex/");
-	}
-
-	private void internalAddTaglibIndexListener(ITaglibIndexListener listener) {
-		try {
-			LOCK.acquire();
-			if (fTaglibIndexListeners == null) {
-				fTaglibIndexListeners = new ITaglibIndexListener[]{listener};
-			}
-			else {
-				List listeners = new ArrayList(Arrays.asList(fTaglibIndexListeners));
-				if (!listeners.contains(listener)) {
-					listeners.add(listener);
-				}
-				fTaglibIndexListeners = (ITaglibIndexListener[]) listeners.toArray(new ITaglibIndexListener[0]);
-			}
-		}
-		finally {
-			LOCK.release();
-		}
-	}
-
-	private ITaglibRecord[] internalGetAvailableTaglibRecords(IPath path) {
-		ITaglibRecord[] records = new ITaglibRecord[0];
-		if (path.segmentCount() > 0) {
-			IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0));
-			if (project.isAccessible()) {
-				ProjectDescription description = createDescription(project);
-				List availableRecords = description.getAvailableTaglibRecords(path);
-
-				// ICatalog catalog =
-				// XMLCorePlugin.getDefault().getDefaultXMLCatalog();
-				// while (catalog != null) {
-				// ICatalogEntry[] entries = catalog.getCatalogEntries();
-				// for (int i = 0; i < entries.length; i++) {
-				// // System.out.println(entries[i].getURI());
-				// }
-				// INextCatalog[] nextCatalogs = catalog.getNextCatalogs();
-				// for (int i = 0; i < nextCatalogs.length; i++) {
-				// ICatalogEntry[] entries2 =
-				// nextCatalogs[i].getReferencedCatalog().getCatalogEntries();
-				// for (int j = 0; j < entries2.length; j++) {
-				// // System.out.println(entries2[j].getURI());
-				// }
-				// }
-				// }
-
-				records = (ITaglibRecord[]) availableRecords.toArray(records);
-			}
-		}
-		return records;
-	}
-
-	private IPath internalGetContextRoot(IPath path) {
-		IFile baseResource = FileBuffers.getWorkspaceFileAtLocation(path);
-		if (baseResource != null && baseResource.getProject().isAccessible()) {
-			IProject project = baseResource.getProject();
-			ProjectDescription description = getInstance().createDescription(project);
-			IPath rootPath = description.getLocalRoot(baseResource.getFullPath());
-			return rootPath;
-		}
-		// try to handle out-of-workspace paths
-		IPath root = path.makeAbsolute();
-		while (root.segmentCount() > 0 && !root.isRoot())
-			root = root.removeLastSegments(1);
-		return root;
-	}
-
-	private void internalRemoveTaglibIndexListener(ITaglibIndexListener listener) {
-		try {
-			LOCK.acquire();
-			if (fTaglibIndexListeners != null) {
-				List listeners = new ArrayList(Arrays.asList(fTaglibIndexListeners));
-				listeners.remove(listener);
-				fTaglibIndexListeners = (ITaglibIndexListener[]) listeners.toArray(new ITaglibIndexListener[0]);
-			}
-		}
-		finally {
-			LOCK.release();
-		}
-	}
-
-	private ITaglibRecord internalResolve(String basePath, final String reference, boolean crossProjects) {
-		IProject project = null;
-		ITaglibRecord resolved = null;
-
-		Path baseIPath = new Path(basePath);
-		IResource baseResource = FileBuffers.getWorkspaceFileAtLocation(baseIPath);
-
-		if (baseResource == null) {
-			IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
-			// Try the base path as a folder first
-			if (baseIPath.segmentCount() > 1) {
-				baseResource = workspaceRoot.getFolder(baseIPath);
-			}
-			// If not a folder, then try base path as a file
-			if (baseResource != null && !baseResource.exists() && baseIPath.segmentCount() > 1) {
-				baseResource = workspaceRoot.getFile(baseIPath);
-			}
-			if (baseResource == null && baseIPath.segmentCount() == 1) {
-				baseResource = workspaceRoot.getProject(baseIPath.segment(0));
-			}
-		}
-
-		if (baseResource == null) {
-			/*
-			 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=116529
-			 * 
-			 * This method produces a less accurate result, but doesn't
-			 * require that the file exist yet.
-			 */
-			IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(baseIPath);
-			if (files.length > 0)
-				baseResource = files[0];
-		}
-		if (baseResource != null) {
-			project = ResourcesPlugin.getWorkspace().getRoot().getProject(baseIPath.segment(0));
-			if (project.isAccessible()) {
-				ProjectDescription description = createDescription(project);
-				resolved = description.resolve(basePath, reference);
-			}
-		}
-
-		return resolved;
-	}
-
-	boolean isIndexAvailable() {
-		return _instance.isInitialized() && ENABLED;
-	}
-
-	/**
-	 * Removes index file for the given project.
-	 */
-	private void removeIndex(IProject project) {
-		File indexFile = new File(computeIndexLocation(project.getFullPath()));
-		if (indexFile.exists()) {
-			indexFile.delete();
-		}
-	}
-
-	/**
-	 * Removes index files. Used for maintenance and keeping the index folder
-	 * a manageable size.
-	 * 
-	 * @param staleOnly -
-	 *            if <b>true</b>, removes only the indexes for projects not
-	 *            open in the workspace, if <b>false</b>, removes all of the
-	 *            indexes
-	 */
-	private void removeIndexes(boolean staleOnly) {
-		String osPath = getTaglibIndexStateLocation().toOSString();
-		File folder = new File(osPath);
-		if (!folder.isDirectory()) {
-			try {
-				folder.mkdir();
-			}
-			catch (SecurityException e) {
-			}
-		}
-
-		// remove any extraneous index files
-		IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
-		List indexNames = new ArrayList(projects.length);
-		if (staleOnly) {
-			for (int i = 0; i < projects.length; i++) {
-				if (projects[i].isAccessible()) {
-					indexNames.add(computeIndexName(projects[i].getFullPath()));
-				}
-			}
-		}
-
-		if (folder.isDirectory()) {
-			File[] files = folder.listFiles();
-			for (int i = 0; files != null && i < files.length; i++) {
-				if (!indexNames.contains(files[i].getName()))
-					files[i].delete();
-			}
-		}
-	}
-
-	private void setState(String state) {
-		if (!state.equals(getState())) {
-			JSPCorePlugin.getDefault().getPluginPreferences().setValue(TaglibIndex.class.getName(), state);
-			JSPCorePlugin.getDefault().savePluginPreferences();
-		}
-	}
-
-	private void stop() {
-		if (isInitialized()) {
-			ResourcesPlugin.getWorkspace().removeResourceChangeListener(fResourceChangeListener);
-			JavaCore.removeElementChangedListener(fClasspathChangeListener);
-
-			/*
-			 * Clearing the existing saved states helps prune dead data from
-			 * the index folder.
-			 */
-			removeIndexes(true);
-
-			Iterator i = fProjectDescriptions.values().iterator();
-			while (i.hasNext()) {
-				ProjectDescription description = (ProjectDescription) i.next();
-				description.saveReferences();
-			}
-
-			fProjectDescriptions.clear();
-
-			setState(CLEAN);
-			fProjectDescriptions = null;
-			fResourceChangeListener = null;
-			fClasspathChangeListener = null;
-			setIntialized(false);
-		}
-	}
-
-	private boolean isInitialized() {
-		return initialized;
-	}
-
-	private void setIntialized(boolean intialized) {
-		this.initialized = intialized;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndexDelta.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndexDelta.java
deleted file mode 100644
index fc14d8b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndexDelta.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.taglib;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.core.resources.IProject;
-
-public class TaglibIndexDelta implements ITaglibIndexDelta {
-	private Collection fChildren;
-	private int fExplicitKind = -1;
-	private int fImplicitKind = -1;
-	private IProject fProject;
-	private ITaglibRecord fTaglibRecord = null;
-	long time;
-	Object trigger = null;
-
-	TaglibIndexDelta(IProject project, ITaglibRecord record, int kind) {
-		fProject = project;
-		fTaglibRecord = record;
-		fExplicitKind = kind;
-		time = System.currentTimeMillis();
-	}
-
-	void addChildDelta(ITaglibIndexDelta delta) {
-		if (fChildren == null)
-			fChildren = new ArrayList();
-		fChildren.add(delta);
-		fImplicitKind = -1;
-	}
-
-	private int computeKind() {
-		int added = 0;
-		int removed = 0;
-
-		ITaglibIndexDelta[] children = (ITaglibIndexDelta[]) fChildren.toArray(new ITaglibIndexDelta[fChildren.size()]);
-		for (int i = 0; i < children.length; i++) {
-			int kind = children[i].getKind();
-			if (kind == ITaglibIndexDelta.ADDED)
-				added++;
-			if (kind == ITaglibIndexDelta.REMOVED)
-				removed++;
-			if (added > 0 && removed > 0)
-				break;
-		}
-		if (added > 0 && removed > 0) {
-			return ITaglibIndexDelta.CHANGED;
-		}
-		else if (added > 0) {
-			return ITaglibIndexDelta.ADDED;
-		}
-		else if (removed > 0) {
-			return ITaglibIndexDelta.REMOVED;
-		}
-		else {
-			return ITaglibIndexDelta.CHANGED;
-		}
-	}
-
-	public ITaglibIndexDelta[] getAffectedChildren() {
-		if (fChildren == null) {
-			return new ITaglibIndexDelta[0];
-		}
-		return (ITaglibIndexDelta[]) fChildren.toArray(new ITaglibIndexDelta[fChildren.size()]);
-	}
-
-	public int getKind() {
-		if (fChildren == null) {
-			return fExplicitKind;
-		}
-		if (fImplicitKind == -1) {
-			fImplicitKind = computeKind();
-		}
-		return fImplicitKind;
-	}
-
-	public IProject getProject() {
-		return fProject;
-	}
-
-	public ITaglibRecord getTaglibRecord() {
-		return fTaglibRecord;
-	}
-
-	public long getTime() {
-		return time;
-	}
-
-	public Object getTrigger() {
-		return trigger;
-	}
-
-	public String toString() {
-		if (fTaglibRecord != null) {
-			String string = fTaglibRecord.toString();
-			int kind = getKind();
-			switch (kind) {
-				case ITaglibIndexDelta.ADDED :
-					string = " ADDED (" + string + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-					break;
-				case ITaglibIndexDelta.CHANGED :
-					string = " CHANGED (" + string + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-					break;
-				case ITaglibIndexDelta.REMOVED :
-					string = " REMOVED (" + string + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-					break;
-				default :
-					string = " other:" + kind + " (" + string + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					break;
-			}
-			return string;
-		}
-		else {
-			StringBuffer buffer = new StringBuffer();
-			int kind = getKind();
-			switch (kind) {
-				case ITaglibIndexDelta.ADDED :
-					buffer.append("TaglibIndexDelta(" + fProject + "):ADDED\n"); //$NON-NLS-1$
-					break;
-				case ITaglibIndexDelta.CHANGED :
-					buffer.append("TaglibIndexDelta(" + fProject + "):CHANGED\n"); //$NON-NLS-1$
-					break;
-				case ITaglibIndexDelta.REMOVED :
-					buffer.append("TaglibIndexDelta(" + fProject + "):REMOVED\n"); //$NON-NLS-1$
-					break;
-			}
-			ITaglibIndexDelta[] children = getAffectedChildren();
-			for (int i = 0; i < children.length; i++) {
-				buffer.append('\t');
-				buffer.append(children[i].toString());
-				if (i < children.length - 1) {
-					buffer.append('\n');
-				}
-			}
-			return buffer.toString();
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/text/IJSPPartitions.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/text/IJSPPartitions.java
deleted file mode 100644
index dae4c3d..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/text/IJSPPartitions.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.core.text;
-
-
-/**
- * This interface is not intended to be implemented.
- * It defines the partition types for JSP.
- * Clients should reference the partition type Strings defined here directly.
- * 
- * @since 1.1
- */
-public interface IJSPPartitions {
-
-	String JSP_DEFAULT = "org.eclipse.jst.jsp.DEFAULT_JSP"; //$NON-NLS-1$
-	String JSP_COMMENT = "org.eclipse.jst.jsp.JSP_COMMENT"; //$NON-NLS-1$
-	
-	String JSP_SCRIPT_PREFIX = "org.eclipse.jst.jsp.SCRIPT."; //$NON-NLS-1$
-	String JSP_CONTENT_DELIMITER = JSP_SCRIPT_PREFIX + "DELIMITER"; //$NON-NLS-1$
-	String JSP_CONTENT_JAVA = JSP_SCRIPT_PREFIX + "JAVA"; //$NON-NLS-1$
-	String JSP_CONTENT_JAVASCRIPT = JSP_SCRIPT_PREFIX + "JAVASCRIPT"; //$NON-NLS-1$
-	String JSP_DEFAULT_EL = JSP_SCRIPT_PREFIX + "JSP_EL"; //$NON-NLS-1$
-	String JSP_DEFAULT_EL2 = JSP_SCRIPT_PREFIX + "JSP_EL2"; //$NON-NLS-1$
-	
-	String JSP_DIRECTIVE = "org.eclipse.jst.jsp.JSP_DIRECTIVE"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/contentmodel/JSPedCSSTaglibController.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/contentmodel/JSPedCSSTaglibController.java
deleted file mode 100644
index e84a5ff..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/contentmodel/JSPedCSSTaglibController.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-
-package org.eclipse.jst.jsp.css.core.internal.contentmodel;
-
-import org.eclipse.core.filebuffers.IDocumentSetupParticipant;
-import org.eclipse.jface.text.IDocument;
-
-public class JSPedCSSTaglibController implements IDocumentSetupParticipant {
-
-	public void setup(IDocument document) {
-		// ignore TLD in content type css jsp
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/contenttype/ContentDescriberForJSPedCSS.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/contenttype/ContentDescriberForJSPedCSS.java
deleted file mode 100644
index 58afa6e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/contenttype/ContentDescriberForJSPedCSS.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.contenttype;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.content.IContentDescriber;
-import org.eclipse.core.runtime.content.IContentDescription;
-import org.eclipse.core.runtime.content.ITextContentDescriber;
-import org.eclipse.jst.jsp.core.internal.contenttype.JSPResourceEncodingDetector;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.IContentDescriptionForJSP;
-import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;
-import org.eclipse.wst.sse.core.internal.encoding.IContentDescriptionExtended;
-import org.eclipse.wst.sse.core.internal.encoding.IResourceCharsetDetector;
-
-public class ContentDescriberForJSPedCSS implements ITextContentDescriber {
-	private final static QualifiedName[] SUPPORTED_OPTIONS = {IContentDescription.CHARSET, IContentDescription.BYTE_ORDER_MARK, IContentDescriptionExtended.DETECTED_CHARSET, IContentDescriptionExtended.UNSUPPORTED_CHARSET, IContentDescriptionExtended.APPROPRIATE_DEFAULT, IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE, IContentDescriptionForJSP.LANGUAGE_ATTRIBUTE};
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.content.IContentDescriber#describe(java.io.InputStream,
-	 *      org.eclipse.core.runtime.content.IContentDescription)
-	 */
-	public int describe(InputStream contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INVALID;
-
-		// if discription is null, we are just being asked to
-		// assess contents validity
-		if (description != null) {
-			result = calculateSupportedOptions(contents, description);
-		}
-		else {
-			result = determineValidity(contents);
-		}
-
-		return result;
-	}
-
-
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.core.runtime.content.ITextContentDescriber#describe(java.io.Reader,
-	 *      org.eclipse.core.runtime.content.IContentDescription)
-	 */
-	public int describe(Reader contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INVALID;
-
-		// if discription is null, we are just being asked to
-		// assess contents validity
-		if (description != null) {
-			result = calculateSupportedOptions(contents, description);
-		}
-		else {
-			result = determineValidity(contents);
-		}
-
-		return result;
-	}
-
-
-	public QualifiedName[] getSupportedOptions() {
-		return SUPPORTED_OPTIONS;
-	}
-
-	private int calculateSupportedOptions(InputStream contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INDETERMINATE;
-		if (isRelevent(description)) {
-			IResourceCharsetDetector detector = getDetector();
-			detector.set(contents);
-			handleCalculations(description, detector);
-			result = IContentDescriber.VALID;
-		}
-		return result;
-	}
-
-	/**
-	 * @param contents
-	 * @param description
-	 * @throws IOException
-	 */
-	private int calculateSupportedOptions(Reader contents, IContentDescription description) throws IOException {
-		int result = IContentDescriber.INDETERMINATE;
-		if (isRelevent(description)) {
-			IResourceCharsetDetector detector = getDetector();
-			detector.set(contents);
-			handleCalculations(description, detector);
-			result = IContentDescriber.VALID;
-		}
-		return result;
-	}
-
-	private IResourceCharsetDetector getDetector() {
-		return new JSPResourceEncodingDetector();
-	}
-
-	private void handleCalculations(IContentDescription description, IResourceCharsetDetector detector) throws IOException {
-		// handle standard ones first, to be sure detector processes
-		handleStandardCalculations(description, detector);
-		// now do those specific for JSPs
-		// note: detector should always be of correct instance, but we'll
-		// check, for now.
-		if (detector instanceof JSPResourceEncodingDetector) {
-			JSPResourceEncodingDetector jspDetector = (JSPResourceEncodingDetector) detector;
-			String language = jspDetector.getLanguage();
-			if (language != null && language.length() > 0) {
-				description.setProperty(IContentDescriptionForJSP.LANGUAGE_ATTRIBUTE, language);
-			}
-			String contentTypeAttribute = jspDetector.getContentType();
-			if (contentTypeAttribute != null && contentTypeAttribute.length() > 0) {
-				description.setProperty(IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE, contentTypeAttribute);
-			}
-		}
-	}
-
-	private void handleDetectedSpecialCase(IContentDescription description, Object detectedCharset, Object javaCharset) {
-		if (detectedCharset != null) {
-			// Once we detected a charset, we should set the property even
-			// though it's the same as javaCharset
-			// because there are clients that rely on this property to
-			// determine if the charset is actually detected in file or not.
-			description.setProperty(IContentDescriptionExtended.DETECTED_CHARSET, detectedCharset);
-		}
-	}
-
-	/**
-	 * @param description
-	 * @param detector
-	 * @throws IOException
-	 */
-	private void handleStandardCalculations(IContentDescription description, IResourceCharsetDetector detector) throws IOException {
-		// note: if we're asked for one, we set them all. I need to be sure if
-		// called
-		// mulitiple times (one for each, say) that we don't waste time
-		// processing same
-		// content again.
-		EncodingMemento encodingMemento = ((JSPResourceEncodingDetector) detector).getEncodingMemento();
-		// TODO: I need to verify to see if this BOM work is always done
-		// by text type.
-		Object detectedByteOrderMark = encodingMemento.getUnicodeBOM();
-		if (detectedByteOrderMark != null) {
-			Object existingByteOrderMark = description.getProperty(IContentDescription.BYTE_ORDER_MARK);
-			// not sure why would ever be different, so if is different, may
-			// need to "push" up into base.
-			if (!detectedByteOrderMark.equals(existingByteOrderMark))
-				description.setProperty(IContentDescription.BYTE_ORDER_MARK, detectedByteOrderMark);
-		}
-
-
-		if (!encodingMemento.isValid()) {
-			// note: after setting here, its the mere presence of
-			// IContentDescriptionExtended.UNSUPPORTED_CHARSET
-			// in the resource's description that can be used to determine if
-			// invalid
-			// in those cases, the "detected" property contains an
-			// "appropriate default" to use.
-			description.setProperty(IContentDescriptionExtended.UNSUPPORTED_CHARSET, encodingMemento.getInvalidEncoding());
-			description.setProperty(IContentDescriptionExtended.APPROPRIATE_DEFAULT, encodingMemento.getAppropriateDefault());
-		}
-
-		Object detectedCharset = encodingMemento.getDetectedCharsetName();
-		Object javaCharset = encodingMemento.getJavaCharsetName();
-
-		// we always include detected, if its different than java
-		handleDetectedSpecialCase(description, detectedCharset, javaCharset);
-
-		if (javaCharset != null) {
-			Object existingCharset = description.getProperty(IContentDescription.CHARSET);
-			if (javaCharset.equals(existingCharset)) {
-				handleDetectedSpecialCase(description, detectedCharset, javaCharset);
-			}
-			else {
-				// we may need to add what we found, but only need to add
-				// if different from the default.
-				Object defaultCharset = detector.getSpecDefaultEncoding();
-				if (defaultCharset != null) {
-					if (!defaultCharset.equals(javaCharset)) {
-						description.setProperty(IContentDescription.CHARSET, javaCharset);
-					}
-				}
-				else {
-					// assuming if there is no spec default, we always need to
-					// add, I'm assuming
-					description.setProperty(IContentDescription.CHARSET, javaCharset);
-				}
-			}
-		}
-
-	}
-
-	/**
-	 * @param description
-	 * @return
-	 */
-	private boolean isRelevent(IContentDescription description) {
-		boolean result = false;
-		if (description == null)
-			result = false;
-		else if (description.isRequested(IContentDescription.BYTE_ORDER_MARK))
-			result = true;
-		else if (description.isRequested(IContentDescription.CHARSET))
-			result = true;
-		else if (description.isRequested(IContentDescriptionExtended.APPROPRIATE_DEFAULT))
-			result = true;
-		else if (description.isRequested(IContentDescriptionExtended.DETECTED_CHARSET))
-			result = true;
-		else if (description.isRequested(IContentDescriptionExtended.UNSUPPORTED_CHARSET))
-			result = true;
-		else if (description.isRequested(IContentDescriptionForJSP.CONTENT_TYPE_ATTRIBUTE))
-			result = true;
-		return result;
-	}
-	
-	private int determineValidity(InputStream inputStream) {
-		return IContentDescriber.INDETERMINATE;
-	}
-
-	private int determineValidity(Reader reader) {
-		return IContentDescriber.INDETERMINATE;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/IJSPCSSImportRule.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/IJSPCSSImportRule.java
deleted file mode 100644
index 7f74b88..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/IJSPCSSImportRule.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.document;
-
-import org.eclipse.wst.css.core.internal.provisional.document.ICSSImportRule;
-
-public interface IJSPCSSImportRule extends ICSSImportRule, IJSPCSSNode {
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/IJSPCSSNode.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/IJSPCSSNode.java
deleted file mode 100644
index af26755..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/IJSPCSSNode.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.document;
-import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
-
-
-public interface IJSPCSSNode extends ICSSNode {
-	short JSP_NODE = 16;
-	String getCssText();
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPCSSImportRuleImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPCSSImportRuleImpl.java
deleted file mode 100644
index 9e9dd13..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPCSSImportRuleImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.document;
-
-import org.eclipse.wst.css.core.internal.document.CSSImportRuleImpl;
-import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
-import org.eclipse.wst.css.core.internal.util.CSSUtil;
-
-public class JSPCSSImportRuleImpl extends CSSImportRuleImpl implements IJSPCSSImportRule {
-
-	JSPCSSImportRuleImpl() {
-		super();
-	}
-	
-	JSPCSSImportRuleImpl(JSPCSSImportRuleImpl that) {
-		super(that);
-	}
-
-	
-	public ICSSNode cloneNode(boolean deep) {
-		JSPCSSImportRuleImpl cloned = new JSPCSSImportRuleImpl(this);
-
-		if (deep)
-			cloneChildNodes(cloned, deep);
-
-		return cloned;
-	}
-	public String getHref() {
-		return getAttribute(HREF);
-	}
-
-	public void setAttribute(String name, String value) {
-		if (HREF.equals(name)){
-			value = CSSUtil.extractUriContents(value);
-		}
-		super.setAttribute(name, value);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPCSSNodeImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPCSSNodeImpl.java
deleted file mode 100644
index d2ba70c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPCSSNodeImpl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.document;
-
-
-import org.eclipse.wst.css.core.internal.document.CSSStructuredDocumentRegionContainer;
-import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
-
-
-class JSPCSSNodeImpl extends CSSStructuredDocumentRegionContainer implements IJSPCSSNode {
-
-
-	private String fText;
-
-	JSPCSSNodeImpl(JSPCSSNodeImpl that) {
-		super(that);
-
-	}
-
-	JSPCSSNodeImpl(String text) {
-		super();
-		fText = text;
-	}
-	
-	public ICSSNode cloneNode(boolean deep) {
-		JSPCSSNodeImpl cloned = new JSPCSSNodeImpl(this);
-
-		if (deep)
-			cloneChildNodes(cloned, deep);
-
-		return cloned;
-	}
-
-	public short getNodeType() {
-		return JSP_NODE;
-	}
-
-	public String getCssText() {
-		return fText;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPedCSSModelImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPedCSSModelImpl.java
deleted file mode 100644
index e4da0fe..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPedCSSModelImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.document;
-
-import org.eclipse.wst.css.core.internal.document.CSSModelImpl;
-import org.eclipse.wst.css.core.internal.document.CSSModelParser;
-
-public class JSPedCSSModelImpl extends CSSModelImpl {
-	private JSPedCSSModelParser fParser;
-	
-	protected CSSModelParser getParser() {
-		if (fParser == null) {
-			if (getDocument() != null) {
-				fParser = new JSPedCSSModelParser(getDocument());
-			}
-		}
-		return fParser;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPedCSSModelParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPedCSSModelParser.java
deleted file mode 100644
index 0aa723f..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/document/JSPedCSSModelParser.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.document;
-
-import java.util.regex.Pattern;
-
-import org.eclipse.jst.jsp.css.core.internal.parserz.JSPedCSSRegionContexts;
-import org.eclipse.wst.css.core.internal.document.CSSModelCreationContext;
-import org.eclipse.wst.css.core.internal.document.CSSModelParser;
-import org.eclipse.wst.css.core.internal.document.CSSNodeImpl;
-import org.eclipse.wst.css.core.internal.document.CSSStructuredDocumentRegionContainer;
-import org.eclipse.wst.css.core.internal.provisional.document.ICSSDocument;
-import org.eclipse.wst.css.core.internal.provisional.document.ICSSRuleContainer;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocumentRegion;
-
-
-/**
- * 
- */
-class JSPedCSSModelParser extends CSSModelParser {
-
-	public JSPedCSSModelParser(ICSSDocument doc) {
-		super(doc);
-	}
-	/**
-	 * 
-	 */
-	protected CSSNodeImpl insertStructuredDocumentRegion(IStructuredDocumentRegion region) {
-		CSSModelCreationContext creationContext = getCreationContext();
-		if (creationContext == null || region == null) {
-			return null;
-		}
-
-		String type = ((BasicStructuredDocumentRegion) region).getType();
-		CSSNodeImpl modified = null;
-
-		//ICSSNode target = fCreationContext.getTargetNode();
-		
-		if (type == JSPedCSSRegionContexts.CSS_JSP_DIRECTIVE){
-			
-			boolean isInclude = region.getText().indexOf("include") != -1;
-			if (isInclude){
-				modified = insertUnknownImport(region);
-			} else {
-				modified = insertUnknownRule(region);					
-			}
-		}
-
-		// post process
-		if (modified != null) {
-			if (modified instanceof CSSStructuredDocumentRegionContainer) {
-				((CSSStructuredDocumentRegionContainer) modified).propagateRangeStructuredDocumentRegion();
-			}
-		}
-
-		return modified != null ? modified : super.insertStructuredDocumentRegion(region);
-	}
-
-	private CSSNodeImpl insertUnknownImport(IStructuredDocumentRegion region) {
-		CSSModelCreationContext creationContext = getCreationContext();
-		CSSNodeImpl parent = creationContext.getTargetNode();
-		ICSSDocument sheet = parent.getOwnerDocument();
-		
-		String text = region.getText();
-		Pattern pattern = Pattern.compile(" ");
-	    String[] strs = pattern.split(text);
-	    String hrefValue = null;
-	    for (int i=0;i<strs.length;i++) {
-	    	String hrefStr = "file=\"";
-	      if (strs[i].startsWith(hrefStr)){
-				int hrefStr_length = hrefStr.length();
-				// minus 1 to avoid quote?
-				int hrefValue_length = strs[i].length() - 1;
-				if (hrefValue_length > hrefStr_length) {
-					hrefValue = strs[i].substring(hrefStr_length, hrefValue_length);
-				}
-				else {
-					/*
-					 * ISSUE: this handles cases where, e.g. "file=" has no
-					 * subsequent 'value' ... and from code in insertStructuredDocumentRegion
-					 * I believe should return null, rather than empty string, but, this may 
-					 * need some fine tuning eventually.
-					 */
-					hrefValue = null;
-				}
-	    	  break;
-	      }
-	    }
-		
-		if (hrefValue == null) {
-			return null;
-		}
-
-		JSPCSSImportRuleImpl rule = new JSPCSSImportRuleImpl();
-		rule.setOwnerDocument(sheet);
-		rule.appendChild((CSSNodeImpl)sheet.createMediaList());
-		rule.setRangeStructuredDocumentRegion(region, region);
-
-		
-		if (!isUpdateContextActive()) {
-			rule.setHref(hrefValue);//Attribute(ICSSImportRule.HREF, hrefValue);
-		}
-
-
-		// insert to tree
-		if (!isUpdateContextActive() && parent != null) {
-			//propagateRangePreInsert(sheet, rule);
-			CSSNodeImpl next = creationContext.getNextNode();
-			if (next != null) {
-				((CSSNodeImpl)sheet).insertBefore(rule, next);
-			}
-			else {
-				((CSSNodeImpl)sheet).appendChild(rule);
-			}
-		}
-		//creationContext.setTargetNode(rule);
-		return rule;
-	}
-
-	private CSSNodeImpl insertUnknownRule(IStructuredDocumentRegion flatNode) {
-		CSSModelCreationContext creationContext = getCreationContext();
-		CSSNodeImpl parent = creationContext.getTargetNode();
-		if (!isParseFloating() && !(parent instanceof ICSSRuleContainer)) {
-			return null;
-		}
-
-		JSPCSSNodeImpl rule = new JSPCSSNodeImpl(flatNode.getText());
-		rule.setOwnerDocument(parent.getOwnerDocument());
-
-		// setup flat container
-		rule.setRangeStructuredDocumentRegion(flatNode, flatNode);
-
-
-		// insert to tree
-		if (!isUpdateContextActive() && parent != null) {
-			propagateRangePreInsert(parent, rule);
-			CSSNodeImpl next = creationContext.getNextNode();
-			if (next != null) {
-				parent.insertBefore(rule, next);
-			}
-			else {
-				parent.appendChild(rule);
-			}
-		}
-
-		//creationContext.setTargetNode(parent.getOwnerDocument());
-		// TargetNext is set to null automatically
-
-		return rule;
-	}
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/encoding/JSPedCSSDocumentLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/encoding/JSPedCSSDocumentLoader.java
deleted file mode 100644
index b87ca7a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/encoding/JSPedCSSDocumentLoader.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.encoding;
-
-import org.eclipse.jst.jsp.css.core.internal.parser.JSPedCSSSourceParser;
-import org.eclipse.wst.css.core.internal.encoding.CSSDocumentLoader;
-import org.eclipse.wst.sse.core.internal.document.IDocumentLoader;
-import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
-
-public class JSPedCSSDocumentLoader extends CSSDocumentLoader {
-public RegionParser getParser() {
-	return new JSPedCSSSourceParser();
-}
-public IDocumentLoader newInstance() {
-	return new JSPedCSSDocumentLoader();
-}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/modelhandler/JSPedCSSModelLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/modelhandler/JSPedCSSModelLoader.java
deleted file mode 100644
index 60914b5..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/modelhandler/JSPedCSSModelLoader.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.modelhandler;
-
-import org.eclipse.jst.jsp.css.core.internal.document.JSPedCSSModelImpl;
-import org.eclipse.jst.jsp.css.core.internal.encoding.JSPedCSSDocumentLoader;
-import org.eclipse.wst.css.core.internal.modelhandler.CSSModelLoader;
-import org.eclipse.wst.sse.core.internal.document.IDocumentLoader;
-import org.eclipse.wst.sse.core.internal.provisional.IModelLoader;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-
-
-public class JSPedCSSModelLoader extends CSSModelLoader {
-public IStructuredModel newModel() {
-	IStructuredModel model = new JSPedCSSModelImpl();
-	return model;
-}
-public IModelLoader newInstance() {
-	return new JSPedCSSModelLoader();
-}
-public IDocumentLoader getDocumentLoader() {
-	if (documentLoaderInstance == null) {
-		documentLoaderInstance = new JSPedCSSDocumentLoader();
-	}
-	return documentLoaderInstance;
-}
-
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/modelhandler/ModelHandlerForJSPedCSS.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/modelhandler/ModelHandlerForJSPedCSS.java
deleted file mode 100644
index 67d1c2b..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/modelhandler/ModelHandlerForJSPedCSS.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.modelhandler;
-
-import org.eclipse.jst.jsp.css.core.internal.encoding.JSPedCSSDocumentLoader;
-import org.eclipse.wst.css.core.internal.encoding.CSSDocumentCharsetDetector;
-import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;
-import org.eclipse.wst.sse.core.internal.document.IDocumentLoader;
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.AbstractModelHandler;
-import org.eclipse.wst.sse.core.internal.ltk.modelhandler.IModelHandler;
-import org.eclipse.wst.sse.core.internal.provisional.IModelLoader;
-
-
-public class ModelHandlerForJSPedCSS extends AbstractModelHandler implements IModelHandler {
-	static String AssociatedContentTypeID = "org.eclipse.jst.jsp.core.cssjspsource"; //$NON-NLS-1$
-	
-	private static String ModelHandlerID = "org.eclipse.jst.jsp.css.core.modelhandler"; //$NON-NLS-1$
-	public ModelHandlerForJSPedCSS(){
-		super();
-		setId(ModelHandlerID);
-		setAssociatedContentTypeId(AssociatedContentTypeID);
-	}
-	
-	public IModelLoader getModelLoader() {
-		return new JSPedCSSModelLoader();
-	}
-	
-	public IDocumentCharsetDetector getEncodingDetector() {
-		return new CSSDocumentCharsetDetector();
-	}
-
-	public IDocumentLoader getDocumentLoader() {
-		return new JSPedCSSDocumentLoader();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parser/JSPedCSSSourceParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parser/JSPedCSSSourceParser.java
deleted file mode 100644
index 762a8a4..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parser/JSPedCSSSourceParser.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.parser;
-
-import org.eclipse.jst.jsp.css.core.internal.parserz.JSPedCSSRegionContexts;
-import org.eclipse.wst.css.core.internal.parser.CSSRegionUtil;
-import org.eclipse.wst.css.core.internal.parser.CSSSourceParser;
-import org.eclipse.wst.css.core.internal.parser.ICSSTokenizer;
-import org.eclipse.wst.css.core.internal.parserz.CSSRegionContexts;
-import org.eclipse.wst.sse.core.internal.ltk.parser.RegionParser;
-
-
-public class JSPedCSSSourceParser extends CSSSourceParser {
-
-	private JSPedCSSTokenizer fTokenizer;
-	protected boolean mustBeStart(String type, String docRegionType) {
-		return ((type == JSPedCSSRegionContexts.CSS_JSP_COMMENT || type == JSPedCSSRegionContexts.CSS_JSP_DIRECTIVE || type == JSPedCSSRegionContexts.CSS_JSP_END || type == CSSRegionContexts.CSS_DELIMITER || type == CSSRegionContexts.CSS_LBRACE || type == CSSRegionContexts.CSS_RBRACE || type == CSSRegionContexts.CSS_IMPORT || type == CSSRegionContexts.CSS_PAGE || type == CSSRegionContexts.CSS_MEDIA || type == CSSRegionContexts.CSS_FONT_FACE || type == CSSRegionContexts.CSS_CHARSET || type == CSSRegionContexts.CSS_ATKEYWORD || type == CSSRegionContexts.CSS_DECLARATION_PROPERTY || type == CSSRegionContexts.CSS_DECLARATION_DELIMITER) || (docRegionType == CSSRegionContexts.CSS_DECLARATION_PROPERTY && type == CSSRegionContexts.CSS_S) || (!CSSRegionUtil.isSelectorBegginingType(docRegionType) && (type == CSSRegionContexts.CSS_SELECTOR_ELEMENT_NAME || type == CSSRegionContexts.CSS_SELECTOR_UNIVERSAL || type == CSSRegionContexts.CSS_SELECTOR_PSEUDO || type == CSSRegionContexts.CSS_SELECTOR_CLASS || type == CSSRegionContexts.CSS_SELECTOR_ID || type == CSSRegionContexts.CSS_SELECTOR_ATTRIBUTE_START)));
-	}
-
-	protected boolean mustBeEnd(String type) {
-		return (type == JSPedCSSRegionContexts.CSS_JSP_COMMENT || type == JSPedCSSRegionContexts.CSS_JSP_DIRECTIVE || type == JSPedCSSRegionContexts.CSS_JSP_END || type == CSSRegionContexts.CSS_DELIMITER || type == CSSRegionContexts.CSS_LBRACE || type == CSSRegionContexts.CSS_RBRACE || type == CSSRegionContexts.CSS_DECLARATION_DELIMITER);
-	}
-	
-	public ICSSTokenizer getTokenizer() {
-		if (fTokenizer == null) {
-			fTokenizer = new JSPedCSSTokenizer();
-		}
-		return fTokenizer;
-	}
-	
-	public RegionParser newInstance() {
-		return new JSPedCSSSourceParser();
-	}
-	
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parser/JSPedCSSTokenizer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parser/JSPedCSSTokenizer.java
deleted file mode 100644
index ddb22e7..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parser/JSPedCSSTokenizer.java
+++ /dev/null
@@ -1,2078 +0,0 @@
-/* The following code was generated by JFlex 1.4.1 on 7/22/08 10:30 AM */
-
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.parser;
-
-import java.io.CharArrayReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jst.jsp.css.core.internal.parserz.JSPedCSSRegionContexts;
-import org.eclipse.wst.css.core.internal.parser.CSSRegionUtil;
-import org.eclipse.wst.css.core.internal.parser.ICSSTokenizer;
-import org.eclipse.wst.css.core.internal.parser.regions.CSSTextRegionFactory;
-import org.eclipse.wst.css.core.internal.parserz.CSSTextToken;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-
-
-/**
- * This class is a scanner generated by 
- * <a href="http://www.jflex.de/">JFlex</a> 1.4.1
- * on 7/22/08 10:30 AM from the specification file
- * <tt>D:/workspaces/wtp301/workspace/org.eclipse.jst.jsp.core/DevTimeSupport/CSSJSPParser/JSPedCSSTokenizer.flex</tt>
- */
-public class JSPedCSSTokenizer implements JSPedCSSRegionContexts, ICSSTokenizer {
-
-  /** This character denotes the end of file */
-  public static final int YYEOF = -1;
-
-  /** initial size of the lookahead buffer */
-  private static final int ZZ_BUFFERSIZE = 16384;
-
-  /** lexical states */
-  public static final int ST_JSP_EXP = 21;
-  public static final int ST_JSP_DIRECTIVE = 21;
-  public static final int ST_SELECTOR_ATTRIBUTE_NAME = 12;
-  public static final int ST_IMPORT_DELIMITER = 5;
-  public static final int ST_DECLARATION_PRE_VALUE = 18;
-  public static final int ST_SELECTOR = 10;
-  public static final int ST_CHARSET_DELIMITER = 2;
-  public static final int ST_DECLARATION_VALUE = 19;
-  public static final int ST_PAGE_PSEUDO_PAGE = 8;
-  public static final int ST_IMPORT_URI = 3;
-  public static final int ST_SELECTOR_ATTRIBUTE_END = 15;
-  public static final int ST_JSP_EL = 22;
-  public static final int ST_SELECTOR_ATTRIBUTE_OPERATOR = 13;
-  public static final int ST_JSP_DECLARATION = 21;
-  public static final int ST_DECLARATION = 16;
-  public static final int ST_PAGE_DELIMITER = 9;
-  public static final int ST_SELECTOR_ATTRIBUTE_VALUE = 14;
-  public static final int ST_MEDIA_MEDIUM = 6;
-  public static final int ST_JSP_SCRIPTLET = 20;
-  public static final int ST_CHARSET_NAME = 1;
-  public static final int ST_JSP_COMMENT = 23;
-  public static final int ST_IMPORT_MEDIUM = 4;
-  public static final int ST_DECLARATION_SEPARATOR = 17;
-  public static final int ST_FONT_FACE_DELIMITER = 9;
-  public static final int ST_MEDIA_DELIMITER = 7;
-  public static final int ST_SELECTOR_MODIFIER = 11;
-  public static final int YYINITIAL = 0;
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final String ZZ_CMAP_PACKED = 
-    "\11\0\1\11\1\17\1\0\1\4\1\20\22\0\1\6\1\40\1\10"+
-    "\1\22\1\33\1\31\1\16\1\5\1\26\1\12\1\42\1\14\1\61"+
-    "\1\13\1\15\1\41\12\1\1\65\1\54\1\30\1\37\1\32\1\21"+
-    "\1\36\1\47\1\27\1\44\1\63\1\52\1\67\1\64\1\45\1\55"+
-    "\2\2\1\25\1\56\1\70\1\60\1\57\1\2\1\24\1\50\1\53"+
-    "\1\23\5\2\1\71\1\3\1\73\1\16\1\2\1\16\1\46\1\7"+
-    "\1\43\1\62\1\51\1\66\1\64\1\45\1\55\2\2\1\25\1\56"+
-    "\1\70\1\60\1\57\1\2\1\24\1\50\1\53\1\23\5\2\1\34"+
-    "\1\72\1\35\1\72\1\0\uff80\2";
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
-
-  /** 
-   * Translates DFA states to action switch labels.
-   */
-  private static final int [] ZZ_ACTION = zzUnpackAction();
-
-  private static final String ZZ_ACTION_PACKED_0 =
-    "\30\0\1\1\1\2\1\1\1\3\1\2\4\1\1\4"+
-    "\2\1\1\5\1\1\1\6\4\1\1\7\3\1\1\10"+
-    "\1\1\1\10\1\11\1\12\1\1\1\12\1\13\1\14"+
-    "\1\15\1\1\1\15\1\16\1\1\1\3\1\17\1\20"+
-    "\1\21\1\1\1\21\1\22\1\1\1\23\1\24\3\1"+
-    "\1\24\1\25\1\1\1\25\1\26\1\27\1\30\1\31"+
-    "\3\1\1\32\1\31\3\1\1\31\1\1\2\33\1\3"+
-    "\2\1\1\34\1\35\1\36\1\37\1\1\1\0\2\2"+
-    "\1\40\1\0\1\41\2\0\1\42\2\0\1\43\6\0"+
-    "\1\44\3\0\1\45\5\0\1\46\4\0\2\10\1\0"+
-    "\2\12\1\0\2\15\1\17\1\0\2\21\1\0\1\24"+
-    "\2\0\1\24\2\0\1\24\1\0\2\25\1\47\2\0"+
-    "\1\50\1\0\1\51\1\31\2\0\1\52\2\0\2\31"+
-    "\1\30\1\53\2\0\1\31\2\0\1\54\1\55\1\0"+
-    "\1\56\1\0\1\2\1\57\1\40\1\41\10\0\1\44"+
-    "\1\0\1\45\2\0\1\45\2\0\1\46\2\0\1\46"+
-    "\2\0\1\10\1\12\1\15\1\21\1\24\1\0\1\24"+
-    "\2\0\1\24\1\0\1\25\1\47\1\31\1\0\1\52"+
-    "\2\0\1\52\1\0\1\53\1\60\1\31\3\0\1\2"+
-    "\1\40\1\41\1\61\5\0\1\62\2\0\1\44\5\0"+
-    "\1\10\1\12\1\15\1\21\1\24\2\0\1\25\1\47"+
-    "\1\31\2\0\1\53\1\60\1\0\1\51\1\0\1\63"+
-    "\1\2\1\40\1\41\3\0\1\64\2\0\1\44\1\0"+
-    "\1\44\10\0\1\65\1\10\1\12\1\15\1\21\1\24"+
-    "\2\0\1\25\1\47\1\31\2\0\1\53\2\60\5\0"+
-    "\1\66\1\0\1\2\1\40\1\41\2\0\1\67\2\0"+
-    "\1\44\6\0\1\65\2\0\1\10\1\12\1\15\1\21"+
-    "\1\24\2\0\1\25\1\47\1\31\2\0\1\53\2\60"+
-    "\2\0\1\66\3\0\1\2\1\40\1\41\1\0\1\70"+
-    "\2\0\1\44\13\0\1\10\1\12\1\15\1\21\1\24"+
-    "\2\0\1\25\1\47\1\31\2\0\1\53\2\60\10\0"+
-    "\1\40\1\41\1\71\2\0\1\44\6\0\1\65\1\0"+
-    "\1\65\2\0\1\47\2\0\1\53\2\60\2\0\1\66"+
-    "\1\0\1\66\6\0\1\60\4\0\1\72\4\0\1\60"+
-    "\3\0\1\73\12\0";
-
-  private static int [] zzUnpackAction() {
-    int [] result = new int[455];
-    int offset = 0;
-    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAction(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /** 
-   * Translates a state to a row index in the transition table
-   */
-  private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
-
-  private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\74\0\170\0\264\0\360\0\u012c\0\u0168\0\u01a4"+
-    "\0\u01e0\0\u021c\0\u0258\0\u0294\0\u02d0\0\u030c\0\u0348\0\u0384"+
-    "\0\u03c0\0\u03fc\0\u0438\0\u0474\0\u04b0\0\u04ec\0\u0528\0\u0564"+
-    "\0\u05a0\0\u05dc\0\u0618\0\u0654\0\u0690\0\u06cc\0\u0708\0\u0744"+
-    "\0\u0780\0\u05a0\0\u07bc\0\u07f8\0\u05a0\0\u0834\0\u05a0\0\u0870"+
-    "\0\u08ac\0\u08e8\0\u0924\0\u05a0\0\u0960\0\u099c\0\u09d8\0\u0a14"+
-    "\0\u0a50\0\u0a8c\0\u05a0\0\u0ac8\0\u0b04\0\u0b40\0\u05a0\0\u05a0"+
-    "\0\u0b7c\0\u0bb8\0\u0bf4\0\u05a0\0\u0c30\0\u0c6c\0\u05a0\0\u05a0"+
-    "\0\u0ca8\0\u0ce4\0\u0d20\0\u05a0\0\u0d5c\0\u05a0\0\u0d98\0\u0dd4"+
-    "\0\u0e10\0\u0e4c\0\u0e88\0\u0ec4\0\u0f00\0\u0f3c\0\u05a0\0\u05a0"+
-    "\0\u0f78\0\u0fb4\0\u0ff0\0\u102c\0\u1068\0\u05a0\0\u10a4\0\u10e0"+
-    "\0\u111c\0\u1158\0\u1194\0\u11d0\0\u07f8\0\u05a0\0\u120c\0\u1248"+
-    "\0\u1284\0\u07bc\0\u05a0\0\u05a0\0\u05a0\0\u12c0\0\u0618\0\u12fc"+
-    "\0\u1338\0\u06cc\0\u1374\0\u0708\0\u13b0\0\u13ec\0\u1428\0\u1464"+
-    "\0\u0780\0\u05a0\0\u14a0\0\u14dc\0\u1518\0\u1554\0\u1590\0\u15cc"+
-    "\0\u1608\0\u1644\0\u0870\0\u1680\0\u05a0\0\u08ac\0\u16bc\0\u16f8"+
-    "\0\u0960\0\u1734\0\u05a0\0\u099c\0\u1770\0\u17ac\0\u0a50\0\u17e8"+
-    "\0\u1824\0\u0b04\0\u1860\0\u189c\0\u0bb8\0\u18d8\0\u1914\0\u05a0"+
-    "\0\u0ce4\0\u1950\0\u198c\0\u0dd4\0\u19c8\0\u0e10\0\u1a04\0\u05a0"+
-    "\0\u0e4c\0\u1a40\0\u1a7c\0\u0f00\0\u1ab8\0\u1af4\0\u1b30\0\u1b6c"+
-    "\0\u111c\0\u05a0\0\u0ff0\0\u05a0\0\u1ba8\0\u102c\0\u1be4\0\u05a0"+
-    "\0\u1068\0\u1c20\0\u1c5c\0\u1c98\0\u1cd4\0\u1158\0\u1d10\0\u1d4c"+
-    "\0\u1d88\0\u11d0\0\u1dc4\0\u05a0\0\u16f8\0\u1284\0\u05a0\0\u1e00"+
-    "\0\u1e3c\0\u05a0\0\u1e78\0\u1eb4\0\u1ef0\0\u1f2c\0\u1f68\0\u1fa4"+
-    "\0\u1fe0\0\u201c\0\u2058\0\u2094\0\u20d0\0\u210c\0\u0870\0\u2148"+
-    "\0\u2184\0\u08ac\0\u21c0\0\u21fc\0\u0960\0\u2238\0\u2274\0\u099c"+
-    "\0\u22b0\0\u22ec\0\u2328\0\u2364\0\u23a0\0\u23dc\0\u2418\0\u2454"+
-    "\0\u0e10\0\u2490\0\u24cc\0\u0e4c\0\u2508\0\u2544\0\u2580\0\u25bc"+
-    "\0\u25f8\0\u102c\0\u2634\0\u2670\0\u1068\0\u26ac\0\u26e8\0\u2724"+
-    "\0\u2760\0\u279c\0\u27d8\0\u2814\0\u2850\0\u288c\0\u28c8\0\u05a0"+
-    "\0\u2904\0\u2940\0\u297c\0\u29b8\0\u29f4\0\u05a0\0\u2a30\0\u2a6c"+
-    "\0\u2aa8\0\u2ae4\0\u2b20\0\u2b5c\0\u2b98\0\u2bd4\0\u2c10\0\u2c4c"+
-    "\0\u2c88\0\u2cc4\0\u2d00\0\u2d3c\0\u2d78\0\u2db4\0\u2df0\0\u2e2c"+
-    "\0\u2e68\0\u2ea4\0\u2ee0\0\u2f1c\0\u2f58\0\u2f94\0\u2fd0\0\u05a0"+
-    "\0\u300c\0\u3048\0\u3084\0\u30c0\0\u30fc\0\u3138\0\u05a0\0\u3174"+
-    "\0\u31b0\0\u05a0\0\u31ec\0\u3228\0\u3264\0\u32a0\0\u32dc\0\u3318"+
-    "\0\u3354\0\u3390\0\u33cc\0\u3408\0\u05a0\0\u3444\0\u3480\0\u34bc"+
-    "\0\u34f8\0\u3534\0\u3570\0\u35ac\0\u35e8\0\u3624\0\u3660\0\u369c"+
-    "\0\u36d8\0\u3714\0\u3750\0\u378c\0\u37c8\0\u3804\0\u2f94\0\u3840"+
-    "\0\u387c\0\u05a0\0\u38b8\0\u38f4\0\u3930\0\u396c\0\u39a8\0\u39e4"+
-    "\0\u05a0\0\u3a20\0\u3a5c\0\u3a98\0\u3ad4\0\u3b10\0\u3b4c\0\u3b88"+
-    "\0\u3bc4\0\u3c00\0\u3354\0\u3c3c\0\u3c78\0\u3cb4\0\u3cf0\0\u3d2c"+
-    "\0\u3d68\0\u3da4\0\u3de0\0\u3e1c\0\u3e58\0\u3e94\0\u3ed0\0\u3f0c"+
-    "\0\u3f48\0\u3f84\0\u3fc0\0\u3ffc\0\u4038\0\u4074\0\u37c8\0\u40b0"+
-    "\0\u40ec\0\u4128\0\u4164\0\u41a0\0\u41dc\0\u4218\0\u05a0\0\u4254"+
-    "\0\u4290\0\u42cc\0\u4308\0\u4344\0\u4380\0\u43bc\0\u43f8\0\u4434"+
-    "\0\u4470\0\u44ac\0\u44e8\0\u4524\0\u4560\0\u459c\0\u45d8\0\u4614"+
-    "\0\u4650\0\u468c\0\u46c8\0\u4704\0\u4740\0\u477c\0\u47b8\0\u47f4"+
-    "\0\u4830\0\u486c\0\u48a8\0\u48e4\0\u4920\0\u495c\0\u4998\0\u49d4"+
-    "\0\u4a10\0\u4a4c\0\u4a88\0\u4ac4\0\u4b00\0\u4b3c\0\u05a0\0\u4b78"+
-    "\0\u4bb4\0\u4bf0\0\u4c2c\0\u4c68\0\u4ca4\0\u4ce0\0\u4d1c\0\u4d58"+
-    "\0\u33cc\0\u4d94\0\u3408\0\u4dd0\0\u4e0c\0\u4e48\0\u4e84\0\u4ec0"+
-    "\0\u4efc\0\u4f38\0\u4f74\0\u4fb0\0\u4fec\0\u3840\0\u5028\0\u387c"+
-    "\0\u5064\0\u50a0\0\u50dc\0\u5118\0\u5154\0\u5190\0\u51cc\0\u5208"+
-    "\0\u5244\0\u5280\0\u52bc\0\u05a0\0\u52f8\0\u5334\0\u5370\0\u53ac"+
-    "\0\u05a0\0\u53e8\0\u5424\0\u5460\0\u05a0\0\u549c\0\u54d8\0\u5514"+
-    "\0\u5550\0\u558c\0\u55c8\0\u5604\0\u5640\0\u567c\0\u56b8";
-
-  private static int [] zzUnpackRowMap() {
-    int [] result = new int[455];
-    int offset = 0;
-    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackRowMap(String packed, int offset, int [] result) {
-    int i = 0;  /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int high = packed.charAt(i++) << 16;
-      result[j++] = high | packed.charAt(i++);
-    }
-    return j;
-  }
-
-  /** 
-   * The transition table of the DFA
-   */
-  private static final int [] ZZ_TRANS = zzUnpackTrans();
-
-  private static final String ZZ_TRANS_PACKED_0 =
-    "\2\31\1\32\1\33\1\34\1\31\1\34\1\32\1\31"+
-    "\1\34\1\31\1\35\1\31\1\36\1\31\2\34\1\31"+
-    "\1\37\3\32\1\31\1\32\1\40\2\31\1\41\1\31"+
-    "\1\42\1\43\2\31\1\44\1\45\11\32\1\31\4\32"+
-    "\1\31\3\32\1\46\3\32\1\47\6\31\1\34\1\50"+
-    "\1\34\1\31\1\51\1\34\1\31\1\52\3\31\2\34"+
-    "\7\31\1\53\4\31\1\42\1\43\2\31\1\44\36\31"+
-    "\1\34\1\31\1\34\2\31\1\34\1\31\1\52\3\31"+
-    "\2\34\7\31\1\53\4\31\1\42\1\43\2\31\1\44"+
-    "\12\31\1\54\23\31\1\34\1\55\1\34\1\31\1\56"+
-    "\1\34\1\31\1\52\3\31\2\34\2\31\1\57\4\31"+
-    "\1\53\4\31\1\42\1\43\2\31\1\44\12\31\1\54"+
-    "\21\31\1\60\1\61\1\34\1\31\1\34\1\60\1\31"+
-    "\1\34\1\31\1\62\3\31\2\34\2\31\3\60\1\31"+
-    "\1\60\1\53\4\31\1\42\1\43\2\31\1\44\1\31"+
-    "\11\60\1\54\4\60\1\31\3\60\1\31\3\60\7\31"+
-    "\1\34\1\31\1\34\2\31\1\34\1\31\1\52\3\31"+
-    "\2\34\7\31\1\53\4\31\1\42\1\43\2\31\1\44"+
-    "\12\31\1\54\4\31\1\63\14\31\1\64\1\65\1\34"+
-    "\1\31\1\34\1\64\1\31\1\34\1\31\1\66\3\31"+
-    "\2\34\2\31\3\64\1\31\1\64\1\53\4\31\1\42"+
-    "\1\43\2\31\1\44\1\31\11\64\1\31\4\64\1\31"+
-    "\3\64\1\31\3\64\7\31\1\34\1\31\1\34\2\31"+
-    "\1\34\1\31\1\52\3\31\2\34\7\31\1\53\3\31"+
-    "\1\67\1\42\1\43\2\31\1\44\17\31\1\70\14\31"+
-    "\1\71\1\72\1\34\1\31\1\34\1\71\1\31\1\34"+
-    "\1\31\1\73\3\31\2\34\2\31\3\71\1\31\1\71"+
-    "\1\53\3\31\1\74\1\42\1\43\2\31\1\44\1\31"+
-    "\11\71\1\31\4\71\1\31\3\71\1\75\3\71\7\31"+
-    "\1\34\1\31\1\34\2\31\1\34\1\31\1\52\3\31"+
-    "\2\34\7\31\1\53\3\31\1\74\1\42\1\43\2\31"+
-    "\1\44\34\31\1\32\1\33\1\34\1\31\1\34\1\32"+
-    "\1\31\1\34\1\31\1\35\1\31\1\36\1\31\2\34"+
-    "\1\31\1\37\3\32\1\31\1\32\1\53\4\31\1\42"+
-    "\1\43\2\31\1\44\1\45\11\32\1\31\4\32\1\31"+
-    "\3\32\1\46\3\32\1\47\6\31\1\76\1\31\1\76"+
-    "\2\31\1\76\1\31\1\52\1\77\1\36\1\31\2\76"+
-    "\1\31\1\37\5\31\1\53\1\31\1\77\1\31\1\74"+
-    "\1\42\1\43\2\31\1\44\1\45\16\31\1\100\3\31"+
-    "\1\46\3\31\1\47\4\31\1\101\1\102\1\34\1\31"+
-    "\1\34\1\101\1\31\1\34\1\31\1\103\3\31\2\34"+
-    "\2\31\3\101\1\31\1\101\1\53\4\31\1\42\1\43"+
-    "\2\31\1\44\1\31\11\101\1\31\4\101\1\31\3\101"+
-    "\1\31\3\101\7\31\1\34\1\31\1\34\2\31\1\34"+
-    "\1\31\1\52\3\31\2\34\7\31\1\53\4\31\1\42"+
-    "\1\43\1\104\1\31\1\44\30\31\1\105\1\106\2\31"+
-    "\1\107\1\110\1\34\1\111\1\34\1\107\1\112\1\34"+
-    "\1\31\1\113\3\31\2\34\2\31\3\107\1\31\1\107"+
-    "\1\53\4\31\1\42\1\43\2\31\1\44\1\31\11\107"+
-    "\1\31\4\107\1\31\3\107\1\31\3\107\7\31\1\34"+
-    "\1\31\1\34\2\31\1\34\1\31\1\52\3\31\2\34"+
-    "\7\31\1\53\4\31\1\42\1\43\2\31\1\44\31\31"+
-    "\1\106\2\31\1\114\1\115\1\34\1\31\1\34\1\114"+
-    "\1\31\1\34\1\31\1\116\3\31\2\34\2\31\3\114"+
-    "\1\31\1\114\1\40\2\31\1\41\1\31\1\42\1\43"+
-    "\2\31\1\44\1\31\11\114\1\117\4\114\1\31\3\114"+
-    "\1\31\3\114\7\31\1\34\1\31\1\34\2\31\1\34"+
-    "\1\31\1\52\3\31\2\34\7\31\1\40\2\31\1\41"+
-    "\1\31\1\42\1\43\2\31\1\44\12\31\1\117\10\31"+
-    "\1\120\7\31\1\121\1\122\1\123\1\34\1\124\1\34"+
-    "\1\122\1\125\1\34\1\126\1\127\1\130\1\131\1\31"+
-    "\2\34\1\31\1\132\1\133\2\122\1\31\1\122\1\40"+
-    "\2\31\1\41\1\31\1\42\1\43\1\31\1\134\1\135"+
-    "\1\31\11\122\1\117\4\122\1\136\3\122\1\31\3\122"+
-    "\4\31\1\121\1\122\1\123\1\137\1\124\1\137\1\122"+
-    "\1\125\1\137\1\126\1\127\1\130\1\131\1\31\2\137"+
-    "\1\31\1\132\1\133\2\122\1\31\1\122\1\40\2\31"+
-    "\1\41\1\31\1\42\1\43\1\31\1\134\1\135\1\31"+
-    "\11\122\1\117\4\122\1\136\3\122\1\31\3\122\7\31"+
-    "\1\34\1\31\1\34\2\31\1\34\1\31\1\140\3\31"+
-    "\2\34\7\31\1\53\1\141\3\31\1\42\1\142\1\143"+
-    "\1\144\1\44\36\31\1\34\1\31\1\34\2\31\1\34"+
-    "\1\31\1\52\3\31\2\34\7\31\1\53\1\141\3\31"+
-    "\1\42\1\43\2\31\1\44\36\31\1\34\1\31\1\34"+
-    "\2\31\1\34\1\31\1\52\3\31\2\34\7\31\1\53"+
-    "\4\31\1\145\1\43\2\31\1\44\36\31\1\34\1\31"+
-    "\1\34\2\31\1\34\1\31\1\146\3\31\2\34\7\31"+
-    "\1\53\5\31\1\43\2\31\1\44\32\31\75\0\2\32"+
-    "\1\147\3\0\1\32\3\0\1\32\7\0\3\32\1\0"+
-    "\1\32\13\0\11\32\1\0\4\32\1\0\3\32\1\0"+
-    "\3\32\4\0\1\150\2\32\1\0\2\32\1\150\1\32"+
-    "\1\0\5\32\2\0\22\32\1\150\2\32\1\150\2\32"+
-    "\1\150\10\32\1\150\3\32\1\150\5\32\4\0\1\34"+
-    "\1\0\1\34\2\0\1\34\5\0\2\34\54\0\2\32"+
-    "\1\147\3\0\1\32\3\0\1\151\7\0\3\32\1\0"+
-    "\1\32\13\0\11\32\1\0\4\32\1\0\3\32\1\0"+
-    "\3\32\4\0\2\152\1\153\3\0\1\152\3\0\1\152"+
-    "\7\0\3\152\1\0\1\152\13\0\11\152\1\0\4\152"+
-    "\1\0\3\152\1\0\3\152\4\0\2\154\1\155\3\0"+
-    "\1\154\3\0\1\154\7\0\3\154\1\0\1\154\13\0"+
-    "\11\154\1\0\4\154\1\0\3\154\1\0\3\154\11\0"+
-    "\1\156\2\0\1\156\5\0\2\156\10\0\1\157\6\0"+
-    "\1\160\41\0\1\161\2\0\1\161\5\0\2\161\13\0"+
-    "\1\162\102\0\2\163\10\0\1\164\1\165\1\166\6\0"+
-    "\2\167\46\0\1\170\33\0\1\171\1\172\3\0\1\171"+
-    "\3\0\1\171\7\0\3\171\1\0\1\171\13\0\11\171"+
-    "\1\0\4\171\1\0\3\171\1\0\3\171\4\0\2\173"+
-    "\1\174\1\0\1\175\11\173\2\0\53\173\1\0\2\176"+
-    "\1\177\1\0\3\176\1\175\6\176\2\0\53\176\13\0"+
-    "\1\200\120\0\1\160\34\0\2\201\1\202\1\0\1\203"+
-    "\11\201\2\0\53\201\1\0\2\204\1\205\1\0\3\204"+
-    "\1\203\6\204\2\0\53\204\24\0\1\206\50\0\2\60"+
-    "\1\207\3\0\1\60\3\0\1\60\7\0\3\60\1\0"+
-    "\1\60\13\0\11\60\1\0\4\60\1\0\3\60\1\0"+
-    "\3\60\4\0\1\210\2\60\1\0\2\60\1\210\1\60"+
-    "\1\0\5\60\2\0\22\60\1\210\2\60\1\210\2\60"+
-    "\1\210\10\60\1\210\3\60\1\210\5\60\1\0\2\60"+
-    "\1\207\3\0\1\60\3\0\1\211\7\0\3\60\1\0"+
-    "\1\60\13\0\11\60\1\0\4\60\1\0\3\60\1\0"+
-    "\3\60\4\0\2\64\1\212\3\0\1\64\3\0\1\64"+
-    "\7\0\3\64\1\0\1\64\13\0\11\64\1\0\4\64"+
-    "\1\0\3\64\1\0\3\64\4\0\1\213\2\64\1\0"+
-    "\2\64\1\213\1\64\1\0\5\64\2\0\22\64\1\213"+
-    "\2\64\1\213\2\64\1\213\10\64\1\213\3\64\1\213"+
-    "\5\64\1\0\2\64\1\212\3\0\1\64\3\0\1\214"+
-    "\7\0\3\64\1\0\1\64\13\0\11\64\1\0\4\64"+
-    "\1\0\3\64\1\0\3\64\4\0\2\71\1\215\3\0"+
-    "\1\71\3\0\1\71\7\0\3\71\1\0\1\71\13\0"+
-    "\11\71\1\0\4\71\1\0\3\71\1\0\3\71\4\0"+
-    "\1\216\2\71\1\0\2\71\1\216\1\71\1\0\5\71"+
-    "\2\0\22\71\1\216\2\71\1\216\2\71\1\216\10\71"+
-    "\1\216\3\71\1\216\5\71\1\0\2\71\1\215\3\0"+
-    "\1\71\3\0\1\217\7\0\3\71\1\0\1\71\13\0"+
-    "\11\71\1\0\4\71\1\0\3\71\1\0\3\71\5\0"+
-    "\1\71\1\215\3\0\1\71\3\0\1\71\7\0\3\71"+
-    "\1\0\1\71\13\0\11\71\1\0\4\71\1\0\3\71"+
-    "\1\0\3\71\3\0\4\220\1\76\1\220\1\76\2\220"+
-    "\1\76\2\220\1\0\2\220\2\76\11\220\1\0\1\220"+
-    "\1\0\37\220\1\0\2\101\1\221\3\0\1\101\3\0"+
-    "\1\101\7\0\3\101\1\0\1\101\13\0\11\101\1\0"+
-    "\4\101\1\0\3\101\1\0\3\101\4\0\1\222\2\101"+
-    "\1\0\2\101\1\222\1\101\1\0\5\101\2\0\22\101"+
-    "\1\222\2\101\1\222\2\101\1\222\10\101\1\222\3\101"+
-    "\1\222\5\101\1\0\2\101\1\221\3\0\1\101\3\0"+
-    "\1\223\7\0\3\101\1\0\1\101\13\0\11\101\1\0"+
-    "\4\101\1\0\3\101\1\0\3\101\42\0\1\104\35\0"+
-    "\2\107\1\224\3\0\1\107\3\0\1\107\7\0\3\107"+
-    "\1\0\1\107\13\0\11\107\1\0\4\107\1\0\3\107"+
-    "\1\0\3\107\4\0\1\225\2\107\1\0\2\107\1\225"+
-    "\1\107\1\0\5\107\2\0\22\107\1\225\2\107\1\225"+
-    "\2\107\1\225\10\107\1\225\3\107\1\225\5\107\1\0"+
-    "\2\226\1\227\1\0\1\230\11\226\2\0\53\226\1\0"+
-    "\2\231\1\232\1\0\3\231\1\230\6\231\2\0\53\231"+
-    "\1\0\2\107\1\224\3\0\1\107\3\0\1\233\7\0"+
-    "\3\107\1\0\1\107\13\0\11\107\1\0\4\107\1\0"+
-    "\3\107\1\0\3\107\4\0\2\114\1\234\3\0\1\114"+
-    "\3\0\1\114\7\0\3\114\1\0\1\114\13\0\11\114"+
-    "\1\0\4\114\1\0\3\114\1\0\3\114\4\0\1\235"+
-    "\2\114\1\0\2\114\1\235\1\114\1\0\5\114\2\0"+
-    "\22\114\1\235\2\114\1\235\2\114\1\235\10\114\1\235"+
-    "\3\114\1\235\5\114\1\0\2\114\1\234\3\0\1\114"+
-    "\3\0\1\236\7\0\3\114\1\0\1\114\13\0\11\114"+
-    "\1\0\4\114\1\0\3\114\1\0\3\114\4\0\1\121"+
-    "\1\237\1\240\3\0\1\237\3\0\1\237\1\0\1\241"+
-    "\5\0\3\237\1\0\1\237\1\0\1\242\11\0\11\237"+
-    "\1\0\4\237\1\0\3\237\1\0\3\237\4\0\2\122"+
-    "\1\243\3\0\1\122\3\0\1\122\7\0\3\122\1\244"+
-    "\1\122\13\0\11\122\1\0\4\122\1\0\3\122\1\0"+
-    "\3\122\4\0\1\245\2\122\1\0\2\122\1\245\1\122"+
-    "\1\0\5\122\2\0\22\122\1\245\2\122\1\245\2\122"+
-    "\1\245\10\122\1\245\3\122\1\245\5\122\1\0\2\246"+
-    "\1\247\1\0\1\250\11\246\2\0\53\246\1\0\2\251"+
-    "\1\252\1\0\3\251\1\250\6\251\2\0\53\251\1\0"+
-    "\1\253\1\122\1\243\3\0\1\122\3\0\1\254\1\0"+
-    "\1\241\5\0\3\122\1\244\1\122\13\0\11\122\1\0"+
-    "\4\122\1\0\3\122\1\0\3\122\4\0\1\121\13\0"+
-    "\1\241\57\0\1\255\73\0\2\256\1\257\3\0\1\256"+
-    "\3\0\1\256\7\0\3\256\1\0\1\256\13\0\11\256"+
-    "\1\0\4\256\1\0\3\256\1\0\3\256\4\0\2\122"+
-    "\1\243\3\0\1\122\3\0\1\122\1\260\6\0\1\122"+
-    "\1\261\1\122\1\244\1\122\13\0\11\122\1\0\4\122"+
-    "\1\0\3\122\1\0\3\122\7\0\1\262\1\0\1\262"+
-    "\2\0\1\262\5\0\2\262\34\0\1\263\16\0\4\264"+
-    "\1\137\1\264\1\137\2\264\1\137\5\264\2\137\14\264"+
-    "\1\0\16\264\1\0\17\264\13\0\1\265\66\0\1\266"+
-    "\2\0\1\266\5\0\2\266\11\0\1\267\54\0\1\270"+
-    "\61\0\1\271\1\32\1\147\1\32\1\0\1\32\1\271"+
-    "\1\0\1\32\1\0\1\32\3\0\2\32\2\0\3\32"+
-    "\1\0\1\32\13\0\1\271\2\32\1\271\2\32\1\271"+
-    "\2\32\1\0\4\32\1\0\1\271\2\32\1\0\1\271"+
-    "\2\32\4\0\2\32\1\147\3\0\1\32\3\0\1\32"+
-    "\7\0\3\32\1\0\1\32\2\0\1\272\10\0\11\32"+
-    "\1\0\4\32\1\0\3\32\1\0\3\32\4\0\1\273"+
-    "\2\152\1\0\2\152\1\273\1\152\1\0\5\152\2\0"+
-    "\22\152\1\273\2\152\1\273\2\152\1\273\10\152\1\273"+
-    "\3\152\1\273\5\152\1\0\1\274\2\154\1\0\2\154"+
-    "\1\274\1\154\1\0\5\154\2\0\22\154\1\274\2\154"+
-    "\1\274\2\154\1\274\10\154\1\274\3\154\1\274\5\154"+
-    "\6\0\1\156\2\0\1\156\5\0\2\156\10\0\1\157"+
-    "\50\0\1\157\2\0\1\157\5\0\2\157\66\0\1\275"+
-    "\125\0\1\276\104\0\1\277\66\0\2\300\67\0\2\301"+
-    "\104\0\1\302\13\0\42\170\1\303\31\170\1\0\2\171"+
-    "\1\172\3\0\1\171\3\0\1\171\7\0\3\171\1\304"+
-    "\1\171\13\0\11\171\1\0\4\171\1\0\3\171\1\0"+
-    "\3\171\4\0\1\305\2\171\1\0\2\171\1\305\1\171"+
-    "\1\0\5\171\2\0\22\171\1\305\2\171\1\305\2\171"+
-    "\1\305\10\171\1\305\3\171\1\305\5\171\1\0\1\306"+
-    "\1\173\1\174\1\173\1\307\1\173\1\306\10\173\1\310"+
-    "\22\173\1\306\2\173\1\306\2\173\1\306\10\173\1\306"+
-    "\3\173\1\306\5\173\1\0\1\311\1\176\1\177\3\176"+
-    "\1\311\1\312\7\176\1\313\22\176\1\311\2\176\1\311"+
-    "\2\176\1\311\10\176\1\311\3\176\1\311\5\176\32\0"+
-    "\1\272\42\0\1\314\1\201\1\202\1\201\1\315\1\201"+
-    "\1\314\10\201\1\316\22\201\1\314\2\201\1\314\2\201"+
-    "\1\314\10\201\1\314\3\201\1\314\5\201\1\0\1\317"+
-    "\1\204\1\205\3\204\1\317\1\320\7\204\1\321\22\204"+
-    "\1\317\2\204\1\317\2\204\1\317\10\204\1\317\3\204"+
-    "\1\317\5\204\25\0\1\322\47\0\1\323\1\60\1\207"+
-    "\1\60\1\0\1\60\1\323\1\0\1\60\1\0\1\60"+
-    "\3\0\2\60\2\0\3\60\1\0\1\60\13\0\1\323"+
-    "\2\60\1\323\2\60\1\323\2\60\1\0\4\60\1\0"+
-    "\1\323\2\60\1\0\1\323\2\60\4\0\2\60\1\207"+
-    "\3\0\1\60\3\0\1\60\7\0\3\60\1\0\1\60"+
-    "\2\0\1\272\10\0\11\60\1\0\4\60\1\0\3\60"+
-    "\1\0\3\60\4\0\1\324\1\64\1\212\1\64\1\0"+
-    "\1\64\1\324\1\0\1\64\1\0\1\64\3\0\2\64"+
-    "\2\0\3\64\1\0\1\64\13\0\1\324\2\64\1\324"+
-    "\2\64\1\324\2\64\1\0\4\64\1\0\1\324\2\64"+
-    "\1\0\1\324\2\64\4\0\2\64\1\212\3\0\1\64"+
-    "\3\0\1\64\7\0\3\64\1\0\1\64\2\0\1\272"+
-    "\10\0\11\64\1\0\4\64\1\0\3\64\1\0\3\64"+
-    "\4\0\1\325\1\71\1\215\1\71\1\0\1\71\1\325"+
-    "\1\0\1\71\1\0\1\71\3\0\2\71\2\0\3\71"+
-    "\1\0\1\71\13\0\1\325\2\71\1\325\2\71\1\325"+
-    "\2\71\1\0\4\71\1\0\1\325\2\71\1\0\1\325"+
-    "\2\71\4\0\2\71\1\215\3\0\1\71\3\0\1\71"+
-    "\7\0\3\71\1\0\1\71\2\0\1\272\10\0\11\71"+
-    "\1\0\4\71\1\0\3\71\1\0\3\71\4\0\1\326"+
-    "\1\101\1\221\1\101\1\0\1\101\1\326\1\0\1\101"+
-    "\1\0\1\101\3\0\2\101\2\0\3\101\1\0\1\101"+
-    "\13\0\1\326\2\101\1\326\2\101\1\326\2\101\1\0"+
-    "\4\101\1\0\1\326\2\101\1\0\1\326\2\101\4\0"+
-    "\2\101\1\221\3\0\1\101\3\0\1\101\7\0\3\101"+
-    "\1\0\1\101\2\0\1\272\10\0\11\101\1\0\4\101"+
-    "\1\0\3\101\1\0\3\101\4\0\1\327\1\107\1\224"+
-    "\1\107\1\0\1\107\1\327\1\0\1\107\1\0\1\107"+
-    "\3\0\2\107\2\0\3\107\1\0\1\107\13\0\1\327"+
-    "\2\107\1\327\2\107\1\327\2\107\1\0\4\107\1\0"+
-    "\1\327\2\107\1\0\1\327\2\107\4\0\1\330\1\226"+
-    "\1\227\1\226\1\331\1\226\1\330\10\226\1\332\22\226"+
-    "\1\330\2\226\1\330\2\226\1\330\10\226\1\330\3\226"+
-    "\1\330\5\226\1\0\1\333\1\231\1\232\3\231\1\333"+
-    "\1\334\7\231\1\335\22\231\1\333\2\231\1\333\2\231"+
-    "\1\333\10\231\1\333\3\231\1\333\5\231\1\0\2\107"+
-    "\1\224\3\0\1\107\3\0\1\107\7\0\3\107\1\0"+
-    "\1\107\2\0\1\272\10\0\11\107\1\0\4\107\1\0"+
-    "\3\107\1\0\3\107\4\0\1\336\1\114\1\234\1\114"+
-    "\1\0\1\114\1\336\1\0\1\114\1\0\1\114\3\0"+
-    "\2\114\2\0\3\114\1\0\1\114\13\0\1\336\2\114"+
-    "\1\336\2\114\1\336\2\114\1\0\4\114\1\0\1\336"+
-    "\2\114\1\0\1\336\2\114\4\0\2\114\1\234\3\0"+
-    "\1\114\3\0\1\114\7\0\3\114\1\0\1\114\2\0"+
-    "\1\272\10\0\11\114\1\0\4\114\1\0\3\114\1\0"+
-    "\3\114\4\0\2\237\1\240\3\0\1\237\3\0\1\237"+
-    "\7\0\3\237\1\0\1\237\13\0\11\237\1\0\4\237"+
-    "\1\0\3\237\1\0\3\237\4\0\1\337\2\237\1\0"+
-    "\2\237\1\337\1\237\1\0\5\237\2\0\22\237\1\337"+
-    "\2\237\1\337\2\237\1\337\10\237\1\337\3\237\1\337"+
-    "\5\237\1\0\1\340\1\122\1\243\1\122\1\0\1\122"+
-    "\1\340\1\0\1\122\1\0\1\122\3\0\2\122\2\0"+
-    "\3\122\1\244\1\122\13\0\1\340\2\122\1\340\2\122"+
-    "\1\340\2\122\1\0\4\122\1\0\1\340\2\122\1\0"+
-    "\1\340\2\122\4\0\1\341\1\246\1\247\1\246\1\342"+
-    "\1\246\1\341\10\246\1\343\22\246\1\341\2\246\1\341"+
-    "\2\246\1\341\10\246\1\341\3\246\1\341\5\246\1\0"+
-    "\1\344\1\251\1\252\3\251\1\344\1\345\7\251\1\346"+
-    "\22\251\1\344\2\251\1\344\2\251\1\344\10\251\1\344"+
-    "\3\251\1\344\5\251\1\0\1\253\1\122\1\243\3\0"+
-    "\1\122\3\0\1\122\1\0\1\241\5\0\3\122\1\244"+
-    "\1\122\1\0\1\242\11\0\11\122\1\0\4\122\1\0"+
-    "\3\122\1\0\3\122\4\0\2\122\1\243\3\0\1\122"+
-    "\3\0\1\122\7\0\3\122\1\244\1\122\2\0\1\272"+
-    "\10\0\11\122\1\0\4\122\1\0\3\122\1\0\3\122"+
-    "\4\0\1\255\1\237\1\240\3\0\1\237\3\0\1\237"+
-    "\7\0\3\237\1\0\1\237\1\0\1\242\11\0\11\237"+
-    "\1\0\4\237\1\0\3\237\1\0\3\237\4\0\1\347"+
-    "\2\256\1\0\2\256\1\347\1\256\1\0\5\256\2\0"+
-    "\22\256\1\347\2\256\1\347\2\256\1\347\10\256\1\347"+
-    "\3\256\1\347\5\256\1\0\1\350\5\0\1\350\11\0"+
-    "\1\350\5\0\1\350\13\0\2\350\1\0\2\350\1\0"+
-    "\2\350\7\0\2\350\2\0\2\350\5\0\2\122\1\243"+
-    "\3\0\1\122\3\0\1\122\7\0\2\122\1\351\1\244"+
-    "\1\122\13\0\11\122\1\0\4\122\1\0\3\122\1\0"+
-    "\3\122\61\0\1\352\30\0\1\353\15\0\1\354\1\272"+
-    "\42\0\1\355\1\32\1\147\1\32\1\0\1\32\1\355"+
-    "\1\0\1\32\1\0\1\32\3\0\2\32\2\0\3\32"+
-    "\1\0\1\32\13\0\1\355\2\32\1\355\2\32\1\355"+
-    "\2\32\1\0\4\32\1\0\1\355\2\32\1\0\1\355"+
-    "\2\32\4\0\1\356\1\152\1\153\1\152\1\0\1\152"+
-    "\1\356\1\0\1\152\1\0\1\152\3\0\2\152\2\0"+
-    "\3\152\1\0\1\152\13\0\1\356\2\152\1\356\2\152"+
-    "\1\356\2\152\1\0\4\152\1\0\1\356\2\152\1\0"+
-    "\1\356\2\152\4\0\1\357\1\154\1\155\1\154\1\0"+
-    "\1\154\1\357\1\0\1\154\1\0\1\154\3\0\2\154"+
-    "\2\0\3\154\1\0\1\154\13\0\1\357\2\154\1\357"+
-    "\2\154\1\357\2\154\1\0\4\154\1\0\1\357\2\154"+
-    "\1\0\1\357\2\154\16\0\1\360\126\0\2\361\103\0"+
-    "\1\362\76\0\2\363\74\0\1\364\77\0\1\365\3\0"+
-    "\41\170\1\366\1\303\31\170\2\0\1\367\1\370\1\304"+
-    "\1\0\1\304\1\367\1\0\1\304\1\0\1\367\3\0"+
-    "\2\304\2\0\3\367\1\0\1\367\13\0\11\367\1\0"+
-    "\4\367\1\0\3\367\1\0\3\367\4\0\1\371\1\171"+
-    "\1\172\1\171\1\0\1\171\1\371\1\0\1\171\1\0"+
-    "\1\171\3\0\2\171\2\0\3\171\1\304\1\171\13\0"+
-    "\1\371\2\171\1\371\2\171\1\371\2\171\1\0\4\171"+
-    "\1\0\1\371\2\171\1\0\1\371\2\171\4\0\1\372"+
-    "\1\173\1\174\1\173\1\175\1\173\1\372\33\173\1\372"+
-    "\2\173\1\372\2\173\1\372\10\173\1\372\3\173\1\372"+
-    "\5\173\1\0\2\173\1\174\1\0\1\175\12\173\1\0"+
-    "\53\173\1\0\1\373\1\176\1\177\3\176\1\373\1\175"+
-    "\32\176\1\373\2\176\1\373\2\176\1\373\10\176\1\373"+
-    "\3\176\1\373\5\176\1\0\2\176\1\177\1\0\3\176"+
-    "\1\175\7\176\1\0\53\176\1\0\1\374\1\201\1\202"+
-    "\1\201\1\203\1\201\1\374\33\201\1\374\2\201\1\374"+
-    "\2\201\1\374\10\201\1\374\3\201\1\374\5\201\1\0"+
-    "\2\201\1\202\1\0\1\203\12\201\1\0\53\201\1\0"+
-    "\1\375\1\204\1\205\3\204\1\375\1\203\32\204\1\375"+
-    "\2\204\1\375\2\204\1\375\10\204\1\375\3\204\1\375"+
-    "\5\204\1\0\2\204\1\205\1\0\3\204\1\203\7\204"+
-    "\1\0\53\204\26\0\1\376\46\0\1\377\1\60\1\207"+
-    "\1\60\1\0\1\60\1\377\1\0\1\60\1\0\1\60"+
-    "\3\0\2\60\2\0\3\60\1\0\1\60\13\0\1\377"+
-    "\2\60\1\377\2\60\1\377\2\60\1\0\4\60\1\0"+
-    "\1\377\2\60\1\0\1\377\2\60\4\0\1\u0100\1\64"+
-    "\1\212\1\64\1\0\1\64\1\u0100\1\0\1\64\1\0"+
-    "\1\64\3\0\2\64\2\0\3\64\1\0\1\64\13\0"+
-    "\1\u0100\2\64\1\u0100\2\64\1\u0100\2\64\1\0\4\64"+
-    "\1\0\1\u0100\2\64\1\0\1\u0100\2\64\4\0\1\u0101"+
-    "\1\71\1\215\1\71\1\0\1\71\1\u0101\1\0\1\71"+
-    "\1\0\1\71\3\0\2\71\2\0\3\71\1\0\1\71"+
-    "\13\0\1\u0101\2\71\1\u0101\2\71\1\u0101\2\71\1\0"+
-    "\4\71\1\0\1\u0101\2\71\1\0\1\u0101\2\71\4\0"+
-    "\1\u0102\1\101\1\221\1\101\1\0\1\101\1\u0102\1\0"+
-    "\1\101\1\0\1\101\3\0\2\101\2\0\3\101\1\0"+
-    "\1\101\13\0\1\u0102\2\101\1\u0102\2\101\1\u0102\2\101"+
-    "\1\0\4\101\1\0\1\u0102\2\101\1\0\1\u0102\2\101"+
-    "\4\0\1\u0103\1\107\1\224\1\107\1\0\1\107\1\u0103"+
-    "\1\0\1\107\1\0\1\107\3\0\2\107\2\0\3\107"+
-    "\1\0\1\107\13\0\1\u0103\2\107\1\u0103\2\107\1\u0103"+
-    "\2\107\1\0\4\107\1\0\1\u0103\2\107\1\0\1\u0103"+
-    "\2\107\4\0\1\u0104\1\226\1\227\1\226\1\230\1\226"+
-    "\1\u0104\33\226\1\u0104\2\226\1\u0104\2\226\1\u0104\10\226"+
-    "\1\u0104\3\226\1\u0104\5\226\1\0\2\226\1\227\1\0"+
-    "\1\230\12\226\1\0\53\226\1\0\1\u0105\1\231\1\232"+
-    "\3\231\1\u0105\1\230\32\231\1\u0105\2\231\1\u0105\2\231"+
-    "\1\u0105\10\231\1\u0105\3\231\1\u0105\5\231\1\0\2\231"+
-    "\1\232\1\0\3\231\1\230\7\231\1\0\53\231\1\0"+
-    "\1\u0106\1\114\1\234\1\114\1\0\1\114\1\u0106\1\0"+
-    "\1\114\1\0\1\114\3\0\2\114\2\0\3\114\1\0"+
-    "\1\114\13\0\1\u0106\2\114\1\u0106\2\114\1\u0106\2\114"+
-    "\1\0\4\114\1\0\1\u0106\2\114\1\0\1\u0106\2\114"+
-    "\4\0\1\u0107\1\237\1\240\1\237\1\0\1\237\1\u0107"+
-    "\1\0\1\237\1\0\1\237\3\0\2\237\2\0\3\237"+
-    "\1\0\1\237\13\0\1\u0107\2\237\1\u0107\2\237\1\u0107"+
-    "\2\237\1\0\4\237\1\0\1\u0107\2\237\1\0\1\u0107"+
-    "\2\237\4\0\1\u0108\1\122\1\243\1\122\1\0\1\122"+
-    "\1\u0108\1\0\1\122\1\0\1\122\3\0\2\122\2\0"+
-    "\3\122\1\244\1\122\13\0\1\u0108\2\122\1\u0108\2\122"+
-    "\1\u0108\2\122\1\0\4\122\1\0\1\u0108\2\122\1\0"+
-    "\1\u0108\2\122\4\0\1\u0109\1\246\1\247\1\246\1\250"+
-    "\1\246\1\u0109\33\246\1\u0109\2\246\1\u0109\2\246\1\u0109"+
-    "\10\246\1\u0109\3\246\1\u0109\5\246\1\0\2\246\1\247"+
-    "\1\0\1\250\12\246\1\0\53\246\1\0\1\u010a\1\251"+
-    "\1\252\3\251\1\u010a\1\250\32\251\1\u010a\2\251\1\u010a"+
-    "\2\251\1\u010a\10\251\1\u010a\3\251\1\u010a\5\251\1\0"+
-    "\2\251\1\252\1\0\3\251\1\250\7\251\1\0\53\251"+
-    "\1\0\1\u010b\1\256\1\257\1\256\1\0\1\256\1\u010b"+
-    "\1\0\1\256\1\0\1\256\3\0\2\256\2\0\3\256"+
-    "\1\0\1\256\13\0\1\u010b\2\256\1\u010b\2\256\1\u010b"+
-    "\2\256\1\0\4\256\1\0\1\u010b\2\256\1\0\1\u010b"+
-    "\2\256\4\0\1\u010c\5\0\1\u010c\3\0\1\u010d\5\0"+
-    "\1\u010c\5\0\1\u010c\13\0\2\u010c\1\0\2\u010c\1\0"+
-    "\2\u010c\7\0\2\u010c\2\0\2\u010c\5\0\2\122\1\243"+
-    "\3\0\1\122\3\0\1\122\7\0\3\122\1\u010e\1\122"+
-    "\13\0\11\122\1\0\4\122\1\0\3\122\1\0\3\122"+
-    "\62\0\1\u010f\27\0\1\353\15\0\1\354\50\0\1\354"+
-    "\2\0\1\354\5\0\2\354\11\0\1\u0110\42\0\1\u0111"+
-    "\1\32\1\147\1\32\1\0\1\32\1\u0111\1\0\1\32"+
-    "\1\0\1\32\3\0\2\32\2\0\3\32\1\0\1\32"+
-    "\13\0\1\u0111\2\32\1\u0111\2\32\1\u0111\2\32\1\0"+
-    "\4\32\1\0\1\u0111\2\32\1\0\1\u0111\2\32\4\0"+
-    "\1\u0112\1\152\1\153\1\152\1\0\1\152\1\u0112\1\0"+
-    "\1\152\1\0\1\152\3\0\2\152\2\0\3\152\1\0"+
-    "\1\152\13\0\1\u0112\2\152\1\u0112\2\152\1\u0112\2\152"+
-    "\1\0\4\152\1\0\1\u0112\2\152\1\0\1\u0112\2\152"+
-    "\4\0\1\u0113\1\154\1\155\1\154\1\0\1\154\1\u0113"+
-    "\1\0\1\154\1\0\1\154\3\0\2\154\2\0\3\154"+
-    "\1\0\1\154\13\0\1\u0113\2\154\1\u0113\2\154\1\u0113"+
-    "\2\154\1\0\4\154\1\0\1\u0113\2\154\1\0\1\u0113"+
-    "\2\154\27\0\1\u0114\127\0\1\u0115\70\0\1\u0116\67\0"+
-    "\2\u0117\74\0\1\u0118\21\0\2\367\1\370\1\u0119\1\0"+
-    "\1\u0119\1\367\1\0\1\u0119\1\u011a\1\367\3\0\2\u0119"+
-    "\2\0\3\367\1\0\1\367\13\0\11\367\1\0\4\367"+
-    "\1\0\3\367\1\0\3\367\4\0\1\u011b\2\367\1\0"+
-    "\2\367\1\u011b\1\367\1\0\5\367\2\0\22\367\1\u011b"+
-    "\2\367\1\u011b\2\367\1\u011b\10\367\1\u011b\3\367\1\u011b"+
-    "\5\367\1\0\1\u011c\1\171\1\172\1\171\1\0\1\171"+
-    "\1\u011c\1\0\1\171\1\0\1\171\3\0\2\171\2\0"+
-    "\3\171\1\304\1\171\13\0\1\u011c\2\171\1\u011c\2\171"+
-    "\1\u011c\2\171\1\0\4\171\1\0\1\u011c\2\171\1\0"+
-    "\1\u011c\2\171\4\0\1\u011d\1\173\1\174\1\173\1\175"+
-    "\1\173\1\u011d\33\173\1\u011d\2\173\1\u011d\2\173\1\u011d"+
-    "\10\173\1\u011d\3\173\1\u011d\5\173\1\0\1\u011e\1\176"+
-    "\1\177\3\176\1\u011e\1\175\32\176\1\u011e\2\176\1\u011e"+
-    "\2\176\1\u011e\10\176\1\u011e\3\176\1\u011e\5\176\1\0"+
-    "\1\u011f\1\201\1\202\1\201\1\203\1\201\1\u011f\33\201"+
-    "\1\u011f\2\201\1\u011f\2\201\1\u011f\10\201\1\u011f\3\201"+
-    "\1\u011f\5\201\1\0\1\u0120\1\204\1\205\3\204\1\u0120"+
-    "\1\203\32\204\1\u0120\2\204\1\u0120\2\204\1\u0120\10\204"+
-    "\1\u0120\3\204\1\u0120\5\204\1\0\2\u0121\1\u0122\1\376"+
-    "\1\u0123\1\376\1\u0121\1\u0124\1\376\1\u0125\4\u0121\2\376"+
-    "\5\u0121\1\0\45\u0121\1\0\1\u0126\1\60\1\207\1\60"+
-    "\1\0\1\60\1\u0126\1\0\1\60\1\0\1\60\3\0"+
-    "\2\60\2\0\3\60\1\0\1\60\13\0\1\u0126\2\60"+
-    "\1\u0126\2\60\1\u0126\2\60\1\0\4\60\1\0\1\u0126"+
-    "\2\60\1\0\1\u0126\2\60\4\0\1\u0127\1\64\1\212"+
-    "\1\64\1\0\1\64\1\u0127\1\0\1\64\1\0\1\64"+
-    "\3\0\2\64\2\0\3\64\1\0\1\64\13\0\1\u0127"+
-    "\2\64\1\u0127\2\64\1\u0127\2\64\1\0\4\64\1\0"+
-    "\1\u0127\2\64\1\0\1\u0127\2\64\4\0\1\u0128\1\71"+
-    "\1\215\1\71\1\0\1\71\1\u0128\1\0\1\71\1\0"+
-    "\1\71\3\0\2\71\2\0\3\71\1\0\1\71\13\0"+
-    "\1\u0128\2\71\1\u0128\2\71\1\u0128\2\71\1\0\4\71"+
-    "\1\0\1\u0128\2\71\1\0\1\u0128\2\71\4\0\1\u0129"+
-    "\1\101\1\221\1\101\1\0\1\101\1\u0129\1\0\1\101"+
-    "\1\0\1\101\3\0\2\101\2\0\3\101\1\0\1\101"+
-    "\13\0\1\u0129\2\101\1\u0129\2\101\1\u0129\2\101\1\0"+
-    "\4\101\1\0\1\u0129\2\101\1\0\1\u0129\2\101\4\0"+
-    "\1\u012a\1\107\1\224\1\107\1\0\1\107\1\u012a\1\0"+
-    "\1\107\1\0\1\107\3\0\2\107\2\0\3\107\1\0"+
-    "\1\107\13\0\1\u012a\2\107\1\u012a\2\107\1\u012a\2\107"+
-    "\1\0\4\107\1\0\1\u012a\2\107\1\0\1\u012a\2\107"+
-    "\4\0\1\u012b\1\226\1\227\1\226\1\230\1\226\1\u012b"+
-    "\33\226\1\u012b\2\226\1\u012b\2\226\1\u012b\10\226\1\u012b"+
-    "\3\226\1\u012b\5\226\1\0\1\u012c\1\231\1\232\3\231"+
-    "\1\u012c\1\230\32\231\1\u012c\2\231\1\u012c\2\231\1\u012c"+
-    "\10\231\1\u012c\3\231\1\u012c\5\231\1\0\1\u012d\1\114"+
-    "\1\234\1\114\1\0\1\114\1\u012d\1\0\1\114\1\0"+
-    "\1\114\3\0\2\114\2\0\3\114\1\0\1\114\13\0"+
-    "\1\u012d\2\114\1\u012d\2\114\1\u012d\2\114\1\0\4\114"+
-    "\1\0\1\u012d\2\114\1\0\1\u012d\2\114\4\0\1\u012e"+
-    "\1\237\1\240\1\237\1\0\1\237\1\u012e\1\0\1\237"+
-    "\1\0\1\237\3\0\2\237\2\0\3\237\1\0\1\237"+
-    "\13\0\1\u012e\2\237\1\u012e\2\237\1\u012e\2\237\1\0"+
-    "\4\237\1\0\1\u012e\2\237\1\0\1\u012e\2\237\4\0"+
-    "\1\u012f\1\122\1\243\1\122\1\0\1\122\1\u012f\1\0"+
-    "\1\122\1\0\1\122\3\0\2\122\2\0\3\122\1\244"+
-    "\1\122\13\0\1\u012f\2\122\1\u012f\2\122\1\u012f\2\122"+
-    "\1\0\4\122\1\0\1\u012f\2\122\1\0\1\u012f\2\122"+
-    "\4\0\1\u0130\1\246\1\247\1\246\1\250\1\246\1\u0130"+
-    "\33\246\1\u0130\2\246\1\u0130\2\246\1\u0130\10\246\1\u0130"+
-    "\3\246\1\u0130\5\246\1\0\1\u0131\1\251\1\252\3\251"+
-    "\1\u0131\1\250\32\251\1\u0131\2\251\1\u0131\2\251\1\u0131"+
-    "\10\251\1\u0131\3\251\1\u0131\5\251\1\0\1\u0132\1\256"+
-    "\1\257\1\256\1\0\1\256\1\u0132\1\0\1\256\1\0"+
-    "\1\256\3\0\2\256\2\0\3\256\1\0\1\256\13\0"+
-    "\1\u0132\2\256\1\u0132\2\256\1\u0132\2\256\1\0\4\256"+
-    "\1\0\1\u0132\2\256\1\0\1\u0132\2\256\4\0\1\u0133"+
-    "\5\0\1\u0133\3\0\1\u010d\5\0\1\u0133\5\0\1\u0133"+
-    "\13\0\2\u0133\1\0\2\u0133\1\0\2\u0133\7\0\2\u0133"+
-    "\2\0\2\u0133\5\0\1\u0134\5\0\1\u0134\11\0\1\u0134"+
-    "\5\0\1\u0134\13\0\2\u0134\1\0\2\u0134\1\0\2\u0134"+
-    "\7\0\2\u0134\2\0\2\u0134\5\0\2\u0135\1\u0136\1\u0137"+
-    "\1\u0138\1\u0137\1\u0135\1\u0139\1\u0137\1\u013a\4\u0135\2\u0137"+
-    "\5\u0135\1\0\45\u0135\60\0\1\u013b\14\0\1\u013c\1\32"+
-    "\1\147\1\32\1\0\1\32\1\u013c\1\0\1\32\1\0"+
-    "\1\32\3\0\2\32\2\0\3\32\1\0\1\32\13\0"+
-    "\1\u013c\2\32\1\u013c\2\32\1\u013c\2\32\1\0\4\32"+
-    "\1\0\1\u013c\2\32\1\0\1\u013c\2\32\4\0\1\u013d"+
-    "\1\152\1\153\1\152\1\0\1\152\1\u013d\1\0\1\152"+
-    "\1\0\1\152\3\0\2\152\2\0\3\152\1\0\1\152"+
-    "\13\0\1\u013d\2\152\1\u013d\2\152\1\u013d\2\152\1\0"+
-    "\4\152\1\0\1\u013d\2\152\1\0\1\u013d\2\152\4\0"+
-    "\1\u013e\1\154\1\155\1\154\1\0\1\154\1\u013e\1\0"+
-    "\1\154\1\0\1\154\3\0\2\154\2\0\3\154\1\0"+
-    "\1\154\13\0\1\u013e\2\154\1\u013e\2\154\1\u013e\2\154"+
-    "\1\0\4\154\1\0\1\u013e\2\154\1\0\1\u013e\2\154"+
-    "\53\0\1\u013f\47\0\1\u0140\115\0\2\u0141\37\0\1\u0142"+
-    "\64\0\1\u0119\1\0\1\u0119\2\0\1\u0119\1\u011a\4\0"+
-    "\2\u0119\54\0\1\u0143\1\367\1\370\1\367\1\0\1\367"+
-    "\1\u0143\1\0\1\367\1\u011a\1\367\3\0\2\367\2\0"+
-    "\3\367\1\0\1\367\13\0\1\u0143\2\367\1\u0143\2\367"+
-    "\1\u0143\2\367\1\0\4\367\1\0\1\u0143\2\367\1\0"+
-    "\1\u0143\2\367\4\0\1\u0144\1\171\1\172\1\171\1\0"+
-    "\1\171\1\u0144\1\0\1\171\1\0\1\171\3\0\2\171"+
-    "\2\0\3\171\1\304\1\171\13\0\1\u0144\2\171\1\u0144"+
-    "\2\171\1\u0144\2\171\1\0\4\171\1\0\1\u0144\2\171"+
-    "\1\0\1\u0144\2\171\4\0\1\u0145\1\173\1\174\1\173"+
-    "\1\175\1\173\1\u0145\33\173\1\u0145\2\173\1\u0145\2\173"+
-    "\1\u0145\10\173\1\u0145\3\173\1\u0145\5\173\1\0\1\u0146"+
-    "\1\176\1\177\3\176\1\u0146\1\175\32\176\1\u0146\2\176"+
-    "\1\u0146\2\176\1\u0146\10\176\1\u0146\3\176\1\u0146\5\176"+
-    "\1\0\1\u0147\1\201\1\202\1\201\1\203\1\201\1\u0147"+
-    "\33\201\1\u0147\2\201\1\u0147\2\201\1\u0147\10\201\1\u0147"+
-    "\3\201\1\u0147\5\201\1\0\1\u0148\1\204\1\205\3\204"+
-    "\1\u0148\1\203\32\204\1\u0148\2\204\1\u0148\2\204\1\u0148"+
-    "\10\204\1\u0148\3\204\1\u0148\5\204\1\0\2\u0121\1\u0122"+
-    "\1\u0149\1\0\2\u0121\1\0\1\u0149\1\u0125\4\u0121\2\u0149"+
-    "\5\u0121\1\0\45\u0121\1\0\1\u014a\1\u0121\1\u0122\1\u0149"+
-    "\2\u0121\1\u014a\1\u0121\1\u0149\1\u014b\4\u0121\2\u0149\22\u0121"+
-    "\1\u014a\2\u0121\1\u014a\2\u0121\1\u014a\10\u0121\1\u014a\3\u0121"+
-    "\1\u014a\5\u0121\1\0\2\u0123\1\u014c\1\0\1\u0149\11\u0123"+
-    "\2\0\53\u0123\1\0\2\u0124\1\u014d\1\0\3\u0124\1\u0149"+
-    "\6\u0124\2\0\53\u0124\1\0\1\u014e\1\60\1\207\1\60"+
-    "\1\0\1\60\1\u014e\1\0\1\60\1\0\1\60\3\0"+
-    "\2\60\2\0\3\60\1\0\1\60\13\0\1\u014e\2\60"+
-    "\1\u014e\2\60\1\u014e\2\60\1\0\4\60\1\0\1\u014e"+
-    "\2\60\1\0\1\u014e\2\60\4\0\1\u014f\1\64\1\212"+
-    "\1\64\1\0\1\64\1\u014f\1\0\1\64\1\0\1\64"+
-    "\3\0\2\64\2\0\3\64\1\0\1\64\13\0\1\u014f"+
-    "\2\64\1\u014f\2\64\1\u014f\2\64\1\0\4\64\1\0"+
-    "\1\u014f\2\64\1\0\1\u014f\2\64\4\0\1\u0150\1\71"+
-    "\1\215\1\71\1\0\1\71\1\u0150\1\0\1\71\1\0"+
-    "\1\71\3\0\2\71\2\0\3\71\1\0\1\71\13\0"+
-    "\1\u0150\2\71\1\u0150\2\71\1\u0150\2\71\1\0\4\71"+
-    "\1\0\1\u0150\2\71\1\0\1\u0150\2\71\4\0\1\u0151"+
-    "\1\101\1\221\1\101\1\0\1\101\1\u0151\1\0\1\101"+
-    "\1\0\1\101\3\0\2\101\2\0\3\101\1\0\1\101"+
-    "\13\0\1\u0151\2\101\1\u0151\2\101\1\u0151\2\101\1\0"+
-    "\4\101\1\0\1\u0151\2\101\1\0\1\u0151\2\101\4\0"+
-    "\1\u0152\1\107\1\224\1\107\1\0\1\107\1\u0152\1\0"+
-    "\1\107\1\0\1\107\3\0\2\107\2\0\3\107\1\0"+
-    "\1\107\13\0\1\u0152\2\107\1\u0152\2\107\1\u0152\2\107"+
-    "\1\0\4\107\1\0\1\u0152\2\107\1\0\1\u0152\2\107"+
-    "\4\0\1\u0153\1\226\1\227\1\226\1\230\1\226\1\u0153"+
-    "\33\226\1\u0153\2\226\1\u0153\2\226\1\u0153\10\226\1\u0153"+
-    "\3\226\1\u0153\5\226\1\0\1\u0154\1\231\1\232\3\231"+
-    "\1\u0154\1\230\32\231\1\u0154\2\231\1\u0154\2\231\1\u0154"+
-    "\10\231\1\u0154\3\231\1\u0154\5\231\1\0\1\u0155\1\114"+
-    "\1\234\1\114\1\0\1\114\1\u0155\1\0\1\114\1\0"+
-    "\1\114\3\0\2\114\2\0\3\114\1\0\1\114\13\0"+
-    "\1\u0155\2\114\1\u0155\2\114\1\u0155\2\114\1\0\4\114"+
-    "\1\0\1\u0155\2\114\1\0\1\u0155\2\114\4\0\1\u0156"+
-    "\1\237\1\240\1\237\1\0\1\237\1\u0156\1\0\1\237"+
-    "\1\0\1\237\3\0\2\237\2\0\3\237\1\0\1\237"+
-    "\13\0\1\u0156\2\237\1\u0156\2\237\1\u0156\2\237\1\0"+
-    "\4\237\1\0\1\u0156\2\237\1\0\1\u0156\2\237\4\0"+
-    "\1\u0157\1\122\1\243\1\122\1\0\1\122\1\u0157\1\0"+
-    "\1\122\1\0\1\122\3\0\2\122\2\0\3\122\1\244"+
-    "\1\122\13\0\1\u0157\2\122\1\u0157\2\122\1\u0157\2\122"+
-    "\1\0\4\122\1\0\1\u0157\2\122\1\0\1\u0157\2\122"+
-    "\4\0\1\u0158\1\246\1\247\1\246\1\250\1\246\1\u0158"+
-    "\33\246\1\u0158\2\246\1\u0158\2\246\1\u0158\10\246\1\u0158"+
-    "\3\246\1\u0158\5\246\1\0\1\u0159\1\251\1\252\3\251"+
-    "\1\u0159\1\250\32\251\1\u0159\2\251\1\u0159\2\251\1\u0159"+
-    "\10\251\1\u0159\3\251\1\u0159\5\251\1\0\1\u015a\1\256"+
-    "\1\257\1\256\1\0\1\256\1\u015a\1\0\1\256\1\0"+
-    "\1\256\3\0\2\256\2\0\3\256\1\0\1\256\13\0"+
-    "\1\u015a\2\256\1\u015a\2\256\1\u015a\2\256\1\0\4\256"+
-    "\1\0\1\u015a\2\256\1\0\1\u015a\2\256\4\0\1\u015b"+
-    "\5\0\1\u015b\3\0\1\u010d\5\0\1\u015b\5\0\1\u015b"+
-    "\13\0\2\u015b\1\0\2\u015b\1\0\2\u015b\7\0\2\u015b"+
-    "\2\0\2\u015b\5\0\1\u015c\5\0\1\u015c\11\0\1\u015c"+
-    "\5\0\1\u015c\13\0\2\u015c\1\0\2\u015c\1\0\2\u015c"+
-    "\7\0\2\u015c\2\0\2\u015c\5\0\2\u0135\1\u0136\1\u015d"+
-    "\1\0\2\u0135\1\0\1\u015d\1\u013a\4\u0135\2\u015d\5\u0135"+
-    "\1\0\45\u0135\1\0\1\u015e\1\u0135\1\u0136\1\u015d\2\u0135"+
-    "\1\u015e\1\u0135\1\u015d\1\u015f\4\u0135\2\u015d\22\u0135\1\u015e"+
-    "\2\u0135\1\u015e\2\u0135\1\u015e\10\u0135\1\u015e\3\u0135\1\u015e"+
-    "\5\u0135\1\0\2\u0138\1\u0160\1\0\1\u015d\11\u0138\2\0"+
-    "\53\u0138\1\0\2\u0139\1\u0161\1\0\3\u0139\1\u015d\6\u0139"+
-    "\2\0\53\u0139\24\0\1\u0162\50\0\1\u0163\1\32\1\147"+
-    "\1\32\1\0\1\32\1\u0163\1\0\1\32\1\0\1\32"+
-    "\3\0\2\32\2\0\3\32\1\0\1\32\13\0\1\u0163"+
-    "\2\32\1\u0163\2\32\1\u0163\2\32\1\0\4\32\1\0"+
-    "\1\u0163\2\32\1\0\1\u0163\2\32\4\0\1\u0164\1\152"+
-    "\1\153\1\152\1\0\1\152\1\u0164\1\0\1\152\1\0"+
-    "\1\152\3\0\2\152\2\0\3\152\1\0\1\152\13\0"+
-    "\1\u0164\2\152\1\u0164\2\152\1\u0164\2\152\1\0\4\152"+
-    "\1\0\1\u0164\2\152\1\0\1\u0164\2\152\4\0\1\u0165"+
-    "\1\154\1\155\1\154\1\0\1\154\1\u0165\1\0\1\154"+
-    "\1\0\1\154\3\0\2\154\2\0\3\154\1\0\1\154"+
-    "\13\0\1\u0165\2\154\1\u0165\2\154\1\u0165\2\154\1\0"+
-    "\4\154\1\0\1\u0165\2\154\1\0\1\u0165\2\154\54\0"+
-    "\2\u0166\74\0\1\u0167\106\0\2\u0168\5\0\1\u0169\1\367"+
-    "\1\370\1\367\1\0\1\367\1\u0169\1\0\1\367\1\u011a"+
-    "\1\367\3\0\2\367\2\0\3\367\1\0\1\367\13\0"+
-    "\1\u0169\2\367\1\u0169\2\367\1\u0169\2\367\1\0\4\367"+
-    "\1\0\1\u0169\2\367\1\0\1\u0169\2\367\4\0\1\u016a"+
-    "\1\171\1\172\1\171\1\0\1\171\1\u016a\1\0\1\171"+
-    "\1\0\1\171\3\0\2\171\2\0\3\171\1\304\1\171"+
-    "\13\0\1\u016a\2\171\1\u016a\2\171\1\u016a\2\171\1\0"+
-    "\4\171\1\0\1\u016a\2\171\1\0\1\u016a\2\171\4\0"+
-    "\1\u016b\1\173\1\174\1\173\1\175\1\173\1\u016b\33\173"+
-    "\1\u016b\2\173\1\u016b\2\173\1\u016b\10\173\1\u016b\3\173"+
-    "\1\u016b\5\173\1\0\1\u016c\1\176\1\177\3\176\1\u016c"+
-    "\1\175\32\176\1\u016c\2\176\1\u016c\2\176\1\u016c\10\176"+
-    "\1\u016c\3\176\1\u016c\5\176\1\0\1\u016d\1\201\1\202"+
-    "\1\201\1\203\1\201\1\u016d\33\201\1\u016d\2\201\1\u016d"+
-    "\2\201\1\u016d\10\201\1\u016d\3\201\1\u016d\5\201\1\0"+
-    "\1\u016e\1\204\1\205\3\204\1\u016e\1\203\32\204\1\u016e"+
-    "\2\204\1\u016e\2\204\1\u016e\10\204\1\u016e\3\204\1\u016e"+
-    "\5\204\4\0\1\u0149\1\0\1\u0149\2\0\1\u0149\1\u0125"+
-    "\4\0\2\u0149\54\0\1\u016f\1\u0121\1\u0122\1\u0121\1\0"+
-    "\1\u0121\1\u016f\1\0\1\u0121\1\u0125\13\u0121\1\0\14\u0121"+
-    "\1\u016f\2\u0121\1\u016f\2\u0121\1\u016f\10\u0121\1\u016f\3\u0121"+
-    "\1\u016f\5\u0121\1\0\1\u0170\1\u0123\1\u014c\1\u0123\1\u0171"+
-    "\1\u0123\1\u0170\10\u0123\1\u0172\22\u0123\1\u0170\2\u0123\1\u0170"+
-    "\2\u0123\1\u0170\10\u0123\1\u0170\3\u0123\1\u0170\5\u0123\1\0"+
-    "\1\u0173\1\u0124\1\u014d\3\u0124\1\u0173\1\u0174\7\u0124\1\u0175"+
-    "\22\u0124\1\u0173\2\u0124\1\u0173\2\u0124\1\u0173\10\u0124\1\u0173"+
-    "\3\u0124\1\u0173\5\u0124\1\0\1\u0176\1\60\1\207\1\60"+
-    "\1\0\1\60\1\u0176\1\0\1\60\1\0\1\60\3\0"+
-    "\2\60\2\0\3\60\1\0\1\60\13\0\1\u0176\2\60"+
-    "\1\u0176\2\60\1\u0176\2\60\1\0\4\60\1\0\1\u0176"+
-    "\2\60\1\0\1\u0176\2\60\4\0\1\u0177\1\64\1\212"+
-    "\1\64\1\0\1\64\1\u0177\1\0\1\64\1\0\1\64"+
-    "\3\0\2\64\2\0\3\64\1\0\1\64\13\0\1\u0177"+
-    "\2\64\1\u0177\2\64\1\u0177\2\64\1\0\4\64\1\0"+
-    "\1\u0177\2\64\1\0\1\u0177\2\64\4\0\1\u0178\1\71"+
-    "\1\215\1\71\1\0\1\71\1\u0178\1\0\1\71\1\0"+
-    "\1\71\3\0\2\71\2\0\3\71\1\0\1\71\13\0"+
-    "\1\u0178\2\71\1\u0178\2\71\1\u0178\2\71\1\0\4\71"+
-    "\1\0\1\u0178\2\71\1\0\1\u0178\2\71\4\0\1\u0179"+
-    "\1\101\1\221\1\101\1\0\1\101\1\u0179\1\0\1\101"+
-    "\1\0\1\101\3\0\2\101\2\0\3\101\1\0\1\101"+
-    "\13\0\1\u0179\2\101\1\u0179\2\101\1\u0179\2\101\1\0"+
-    "\4\101\1\0\1\u0179\2\101\1\0\1\u0179\2\101\4\0"+
-    "\1\u017a\1\107\1\224\1\107\1\0\1\107\1\u017a\1\0"+
-    "\1\107\1\0\1\107\3\0\2\107\2\0\3\107\1\0"+
-    "\1\107\13\0\1\u017a\2\107\1\u017a\2\107\1\u017a\2\107"+
-    "\1\0\4\107\1\0\1\u017a\2\107\1\0\1\u017a\2\107"+
-    "\4\0\1\u017b\1\226\1\227\1\226\1\230\1\226\1\u017b"+
-    "\33\226\1\u017b\2\226\1\u017b\2\226\1\u017b\10\226\1\u017b"+
-    "\3\226\1\u017b\5\226\1\0\1\u017c\1\231\1\232\3\231"+
-    "\1\u017c\1\230\32\231\1\u017c\2\231\1\u017c\2\231\1\u017c"+
-    "\10\231\1\u017c\3\231\1\u017c\5\231\1\0\1\u017d\1\114"+
-    "\1\234\1\114\1\0\1\114\1\u017d\1\0\1\114\1\0"+
-    "\1\114\3\0\2\114\2\0\3\114\1\0\1\114\13\0"+
-    "\1\u017d\2\114\1\u017d\2\114\1\u017d\2\114\1\0\4\114"+
-    "\1\0\1\u017d\2\114\1\0\1\u017d\2\114\4\0\1\u017e"+
-    "\1\237\1\240\1\237\1\0\1\237\1\u017e\1\0\1\237"+
-    "\1\0\1\237\3\0\2\237\2\0\3\237\1\0\1\237"+
-    "\13\0\1\u017e\2\237\1\u017e\2\237\1\u017e\2\237\1\0"+
-    "\4\237\1\0\1\u017e\2\237\1\0\1\u017e\2\237\4\0"+
-    "\1\u017f\1\122\1\243\1\122\1\0\1\122\1\u017f\1\0"+
-    "\1\122\1\0\1\122\3\0\2\122\2\0\3\122\1\244"+
-    "\1\122\13\0\1\u017f\2\122\1\u017f\2\122\1\u017f\2\122"+
-    "\1\0\4\122\1\0\1\u017f\2\122\1\0\1\u017f\2\122"+
-    "\4\0\1\u0180\1\246\1\247\1\246\1\250\1\246\1\u0180"+
-    "\33\246\1\u0180\2\246\1\u0180\2\246\1\u0180\10\246\1\u0180"+
-    "\3\246\1\u0180\5\246\1\0\1\u0181\1\251\1\252\3\251"+
-    "\1\u0181\1\250\32\251\1\u0181\2\251\1\u0181\2\251\1\u0181"+
-    "\10\251\1\u0181\3\251\1\u0181\5\251\1\0\1\u0182\1\256"+
-    "\1\257\1\256\1\0\1\256\1\u0182\1\0\1\256\1\0"+
-    "\1\256\3\0\2\256\2\0\3\256\1\0\1\256\13\0"+
-    "\1\u0182\2\256\1\u0182\2\256\1\u0182\2\256\1\0\4\256"+
-    "\1\0\1\u0182\2\256\1\0\1\u0182\2\256\4\0\1\u0183"+
-    "\5\0\1\u0183\3\0\1\u010d\5\0\1\u0183\5\0\1\u0183"+
-    "\13\0\2\u0183\1\0\2\u0183\1\0\2\u0183\7\0\2\u0183"+
-    "\2\0\2\u0183\5\0\1\u0184\5\0\1\u0184\11\0\1\u0184"+
-    "\5\0\1\u0184\13\0\2\u0184\1\0\2\u0184\1\0\2\u0184"+
-    "\7\0\2\u0184\2\0\2\u0184\10\0\1\u015d\1\0\1\u015d"+
-    "\2\0\1\u015d\1\u013a\4\0\2\u015d\54\0\1\u0185\1\u0135"+
-    "\1\u0136\1\u0135\1\0\1\u0135\1\u0185\1\0\1\u0135\1\u013a"+
-    "\13\u0135\1\0\14\u0135\1\u0185\2\u0135\1\u0185\2\u0135\1\u0185"+
-    "\10\u0135\1\u0185\3\u0135\1\u0185\5\u0135\1\0\1\u0186\1\u0138"+
-    "\1\u0160\1\u0138\1\u0187\1\u0138\1\u0186\10\u0138\1\u0188\22\u0138"+
-    "\1\u0186\2\u0138\1\u0186\2\u0138\1\u0186\10\u0138\1\u0186\3\u0138"+
-    "\1\u0186\5\u0138\1\0\1\u0189\1\u0139\1\u0161\3\u0139\1\u0189"+
-    "\1\u018a\7\u0139\1\u018b\22\u0139\1\u0189\2\u0139\1\u0189\2\u0139"+
-    "\1\u0189\10\u0139\1\u0189\3\u0139\1\u0189\5\u0139\53\0\1\u018c"+
-    "\21\0\2\32\1\147\1\32\1\0\2\32\1\0\1\32"+
-    "\1\0\1\32\3\0\2\32\2\0\3\32\1\0\1\32"+
-    "\13\0\11\32\1\0\4\32\1\0\3\32\1\0\3\32"+
-    "\4\0\1\u018d\1\152\1\153\1\152\1\0\1\152\1\u018d"+
-    "\1\0\1\152\1\0\1\152\3\0\2\152\2\0\3\152"+
-    "\1\0\1\152\13\0\1\u018d\2\152\1\u018d\2\152\1\u018d"+
-    "\2\152\1\0\4\152\1\0\1\u018d\2\152\1\0\1\u018d"+
-    "\2\152\4\0\1\u018e\1\154\1\155\1\154\1\0\1\154"+
-    "\1\u018e\1\0\1\154\1\0\1\154\3\0\2\154\2\0"+
-    "\3\154\1\0\1\154\13\0\1\u018e\2\154\1\u018e\2\154"+
-    "\1\u018e\2\154\1\0\4\154\1\0\1\u018e\2\154\1\0"+
-    "\1\u018e\2\154\56\0\1\u018f\66\0\2\u0190\25\0\1\u0191"+
-    "\1\367\1\370\1\367\1\0\1\367\1\u0191\1\0\1\367"+
-    "\1\u011a\1\367\3\0\2\367\2\0\3\367\1\0\1\367"+
-    "\13\0\1\u0191\2\367\1\u0191\2\367\1\u0191\2\367\1\0"+
-    "\4\367\1\0\1\u0191\2\367\1\0\1\u0191\2\367\4\0"+
-    "\1\u0192\1\171\1\172\1\171\1\0\1\171\1\u0192\1\0"+
-    "\1\171\1\0\1\171\3\0\2\171\2\0\3\171\1\304"+
-    "\1\171\13\0\1\u0192\2\171\1\u0192\2\171\1\u0192\2\171"+
-    "\1\0\4\171\1\0\1\u0192\2\171\1\0\1\u0192\2\171"+
-    "\4\0\1\u0193\1\173\1\174\1\173\1\175\1\173\1\u0193"+
-    "\33\173\1\u0193\2\173\1\u0193\2\173\1\u0193\10\173\1\u0193"+
-    "\3\173\1\u0193\5\173\1\0\1\u0194\1\176\1\177\3\176"+
-    "\1\u0194\1\175\32\176\1\u0194\2\176\1\u0194\2\176\1\u0194"+
-    "\10\176\1\u0194\3\176\1\u0194\5\176\1\0\1\u0195\1\201"+
-    "\1\202\1\201\1\203\1\201\1\u0195\33\201\1\u0195\2\201"+
-    "\1\u0195\2\201\1\u0195\10\201\1\u0195\3\201\1\u0195\5\201"+
-    "\1\0\1\u0196\1\204\1\205\3\204\1\u0196\1\203\32\204"+
-    "\1\u0196\2\204\1\u0196\2\204\1\u0196\10\204\1\u0196\3\204"+
-    "\1\u0196\5\204\1\0\1\u0197\1\u0121\1\u0122\1\u0121\1\0"+
-    "\1\u0121\1\u0197\1\0\1\u0121\1\u0125\13\u0121\1\0\14\u0121"+
-    "\1\u0197\2\u0121\1\u0197\2\u0121\1\u0197\10\u0121\1\u0197\3\u0121"+
-    "\1\u0197\5\u0121\1\0\1\u0198\1\u0123\1\u014c\1\u0123\1\u0149"+
-    "\1\u0123\1\u0198\33\u0123\1\u0198\2\u0123\1\u0198\2\u0123\1\u0198"+
-    "\10\u0123\1\u0198\3\u0123\1\u0198\5\u0123\1\0\2\u0123\1\u014c"+
-    "\2\u0149\1\u0171\2\u0123\1\u0171\1\u0199\4\u0123\2\u0149\53\u0123"+
-    "\1\0\2\u0123\1\u014c\1\0\1\u0149\12\u0123\1\0\53\u0123"+
-    "\1\0\1\u019a\1\u0124\1\u014d\3\u0124\1\u019a\1\u0149\32\u0124"+
-    "\1\u019a\2\u0124\1\u019a\2\u0124\1\u019a\10\u0124\1\u019a\3\u0124"+
-    "\1\u019a\5\u0124\1\0\2\u0124\1\u014d\1\u0149\1\u0124\1\u0174"+
-    "\1\u0124\1\u0149\1\u0174\1\u019b\4\u0124\2\u0149\53\u0124\1\0"+
-    "\2\u0124\1\u014d\1\0\3\u0124\1\u0149\7\u0124\1\0\53\u0124"+
-    "\1\0\2\60\1\207\1\60\1\0\2\60\1\0\1\60"+
-    "\1\0\1\60\3\0\2\60\2\0\3\60\1\0\1\60"+
-    "\13\0\11\60\1\0\4\60\1\0\3\60\1\0\3\60"+
-    "\4\0\2\64\1\212\1\64\1\0\2\64\1\0\1\64"+
-    "\1\0\1\64\3\0\2\64\2\0\3\64\1\0\1\64"+
-    "\13\0\11\64\1\0\4\64\1\0\3\64\1\0\3\64"+
-    "\4\0\2\71\1\215\1\71\1\0\2\71\1\0\1\71"+
-    "\1\0\1\71\3\0\2\71\2\0\3\71\1\0\1\71"+
-    "\13\0\11\71\1\0\4\71\1\0\3\71\1\0\3\71"+
-    "\4\0\2\101\1\221\1\101\1\0\2\101\1\0\1\101"+
-    "\1\0\1\101\3\0\2\101\2\0\3\101\1\0\1\101"+
-    "\13\0\11\101\1\0\4\101\1\0\3\101\1\0\3\101"+
-    "\4\0\2\107\1\224\1\107\1\0\2\107\1\0\1\107"+
-    "\1\0\1\107\3\0\2\107\2\0\3\107\1\0\1\107"+
-    "\13\0\11\107\1\0\4\107\1\0\3\107\1\0\3\107"+
-    "\4\0\1\u019c\1\226\1\227\1\226\1\230\1\226\1\u019c"+
-    "\33\226\1\u019c\2\226\1\u019c\2\226\1\u019c\10\226\1\u019c"+
-    "\3\226\1\u019c\5\226\1\0\1\u019d\1\231\1\232\3\231"+
-    "\1\u019d\1\230\32\231\1\u019d\2\231\1\u019d\2\231\1\u019d"+
-    "\10\231\1\u019d\3\231\1\u019d\5\231\1\0\2\114\1\234"+
-    "\1\114\1\0\2\114\1\0\1\114\1\0\1\114\3\0"+
-    "\2\114\2\0\3\114\1\0\1\114\13\0\11\114\1\0"+
-    "\4\114\1\0\3\114\1\0\3\114\4\0\1\u019e\1\237"+
-    "\1\240\1\237\1\0\1\237\1\u019e\1\0\1\237\1\0"+
-    "\1\237\3\0\2\237\2\0\3\237\1\0\1\237\13\0"+
-    "\1\u019e\2\237\1\u019e\2\237\1\u019e\2\237\1\0\4\237"+
-    "\1\0\1\u019e\2\237\1\0\1\u019e\2\237\4\0\2\122"+
-    "\1\243\1\122\1\0\2\122\1\0\1\122\1\0\1\122"+
-    "\3\0\2\122\2\0\3\122\1\244\1\122\13\0\11\122"+
-    "\1\0\4\122\1\0\3\122\1\0\3\122\4\0\1\u019f"+
-    "\1\246\1\247\1\246\1\250\1\246\1\u019f\33\246\1\u019f"+
-    "\2\246\1\u019f\2\246\1\u019f\10\246\1\u019f\3\246\1\u019f"+
-    "\5\246\1\0\1\u01a0\1\251\1\252\3\251\1\u01a0\1\250"+
-    "\32\251\1\u01a0\2\251\1\u01a0\2\251\1\u01a0\10\251\1\u01a0"+
-    "\3\251\1\u01a0\5\251\1\0\1\u01a1\1\256\1\257\1\256"+
-    "\1\0\1\256\1\u01a1\1\0\1\256\1\0\1\256\3\0"+
-    "\2\256\2\0\3\256\1\0\1\256\13\0\1\u01a1\2\256"+
-    "\1\u01a1\2\256\1\u01a1\2\256\1\0\4\256\1\0\1\u01a1"+
-    "\2\256\1\0\1\u01a1\2\256\4\0\1\u01a2\5\0\1\u01a2"+
-    "\3\0\1\u010d\5\0\1\u01a2\5\0\1\u01a2\13\0\2\u01a2"+
-    "\1\0\2\u01a2\1\0\2\u01a2\7\0\2\u01a2\2\0\2\u01a2"+
-    "\5\0\1\u01a3\5\0\1\u01a3\11\0\1\u01a3\5\0\1\u01a3"+
-    "\13\0\2\u01a3\1\0\2\u01a3\1\0\2\u01a3\7\0\2\u01a3"+
-    "\2\0\2\u01a3\5\0\1\u01a4\1\u0135\1\u0136\1\u0135\1\0"+
-    "\1\u0135\1\u01a4\1\0\1\u0135\1\u013a\13\u0135\1\0\14\u0135"+
-    "\1\u01a4\2\u0135\1\u01a4\2\u0135\1\u01a4\10\u0135\1\u01a4\3\u0135"+
-    "\1\u01a4\5\u0135\1\0\1\u01a5\1\u0138\1\u0160\1\u0138\1\u015d"+
-    "\1\u0138\1\u01a5\33\u0138\1\u01a5\2\u0138\1\u01a5\2\u0138\1\u01a5"+
-    "\10\u0138\1\u01a5\3\u0138\1\u01a5\5\u0138\1\0\2\u0138\1\u0160"+
-    "\2\u015d\1\u0187\2\u0138\1\u0187\1\u01a6\4\u0138\2\u015d\53\u0138"+
-    "\1\0\2\u0138\1\u0160\1\0\1\u015d\12\u0138\1\0\53\u0138"+
-    "\1\0\1\u01a7\1\u0139\1\u0161\3\u0139\1\u01a7\1\u015d\32\u0139"+
-    "\1\u01a7\2\u0139\1\u01a7\2\u0139\1\u01a7\10\u0139\1\u01a7\3\u0139"+
-    "\1\u01a7\5\u0139\1\0\2\u0139\1\u0161\1\u015d\1\u0139\1\u018a"+
-    "\1\u0139\1\u015d\1\u018a\1\u01a8\4\u0139\2\u015d\53\u0139\1\0"+
-    "\2\u0139\1\u0161\1\0\3\u0139\1\u015d\7\u0139\1\0\53\u0139"+
-    "\46\0\2\u01a9\25\0\2\152\1\153\1\152\1\0\2\152"+
-    "\1\0\1\152\1\0\1\152\3\0\2\152\2\0\3\152"+
-    "\1\0\1\152\13\0\11\152\1\0\4\152\1\0\3\152"+
-    "\1\0\3\152\4\0\2\154\1\155\1\154\1\0\2\154"+
-    "\1\0\1\154\1\0\1\154\3\0\2\154\2\0\3\154"+
-    "\1\0\1\154\13\0\11\154\1\0\4\154\1\0\3\154"+
-    "\1\0\3\154\46\0\2\u01aa\30\0\1\u01ab\1\367\1\370"+
-    "\1\367\1\0\1\367\1\u01ab\1\0\1\367\1\u011a\1\367"+
-    "\3\0\2\367\2\0\3\367\1\0\1\367\13\0\1\u01ab"+
-    "\2\367\1\u01ab\2\367\1\u01ab\2\367\1\0\4\367\1\0"+
-    "\1\u01ab\2\367\1\0\1\u01ab\2\367\4\0\2\171\1\172"+
-    "\1\171\1\0\2\171\1\0\1\171\1\0\1\171\3\0"+
-    "\2\171\2\0\3\171\1\304\1\171\13\0\11\171\1\0"+
-    "\4\171\1\0\3\171\1\0\3\171\4\0\2\173\1\174"+
-    "\1\173\1\175\66\173\1\0\2\176\1\177\4\176\1\175"+
-    "\63\176\1\0\2\201\1\202\1\201\1\203\66\201\1\0"+
-    "\2\204\1\205\4\204\1\203\63\204\1\0\1\u01ac\1\u0121"+
-    "\1\u0122\1\u0121\1\0\1\u0121\1\u01ac\1\0\1\u0121\1\u0125"+
-    "\13\u0121\1\0\14\u0121\1\u01ac\2\u0121\1\u01ac\2\u0121\1\u01ac"+
-    "\10\u0121\1\u01ac\3\u0121\1\u01ac\5\u0121\1\0\1\u01ad\1\u0123"+
-    "\1\u014c\1\u0123\1\u0149\1\u0123\1\u01ad\33\u0123\1\u01ad\2\u0123"+
-    "\1\u01ad\2\u0123\1\u01ad\10\u0123\1\u01ad\3\u0123\1\u01ad\5\u0123"+
-    "\1\0\1\u01ae\1\u0124\1\u014d\3\u0124\1\u01ae\1\u0149\32\u0124"+
-    "\1\u01ae\2\u0124\1\u01ae\2\u0124\1\u01ae\10\u0124\1\u01ae\3\u0124"+
-    "\1\u01ae\5\u0124\1\0\2\226\1\227\1\226\1\230\66\226"+
-    "\1\0\2\231\1\232\4\231\1\230\63\231\1\0\2\237"+
-    "\1\240\1\237\1\0\2\237\1\0\1\237\1\0\1\237"+
-    "\3\0\2\237\2\0\3\237\1\0\1\237\13\0\11\237"+
-    "\1\0\4\237\1\0\3\237\1\0\3\237\4\0\2\246"+
-    "\1\247\1\246\1\250\66\246\1\0\2\251\1\252\4\251"+
-    "\1\250\63\251\1\0\2\256\1\257\1\256\1\0\2\256"+
-    "\1\0\1\256\1\0\1\256\3\0\2\256\2\0\3\256"+
-    "\1\0\1\256\13\0\11\256\1\0\4\256\1\0\3\256"+
-    "\1\0\3\256\16\0\1\u010d\61\0\1\u01af\5\0\1\u01af"+
-    "\11\0\1\u01af\5\0\1\u01af\13\0\2\u01af\1\0\2\u01af"+
-    "\1\0\2\u01af\7\0\2\u01af\2\0\2\u01af\5\0\1\u01b0"+
-    "\1\u0135\1\u0136\1\u0135\1\0\1\u0135\1\u01b0\1\0\1\u0135"+
-    "\1\u013a\13\u0135\1\0\14\u0135\1\u01b0\2\u0135\1\u01b0\2\u0135"+
-    "\1\u01b0\10\u0135\1\u01b0\3\u0135\1\u01b0\5\u0135\1\0\1\u01b1"+
-    "\1\u0138\1\u0160\1\u0138\1\u015d\1\u0138\1\u01b1\33\u0138\1\u01b1"+
-    "\2\u0138\1\u01b1\2\u0138\1\u01b1\10\u0138\1\u01b1\3\u0138\1\u01b1"+
-    "\5\u0138\1\0\1\u01b2\1\u0139\1\u0161\3\u0139\1\u01b2\1\u015d"+
-    "\32\u0139\1\u01b2\2\u0139\1\u01b2\2\u0139\1\u01b2\10\u0139\1\u01b2"+
-    "\3\u0139\1\u01b2\5\u0139\70\0\1\u01b3\54\0\2\u01b4\22\0"+
-    "\1\u01b5\1\367\1\370\1\367\1\0\1\367\1\u01b5\1\0"+
-    "\1\367\1\u011a\1\367\3\0\2\367\2\0\3\367\1\0"+
-    "\1\367\13\0\1\u01b5\2\367\1\u01b5\2\367\1\u01b5\2\367"+
-    "\1\0\4\367\1\0\1\u01b5\2\367\1\0\1\u01b5\2\367"+
-    "\4\0\1\u01b6\1\u0121\1\u0122\1\u0121\1\0\1\u0121\1\u01b6"+
-    "\1\0\1\u0121\1\u0125\13\u0121\1\0\14\u0121\1\u01b6\2\u0121"+
-    "\1\u01b6\2\u0121\1\u01b6\10\u0121\1\u01b6\3\u0121\1\u01b6\5\u0121"+
-    "\1\0\1\u01b7\1\u0123\1\u014c\1\u0123\1\u0149\1\u0123\1\u01b7"+
-    "\33\u0123\1\u01b7\2\u0123\1\u01b7\2\u0123\1\u01b7\10\u0123\1\u01b7"+
-    "\3\u0123\1\u01b7\5\u0123\1\0\1\u01b8\1\u0124\1\u014d\3\u0124"+
-    "\1\u01b8\1\u0149\32\u0124\1\u01b8\2\u0124\1\u01b8\2\u0124\1\u01b8"+
-    "\10\u0124\1\u01b8\3\u0124\1\u01b8\5\u0124\1\0\1\u01b9\5\0"+
-    "\1\u01b9\11\0\1\u01b9\5\0\1\u01b9\13\0\2\u01b9\1\0"+
-    "\2\u01b9\1\0\2\u01b9\7\0\2\u01b9\2\0\2\u01b9\5\0"+
-    "\1\u01ba\1\u0135\1\u0136\1\u0135\1\0\1\u0135\1\u01ba\1\0"+
-    "\1\u0135\1\u013a\13\u0135\1\0\14\u0135\1\u01ba\2\u0135\1\u01ba"+
-    "\2\u0135\1\u01ba\10\u0135\1\u01ba\3\u0135\1\u01ba\5\u0135\1\0"+
-    "\1\u01bb\1\u0138\1\u0160\1\u0138\1\u015d\1\u0138\1\u01bb\33\u0138"+
-    "\1\u01bb\2\u0138\1\u01bb\2\u0138\1\u01bb\10\u0138\1\u01bb\3\u0138"+
-    "\1\u01bb\5\u0138\1\0\1\u01bc\1\u0139\1\u0161\3\u0139\1\u01bc"+
-    "\1\u015d\32\u0139\1\u01bc\2\u0139\1\u01bc\2\u0139\1\u01bc\10\u0139"+
-    "\1\u01bc\3\u0139\1\u01bc\5\u0139\53\0\1\u01bd\21\0\2\367"+
-    "\1\370\1\367\1\0\2\367\1\0\1\367\1\u011a\1\367"+
-    "\3\0\2\367\2\0\3\367\1\0\1\367\13\0\11\367"+
-    "\1\0\4\367\1\0\3\367\1\0\3\367\4\0\1\u01be"+
-    "\1\u0121\1\u0122\1\u0121\1\0\1\u0121\1\u01be\1\0\1\u0121"+
-    "\1\u0125\13\u0121\1\0\14\u0121\1\u01be\2\u0121\1\u01be\2\u0121"+
-    "\1\u01be\10\u0121\1\u01be\3\u0121\1\u01be\5\u0121\1\0\1\u01bf"+
-    "\1\u0123\1\u014c\1\u0123\1\u0149\1\u0123\1\u01bf\33\u0123\1\u01bf"+
-    "\2\u0123\1\u01bf\2\u0123\1\u01bf\10\u0123\1\u01bf\3\u0123\1\u01bf"+
-    "\5\u0123\1\0\1\u01c0\1\u0124\1\u014d\3\u0124\1\u01c0\1\u0149"+
-    "\32\u0124\1\u01c0\2\u0124\1\u01c0\2\u0124\1\u01c0\10\u0124\1\u01c0"+
-    "\3\u0124\1\u01c0\5\u0124\1\0\1\u01c1\1\u0135\1\u0136\1\u0135"+
-    "\1\0\1\u0135\1\u01c1\1\0\1\u0135\1\u013a\13\u0135\1\0"+
-    "\14\u0135\1\u01c1\2\u0135\1\u01c1\2\u0135\1\u01c1\10\u0135\1\u01c1"+
-    "\3\u0135\1\u01c1\5\u0135\1\0\1\u01c2\1\u0138\1\u0160\1\u0138"+
-    "\1\u015d\1\u0138\1\u01c2\33\u0138\1\u01c2\2\u0138\1\u01c2\2\u0138"+
-    "\1\u01c2\10\u0138\1\u01c2\3\u0138\1\u01c2\5\u0138\1\0\1\u01c3"+
-    "\1\u0139\1\u0161\3\u0139\1\u01c3\1\u015d\32\u0139\1\u01c3\2\u0139"+
-    "\1\u01c3\2\u0139\1\u01c3\10\u0139\1\u01c3\3\u0139\1\u01c3\5\u0139"+
-    "\1\0\2\u0121\1\u0122\1\u0121\1\0\2\u0121\1\0\1\u0121"+
-    "\1\u0125\13\u0121\1\0\45\u0121\1\0\1\u01c4\1\u0123\1\u014c"+
-    "\1\u0123\1\u0149\1\u0123\1\u01c4\33\u0123\1\u01c4\2\u0123\1\u01c4"+
-    "\2\u0123\1\u01c4\10\u0123\1\u01c4\3\u0123\1\u01c4\5\u0123\1\0"+
-    "\1\u01c5\1\u0124\1\u014d\3\u0124\1\u01c5\1\u0149\32\u0124\1\u01c5"+
-    "\2\u0124\1\u01c5\2\u0124\1\u01c5\10\u0124\1\u01c5\3\u0124\1\u01c5"+
-    "\5\u0124\1\0\2\u0135\1\u0136\1\u0135\1\0\2\u0135\1\0"+
-    "\1\u0135\1\u013a\13\u0135\1\0\45\u0135\1\0\1\u01c6\1\u0138"+
-    "\1\u0160\1\u0138\1\u015d\1\u0138\1\u01c6\33\u0138\1\u01c6\2\u0138"+
-    "\1\u01c6\2\u0138\1\u01c6\10\u0138\1\u01c6\3\u0138\1\u01c6\5\u0138"+
-    "\1\0\1\u01c7\1\u0139\1\u0161\3\u0139\1\u01c7\1\u015d\32\u0139"+
-    "\1\u01c7\2\u0139\1\u01c7\2\u0139\1\u01c7\10\u0139\1\u01c7\3\u0139"+
-    "\1\u01c7\5\u0139\1\0\2\u0123\1\u014c\1\u0123\1\u0149\66\u0123"+
-    "\1\0\2\u0124\1\u014d\4\u0124\1\u0149\63\u0124\1\0\2\u0138"+
-    "\1\u0160\1\u0138\1\u015d\66\u0138\1\0\2\u0139\1\u0161\4\u0139"+
-    "\1\u015d\63\u0139";
-
-  private static int [] zzUnpackTrans() {
-    int [] result = new int[22260];
-    int offset = 0;
-    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackTrans(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      value--;
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /* error codes */
-  private static final int ZZ_UNKNOWN_ERROR = 0;
-  private static final int ZZ_NO_MATCH = 1;
-  private static final int ZZ_PUSHBACK_2BIG = 2;
-
-  /* error messages for the codes above */
-  private static final String ZZ_ERROR_MSG[] = {
-    "Unkown internal scanner error",
-    "Error: could not match input",
-    "Error: pushback value was too large"
-  };
-
-  /**
-   * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
-   */
-  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
-
-  private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\30\0\1\11\10\1\1\11\2\1\1\11\1\1\1\11"+
-    "\4\1\1\11\6\1\1\11\3\1\2\11\3\1\1\11"+
-    "\1\1\1\3\2\11\3\1\1\11\1\1\1\11\10\1"+
-    "\2\11\5\1\1\11\7\1\1\11\1\3\3\1\3\11"+
-    "\1\1\1\0\3\1\1\0\1\1\2\0\1\1\2\0"+
-    "\1\11\6\0\1\1\3\0\1\11\5\0\1\11\4\0"+
-    "\2\1\1\0\2\1\1\0\2\1\1\15\1\0\2\1"+
-    "\1\0\1\1\2\0\1\11\2\0\1\1\1\0\3\1"+
-    "\2\0\1\11\1\0\1\11\1\1\2\0\1\11\2\0"+
-    "\4\1\2\0\1\1\2\0\1\15\1\1\1\0\1\11"+
-    "\1\0\1\1\1\11\2\1\10\0\1\1\1\0\1\1"+
-    "\2\0\1\1\2\0\1\1\2\0\1\1\2\0\5\1"+
-    "\1\0\1\1\2\0\1\1\1\0\3\1\1\0\1\1"+
-    "\2\0\1\1\1\0\3\1\3\0\3\1\1\11\5\0"+
-    "\1\11\2\0\1\1\5\0\5\1\2\0\3\1\2\0"+
-    "\2\1\1\0\1\1\1\0\1\11\3\1\3\0\1\11"+
-    "\2\0\1\11\1\0\1\1\10\0\1\11\5\1\2\0"+
-    "\3\1\2\0\3\1\5\0\1\11\1\0\3\1\2\0"+
-    "\1\11\2\0\1\1\6\0\1\1\2\0\5\1\2\0"+
-    "\3\1\2\0\3\1\2\0\1\1\3\0\3\1\1\0"+
-    "\1\11\2\0\1\1\13\0\5\1\2\0\3\1\2\0"+
-    "\3\1\10\0\2\1\1\11\2\0\1\1\6\0\1\1"+
-    "\1\0\1\1\2\0\1\1\2\0\3\1\2\0\1\1"+
-    "\1\0\1\1\6\0\1\1\4\0\1\11\4\0\1\11"+
-    "\3\0\1\11\12\0";
-
-  private static int [] zzUnpackAttribute() {
-    int [] result = new int[455];
-    int offset = 0;
-    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAttribute(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-  /** the input device */
-  private java.io.Reader zzReader;
-
-  /** the current state of the DFA */
-  private int zzState;
-
-  /** the current lexical state */
-  private int zzLexicalState = YYINITIAL;
-
-  /** this buffer contains the current text to be matched and is
-      the source of the yytext() string */
-  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
-  /** the textposition at the last accepting state */
-  private int zzMarkedPos;
-
-  /** the textposition at the last state to be included in yytext */
-  private int zzPushbackPos;
-
-  /** the current text position in the buffer */
-  private int zzCurrentPos;
-
-  /** startRead marks the beginning of the yytext() string in the buffer */
-  private int zzStartRead;
-
-  /** endRead marks the last character in the buffer, that has been read
-      from input */
-  private int zzEndRead;
-
-  /** number of newlines encountered up to the start of the matched text */
-  private int yyline;
-
-  /** the number of characters up to the start of the matched text */
-  private int yychar;
-
-  /**
-   * the number of characters from the last newline up to the start of the 
-   * matched text
-   */
-  //private int yycolumn;
-
-  /** 
-   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
-   */
-  //private boolean zzAtBOL = true;
-
-  /** zzAtEOF == true <=> the scanner is at the EOF */
-  private boolean zzAtEOF;
-
-  /* user code: */
-	private final static String UNDEFINED = "undefined";
-	private String fBufferedContext = null;
-	private int fBufferedStart;
-//	private int fBufferedTextLength;
-	private int fBufferedLength;
-//	private StringBuffer fBufferedText = null;
-	private CSSTextRegionFactory fRegionFactory = CSSTextRegionFactory.getInstance();
-	private int fInitialState = YYINITIAL;
-	public final static int BUFFER_SIZE_NORMAL = 16384;
-	public final static int BUFFER_SIZE_SMALL = 256;
-	private int fInitialBufferSize = BUFFER_SIZE_NORMAL;
-
-	public void setInitialState(int state) {
-		fInitialState = state;
-	}
-	
-	public void setInitialBufferSize(int size) {
-		fInitialBufferSize = size;
-	}
-
-	/* user method */
-  	public final ITextRegion getNextToken() throws IOException {
-		String context;
-		String nextTokenType;
-		boolean spaceFollows;
-//		StringBuffer text;
-		int start;
-		int textLength;
-		int length;
-		if (fBufferedContext != null) {
-			context = fBufferedContext;
-//			text = fBufferedText;
-			start = fBufferedStart;
-			textLength = length = fBufferedLength;
-
-			fBufferedContext = null;
-		} else {
-			context = primGetNextToken();
-//			text = new StringBuffer(yytext());
-			start = yychar;
-			textLength = length = yylength();
-		}
-
-		if (context != null) {
-			if (context == CSS_JSP_SCRIPTLET || context == CSS_JSP_EL){
-				nextTokenType = primGetNextToken();
-				while (nextTokenType != CSS_JSP_END && nextTokenType != CSS_EL_END && nextTokenType != CSS_JSP_COMMENT) {
-//					text.append(yytext());
-					textLength += yylength();
-					length = textLength;
-					if (context.equals(CSS_JSP_SCRIPTLET) && (yystate() == ST_JSP_DIRECTIVE || yystate() == ST_JSP_EXP || yystate() == ST_JSP_DECLARATION)){
-						context = nextTokenType;
-					}
-
-					nextTokenType = primGetNextToken();
-					if (nextTokenType == null){
-						break;
-					}
-				}
-				// [236008] - Should not try and consider the token a
-				// comment unless  a comment was started
-				if (context == CSS_JSP_SCRIPTLET && nextTokenType == CSS_JSP_COMMENT){
-					while (nextTokenType != CSS_JSP_COMMENT_END) {
-//						text.append(yytext());
-						textLength += yylength();
-						length = textLength;
-						if (context.equals(CSS_JSP_SCRIPTLET) && yystate() == ST_JSP_COMMENT){
-							context = nextTokenType;
-						}
-
-						nextTokenType = primGetNextToken();
-						if (nextTokenType == null){
-							break;
-						}
-					}				
-					if (context == CSS_JSP_COMMENT){
-						context = CSS_COMMENT;
-					}
-				}
-				textLength += yylength();
-				length = textLength;
-				
-			}
-			if (context == UNDEFINED) {
-				// undef -> concatenate undef's
-				nextTokenType = primGetNextToken();
-				while (nextTokenType == UNDEFINED) {
-//					text.append(yytext());
-					textLength += yylength();
-					length = textLength;
-					nextTokenType = primGetNextToken();
-				}
-				fBufferedContext = nextTokenType;
-//				fBufferedText = new StringBuffer(yytext());
-				fBufferedStart = yychar;
-				fBufferedLength = yylength();
-			} else {
-				nextTokenType = null;
-				spaceFollows = false;
-				if (CSSRegionUtil.isDeclarationValueType(context)) { // declaration value can contain VALUE_S
-					nextTokenType = primGetNextToken();
-					spaceFollows = (nextTokenType == CSS_DECLARATION_VALUE_S);
-				} else if (canContainSpace(context)) {
-					nextTokenType = primGetNextToken();
-					spaceFollows = (nextTokenType == CSS_S);
-				}
-				if (nextTokenType != null) { // nextToken is retrieved
-					if (spaceFollows) {
-						// next is space -> append
-//						text.append(yytext());
-						length += yylength();
-					} else {
-						// next is NOT space -> push this for next time, return itself
-						fBufferedContext = nextTokenType;
-//						fBufferedText = new StringBuffer(yytext());
-						fBufferedStart = yychar;
-						fBufferedLength = yylength();
-					}
-				}
-			}
-		}
-
-		if (context != null) {
-			if (context == UNDEFINED) {
-				context = CSS_UNKNOWN;
-			}
-			return fRegionFactory.createRegion(context, start, textLength, length);
-		} else {
-			return null;
-		}
-  	}
-
-	/* user method */
-	/* for standalone use */
-  	public final List parseText() throws IOException {
-  		List tokens = new ArrayList();
-
-  		CSSTextToken token;
-		for (String kind = primGetNextToken(); kind != null; kind = primGetNextToken()) {
-			token = new CSSTextToken();
-			token.kind = kind;  				
-			token.start = yychar;
-			token.length = yylength();
-			token.image = yytext();
-			tokens.add(token);
-		}
-
-  		return tokens;
-  	}
-  	
-  	/* user method */
-  	private boolean canContainSpace(String type) {
-  		if (type == CSS_DELIMITER || type == CSS_RBRACE || type == CSS_DECLARATION_DELIMITER) {
-  			return false;
-  		} else {
-  			return true;
-  		}
-  	}
-
-	/* user method */
-	public final int getOffset() {
-		return yychar;
-	}
-	
-	/* user method */
-	public final boolean isEOF() {
-		return zzAtEOF;
-	}
-
-	/* user method */
-	public void reset(char[] charArray) {
-		reset(new CharArrayReader(charArray), 0);
-	}
-
-	/* user method */
-	public final void reset(java.io.Reader in, int newOffset) {
-		/** the input device */
-		zzReader = in;
-
-		/** the current state of the DFA */
-		zzState = 0;
-
-		/** the current lexical state */
-		zzLexicalState = fInitialState; //YYINITIAL;
-
-		/** this buffer contains the current text to be matched and is
-			the source of the yytext() string */
-		if (zzBuffer.length != fInitialBufferSize) {
-			zzBuffer = new char[fInitialBufferSize];
-		}
-		java.util.Arrays.fill(zzBuffer, (char)0);
-
-		/** the textposition at the last accepting state */
-		zzMarkedPos = 0;
-
-		/** the textposition at the last state to be included in yytext */
-		zzPushbackPos = 0;
-
-		/** the current text position in the buffer */
-		zzCurrentPos = 0;
-
-		/** startRead marks the beginning of the yytext() string in the buffer */
-		zzStartRead = 0;
-
-		/** endRead marks the last character in the buffer, that has been read
-			from input */
-		zzEndRead = 0;
-
-		/** number of newlines encountered up to the start of the matched text */
-		yyline = 0;
-
-		/** the number of characters up to the start of the matched text */
-		yychar = 0;
-
-		/**
-		 * the number of characters from the last newline up to the start of the 
-		 * matched text
-		 */
-		//yycolumn = 0; 
-
-		/** 
-		 * yy_atBOL == true <=> the scanner is currently at the beginning of a line
-		 */
-		//zzAtBOL = false;
-		
-		/** yy_atEOF == true <=> the scanner has returned a value for EOF */
-		zzAtEOF = false;
-
-		/* user variables */
-		//		fUndefined.delete(0, fUndefined.length());
-	}
-
-	/* user method */
-	public JSPedCSSTokenizer() {
-		super();
-	}
-	
-	private int fJSPPreviousState = fInitialState;
-	private void yyJspBegin(int newstate){
-		fJSPPreviousState = yystate();
-		yybegin(newstate);
-	}
-	private void yyJspEnd(){
-		yybegin(fJSPPreviousState);
-	}
-
-
-  /**
-   * Creates a new scanner
-   * There is also a java.io.InputStream version of this constructor.
-   *
-   * @param   in  the java.io.Reader to read input from.
-   */
-  public JSPedCSSTokenizer(java.io.Reader in) {
-    this.zzReader = in;
-  }
-
-  /**
-   * Creates a new scanner.
-   * There is also java.io.Reader version of this constructor.
-   *
-   * @param   in  the java.io.Inputstream to read input from.
-   */
-  public JSPedCSSTokenizer(java.io.InputStream in) {
-    this(new java.io.InputStreamReader(in));
-  }
-
-  /** 
-   * Unpacks the compressed character translation table.
-   *
-   * @param packed   the packed character translation table
-   * @return         the unpacked character translation table
-   */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x10000];
-    int i = 0;  /* index in packed string  */
-    int j = 0;  /* index in unpacked array */
-    while (i < 170) {
-      int  count = packed.charAt(i++);
-      char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
-    }
-    return map;
-  }
-
-
-  /**
-   * Refills the input buffer.
-   *
-   * @return      <code>false</code>, iff there was new input.
-   * 
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  private boolean zzRefill() throws java.io.IOException {
-
-    /* first: make room (if you can) */
-    if (zzStartRead > 0) {
-      System.arraycopy(zzBuffer, zzStartRead,
-                       zzBuffer, 0,
-                       zzEndRead-zzStartRead);
-
-      /* translate stored positions */
-      zzEndRead-= zzStartRead;
-      zzCurrentPos-= zzStartRead;
-      zzMarkedPos-= zzStartRead;
-      zzPushbackPos-= zzStartRead;
-      zzStartRead = 0;
-    }
-
-    /* is the buffer big enough? */
-    if (zzCurrentPos >= zzBuffer.length) {
-      /* if not: blow it up */
-      char newBuffer[] = new char[zzCurrentPos*2];
-      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
-      zzBuffer = newBuffer;
-    }
-
-    /* finally: fill the buffer with new input */
-    int numRead = zzReader.read(zzBuffer, zzEndRead,
-                                            zzBuffer.length-zzEndRead);
-
-    if (numRead < 0) {
-      return true;
-    }
-    else {
-      zzEndRead+= numRead;
-      return false;
-    }
-  }
-
-    
-  /**
-   * Closes the input stream.
-   */
-  public final void yyclose() throws java.io.IOException {
-    zzAtEOF = true;            /* indicate end of file */
-    zzEndRead = zzStartRead;  /* invalidate buffer    */
-
-    if (zzReader != null)
-      zzReader.close();
-  }
-
-
-  /**
-   * Resets the scanner to read from a new input stream.
-   * Does not close the old reader.
-   *
-   * All internal variables are reset, the old input stream 
-   * <b>cannot</b> be reused (internal buffer is discarded and lost).
-   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
-   *
-   * @param reader   the new input stream 
-   */
-  public final void yyreset(java.io.Reader reader) {
-    zzReader = reader;
-   // zzAtBOL  = true;
-    zzAtEOF  = false;
-    zzEndRead = zzStartRead = 0;
-    zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
-    yyline = yychar = 0;//yycolumn = 0;
-    zzLexicalState = YYINITIAL;
-  }
-
-
-  /**
-   * Returns the current lexical state.
-   */
-  public final int yystate() {
-    return zzLexicalState;
-  }
-
-
-  /**
-   * Enters a new lexical state
-   *
-   * @param newState the new lexical state
-   */
-  public final void yybegin(int newState) {
-    zzLexicalState = newState;
-  }
-
-
-  /**
-   * Returns the text matched by the current regular expression.
-   */
-  public final String yytext() {
-    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
-  }
-
-
-  /**
-   * Returns the character at position <tt>pos</tt> from the 
-   * matched text. 
-   * 
-   * It is equivalent to yytext().charAt(pos), but faster
-   *
-   * @param pos the position of the character to fetch. 
-   *            A value from 0 to yylength()-1.
-   *
-   * @return the character at position pos
-   */
-  public final char yycharat(int pos) {
-    return zzBuffer[zzStartRead+pos];
-  }
-
-
-  /**
-   * Returns the length of the matched text region.
-   */
-  public final int yylength() {
-    return zzMarkedPos-zzStartRead;
-  }
-
-
-  /**
-   * Reports an error that occured while scanning.
-   *
-   * In a wellformed scanner (no or only correct usage of 
-   * yypushback(int) and a match-all fallback rule) this method 
-   * will only be called with things that "Can't Possibly Happen".
-   * If this method is called, something is seriously wrong
-   * (e.g. a JFlex bug producing a faulty scanner etc.).
-   *
-   * Usual syntax/scanner level error handling should be done
-   * in error fallback rules.
-   *
-   * @param   errorCode  the code of the errormessage to display
-   */
-  private void zzScanError(int errorCode) {
-    String message;
-    try {
-      message = ZZ_ERROR_MSG[errorCode];
-    }
-    catch (ArrayIndexOutOfBoundsException e) {
-      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
-    }
-
-    throw new Error(message);
-  } 
-
-
-  /**
-   * Pushes the specified amount of characters back into the input stream.
-   *
-   * They will be read again by then next call of the scanning method
-   *
-   * @param number  the number of characters to be read again.
-   *                This number must not be greater than yylength()!
-   */
-  public void yypushback(int number)  {
-    if ( number > yylength() )
-      zzScanError(ZZ_PUSHBACK_2BIG);
-
-    zzMarkedPos -= number;
-  }
-
-
-  /**
-   * Resumes scanning until the next regular expression is matched,
-   * the end of input is encountered or an I/O-Error occurs.
-   *
-   * @return      the next token
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  public String primGetNextToken() throws java.io.IOException {
-    int zzInput;
-    int zzAction;
-
-    // cached fields:
-    int zzCurrentPosL;
-    int zzMarkedPosL;
-    int zzEndReadL = zzEndRead;
-    char [] zzBufferL = zzBuffer;
-    char [] zzCMapL = ZZ_CMAP;
-
-    int [] zzTransL = ZZ_TRANS;
-    int [] zzRowMapL = ZZ_ROWMAP;
-    int [] zzAttrL = ZZ_ATTRIBUTE;
-    int zzPushbackPosL = zzPushbackPos = -1;
-    boolean zzWasPushback;
-
-    while (true) {
-      zzMarkedPosL = zzMarkedPos;
-
-      yychar+= zzMarkedPosL-zzStartRead;
-
-      boolean zzR = false;
-      for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
-                                                             zzCurrentPosL++) {
-        switch (zzBufferL[zzCurrentPosL]) {
-        case '\u000B':
-        case '\u000C':
-        case '\u0085':
-        case '\u2028':
-        case '\u2029':
-          yyline++;
-          zzR = false;
-          break;
-        case '\r':
-          yyline++;
-          zzR = true;
-          break;
-        case '\n':
-          if (zzR)
-            zzR = false;
-          else {
-            yyline++;
-          }
-          break;
-        default:
-          zzR = false;
-        }
-      }
-
-      if (zzR) {
-        // peek one character ahead if it is \n (if we have counted one line too much)
-        boolean zzPeek;
-        if (zzMarkedPosL < zzEndReadL)
-          zzPeek = zzBufferL[zzMarkedPosL] == '\n';
-        else if (zzAtEOF)
-          zzPeek = false;
-        else {
-          boolean eof = zzRefill();
-          zzEndReadL = zzEndRead;
-          zzMarkedPosL = zzMarkedPos;
-          zzBufferL = zzBuffer;
-          if (eof) 
-            zzPeek = false;
-          else 
-            zzPeek = zzBufferL[zzMarkedPosL] == '\n';
-        }
-        if (zzPeek) yyline--;
-      }
-      zzAction = -1;
-
-      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-  
-      zzState = zzLexicalState;
-
-      zzWasPushback = false;
-
-      zzForAction: {
-        while (true) {
-    
-          if (zzCurrentPosL < zzEndReadL)
-            zzInput = zzBufferL[zzCurrentPosL++];
-          else if (zzAtEOF) {
-            zzInput = YYEOF;
-            break zzForAction;
-          }
-          else {
-            // store back cached positions
-            zzCurrentPos  = zzCurrentPosL;
-            zzMarkedPos   = zzMarkedPosL;
-            zzPushbackPos = zzPushbackPosL;
-            boolean eof = zzRefill();
-            // get translated positions and possibly new buffer
-            zzCurrentPosL  = zzCurrentPos;
-            zzMarkedPosL   = zzMarkedPos;
-            zzBufferL      = zzBuffer;
-            zzEndReadL     = zzEndRead;
-            zzPushbackPosL = zzPushbackPos;
-            if (eof) {
-              zzInput = YYEOF;
-              break zzForAction;
-            }
-            else {
-              zzInput = zzBufferL[zzCurrentPosL++];
-            }
-          }
-          int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
-          if (zzNext == -1) break zzForAction;
-          zzState = zzNext;
-
-          int zzAttributes = zzAttrL[zzState];
-          if ( (zzAttributes & 2) == 2 )
-            zzPushbackPosL = zzCurrentPosL;
-
-          if ( (zzAttributes & 1) == 1 ) {
-            zzWasPushback = (zzAttributes & 4) == 4;
-            zzAction = zzState;
-            zzMarkedPosL = zzCurrentPosL;
-            if ( (zzAttributes & 8) == 8 ) break zzForAction;
-          }
-
-        }
-      }
-
-      // store back cached position
-      zzMarkedPos = zzMarkedPosL;
-      if (zzWasPushback)
-        zzMarkedPos = zzPushbackPosL;
-
-      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 38: 
-          { yybegin(ST_IMPORT_MEDIUM); return CSS_STRING;
-          }
-        case 60: break;
-        case 39: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_DIMENSION;
-          }
-        case 61: break;
-        case 44: 
-          { return CSS_DECLARATION_VALUE_S;
-          }
-        case 62: break;
-        case 41: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_FUNCTION;
-          }
-        case 63: break;
-        case 19: 
-          { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_ATTRIBUTE_END;
-          }
-        case 64: break;
-        case 1: 
-          { return UNDEFINED;
-          }
-        case 65: break;
-        case 8: 
-          { yybegin(ST_IMPORT_DELIMITER); return CSS_MEDIUM;
-          }
-        case 66: break;
-        case 42: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_STRING;
-          }
-        case 67: break;
-        case 32: 
-          { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_CLASS;
-          }
-        case 68: break;
-        case 11: 
-          { yybegin(YYINITIAL); return CSS_LBRACE;
-          }
-        case 69: break;
-        case 4: 
-          { yybegin(YYINITIAL); return CSS_RBRACE;
-          }
-        case 70: break;
-        case 10: 
-          { yybegin(ST_MEDIA_DELIMITER); return CSS_MEDIUM;
-          }
-        case 71: break;
-        case 9: 
-          { yybegin(ST_IMPORT_MEDIUM); return CSS_MEDIA_SEPARATOR;
-          }
-        case 72: break;
-        case 23: 
-          { yybegin(ST_DECLARATION_PRE_VALUE); return CSS_DECLARATION_SEPARATOR;
-          }
-        case 73: break;
-        case 58: 
-          { yybegin(ST_FONT_FACE_DELIMITER); return CSS_FONT_FACE;
-          }
-        case 74: break;
-        case 57: 
-          { yybegin(ST_CHARSET_NAME); return CSS_CHARSET;
-          }
-        case 75: break;
-        case 31: 
-          { yyJspEnd(); return CSS_EL_END;
-          }
-        case 76: break;
-        case 46: 
-          { yyJspEnd();  return CSS_JSP_END;
-          }
-        case 77: break;
-        case 53: 
-          { yybegin(ST_IMPORT_MEDIUM); return CSS_URI;
-          }
-        case 78: break;
-        case 18: 
-          { yybegin(ST_SELECTOR_ATTRIBUTE_VALUE); return CSS_SELECTOR_ATTRIBUTE_OPERATOR;
-          }
-        case 79: break;
-        case 47: 
-          { return CSS_CDC;
-          }
-        case 80: break;
-        case 14: 
-          { yybegin(ST_DECLARATION); return CSS_LBRACE;
-          }
-        case 81: break;
-        case 5: 
-          { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_UNIVERSAL;
-          }
-        case 82: break;
-        case 6: 
-          { yybegin(ST_SELECTOR_ATTRIBUTE_NAME); return CSS_SELECTOR_ATTRIBUTE_START;
-          }
-        case 83: break;
-        case 49: 
-          { return CSS_CDO;
-          }
-        case 84: break;
-        case 7: 
-          { yybegin(YYINITIAL); return CSS_DELIMITER;
-          }
-        case 85: break;
-        case 17: 
-          { yybegin(ST_SELECTOR_ATTRIBUTE_OPERATOR); return CSS_SELECTOR_ATTRIBUTE_NAME;
-          }
-        case 86: break;
-        case 43: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_HASH;
-          }
-        case 87: break;
-        case 52: 
-          { yybegin(ST_PAGE_PSEUDO_PAGE); return CSS_PAGE;
-          }
-        case 88: break;
-        case 2: 
-          { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_ELEMENT_NAME;
-          }
-        case 89: break;
-        case 37: 
-          { yybegin(ST_CHARSET_DELIMITER); return CSS_STRING;
-          }
-        case 90: break;
-        case 35: 
-          { yyJspBegin(ST_JSP_EL);  return CSS_JSP_EL;
-          }
-        case 91: break;
-        case 24: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_NUMBER;
-          }
-        case 92: break;
-        case 15: 
-          { yybegin(ST_SELECTOR); return CSS_SELECTOR_COMBINATOR;
-          }
-        case 93: break;
-        case 48: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_UNICODE_RANGE;
-          }
-        case 94: break;
-        case 40: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_PERCENTAGE;
-          }
-        case 95: break;
-        case 12: 
-          { yybegin(ST_MEDIA_MEDIUM); return CSS_MEDIA_SEPARATOR;
-          }
-        case 96: break;
-        case 25: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_IDENT;
-          }
-        case 97: break;
-        case 13: 
-          { yybegin(ST_PAGE_DELIMITER); return CSS_PAGE_SELECTOR;
-          }
-        case 98: break;
-        case 27: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_OPERATOR;
-          }
-        case 99: break;
-        case 50: 
-          { return CSS_COMMENT;
-          }
-        case 100: break;
-        case 59: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_IMPORTANT;
-          }
-        case 101: break;
-        case 20: 
-          { yybegin(ST_SELECTOR_ATTRIBUTE_END); return CSS_SELECTOR_ATTRIBUTE_VALUE;
-          }
-        case 102: break;
-        case 16: 
-          { yybegin(ST_SELECTOR); return CSS_SELECTOR_SEPARATOR;
-          }
-        case 103: break;
-        case 3: 
-          { return CSS_S;
-          }
-        case 104: break;
-        case 51: 
-          { yyJspEnd(); return CSS_JSP_COMMENT_END;
-          }
-        case 105: break;
-        case 33: 
-          { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_ID;
-          }
-        case 106: break;
-        case 30: 
-          { yybegin(ST_JSP_DECLARATION); return CSS_JSP_DECL;
-          }
-        case 107: break;
-        case 56: 
-          { yybegin(ST_IMPORT_URI); return CSS_IMPORT;
-          }
-        case 108: break;
-        case 26: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_PARENTHESIS_CLOSE;
-          }
-        case 109: break;
-        case 55: 
-          { yybegin(ST_MEDIA_MEDIUM); return CSS_MEDIA;
-          }
-        case 110: break;
-        case 29: 
-          { yybegin(ST_JSP_EXP); return CSS_JSP_EXP;
-          }
-        case 111: break;
-        case 22: 
-          { yybegin(ST_DECLARATION); return CSS_DECLARATION_DELIMITER;
-          }
-        case 112: break;
-        case 36: 
-          { yybegin(ST_SELECTOR_MODIFIER); return CSS_SELECTOR_PSEUDO;
-          }
-        case 113: break;
-        case 21: 
-          { yybegin(ST_DECLARATION_SEPARATOR); return CSS_DECLARATION_PROPERTY;
-          }
-        case 114: break;
-        case 45: 
-          { yybegin(ST_JSP_COMMENT); return CSS_JSP_COMMENT;
-          }
-        case 115: break;
-        case 34: 
-          { yyJspBegin(ST_JSP_SCRIPTLET);  return CSS_JSP_SCRIPTLET;
-          }
-        case 116: break;
-        case 54: 
-          { yybegin(ST_DECLARATION_VALUE); return CSS_DECLARATION_VALUE_URI;
-          }
-        case 117: break;
-        case 28: 
-          { yybegin(ST_JSP_DIRECTIVE); return CSS_JSP_DIRECTIVE;
-          }
-        case 118: break;
-        default: 
-          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-            zzAtEOF = true;
-            return null;
-          } 
-          else {
-            zzScanError(ZZ_NO_MATCH);
-          }
-      }
-    }
-  }
-
-
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parserz/JSPedCSSRegionContexts.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parserz/JSPedCSSRegionContexts.java
deleted file mode 100644
index 9e1b16e..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/css/core/internal/parserz/JSPedCSSRegionContexts.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     
- *******************************************************************************/
-package org.eclipse.jst.jsp.css.core.internal.parserz;
-
-import org.eclipse.wst.css.core.internal.parserz.CSSRegionContexts;
-
-public interface JSPedCSSRegionContexts extends CSSRegionContexts {	
-	public static final String CSS_JSP_EXP = "CSS_JSP_EXP"; //$NON-NLS-1$
-	public static final String CSS_JSP_EL = CSSRegionContexts.CSS_FOREIGN_ELEMENT; //$NON-NLS-1$
-	public static final String CSS_JSP_SCRIPTLET = "CSS_JSP_SCRIPTLET"; //$NON-NLS-1$
-	public static final String CSS_JSP_DIRECTIVE = "CSS_JSP_DIRECTIVE"; //$NON-NLS-1$
-	public static final String CSS_JSP_DECL = "CSS_JSP_DECL"; //$NON-NLS-1$
-	public static final String CSS_JSP_END = "CSS_JSP_END"; //$NON-NLS-1$
-	public static final String CSS_EL_END = "CSS_EL_END"; //$NON-NLS-1$
-	public static final String CSS_JSP_COMMENT_END = "CSS_JSP_COMMENT_END"; //$NON-NLS-1$
-	public static final String CSS_JSP_COMMENT = "CSS_JSP_COMMENT"; //$NON-NLS-1$
-}