JDK_1_5-Merge with HEAD: v_433
diff --git a/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties b/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
index 56bc908..dec2ba5 100644
--- a/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
+++ b/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
@@ -12,7 +12,7 @@
 
 ### compiler 
 compiler.name = Eclipse Java Compiler
-compiler.version = 0.430_Cheetah05
+compiler.version = 0.434_Cheetah05
 compiler.copyright = Copyright IBM Corp 2000, 2004. All rights reserved.
 
 ### scanning
diff --git a/buildnotes_jdt-core.html b/buildnotes_jdt-core.html
index 5457699..662846d 100644
--- a/buildnotes_jdt-core.html
+++ b/buildnotes_jdt-core.html
@@ -153,11 +153,69 @@
 [1.5] ArrayStoreException in 1.5 parser
 
 
+<a name="v_434"></a>
+<p><hr><h1>
+Eclipse Platform Build Notes&nbsp;<br>
+Java Development Tooling Core</h1>
+Eclipse SDK 3.0RC1 Build - ?th May 2004
+<br>Project org.eclipse.jdt.core v_434
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_434">cvs</a>).
+<h2>
+What's new in this drop</h2>
+<ul>
+</ul>
+
+<h3>Problem Reports Fixed</h3>
+
+
+<a name="v_433"></a>
+<p><hr><h1>
+Eclipse Platform Build Notes&nbsp;<br>
+Java Development Tooling Core</h1>
+Eclipse SDK 3.0M9 Build - 21st May 2004 - 3.0 MILESTONE-9 / 3.0 RELEASE CANDIDATE 0
+<br>Project org.eclipse.jdt.core v_433
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_433">cvs</a>).
+<h2>
+What's new in this drop</h2>
+<ul>Put back test org.eclipse.jdt.core.tests.model.JavaElementDeltaTests.testBuildProjectUsedAsLib()
+after bug <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62927">62927</a> was fixed.
+</ul>
+
+<a name="v_432"></a>
+<p><hr><h1>
+Eclipse Platform Build Notes&nbsp;<br>
+Java Development Tooling Core</h1>
+Eclipse SDK 3.0M9 Build - 20th May 2004
+<br>Project org.eclipse.jdt.core v_432
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_432">cvs</a>).
+<h2>
+What's new in this drop</h2>
+<ul>Excluded test org.eclipse.jdt.core.tests.model.JavaElementDeltaTests.testBuildProjectUsedAsLib()
+</ul>
+
+<a name="v_431"></a>
+<p><hr><h1>
+Eclipse Platform Build Notes&nbsp;<br>
+Java Development Tooling Core</h1>
+Eclipse SDK 3.0M9 Build - 20th May 2004
+<br>Project org.eclipse.jdt.core v_431
+(<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_431">cvs</a>).
+<h2>
+What's new in this drop</h2>
+<ul>
+</ul>
+
+<h3>Problem Reports Fixed</h3>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=62881">62881</a>
+JDT/Core could be contributing a content type for JAR manifests
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=58580">58580</a>
+VariableBinding.getVariableId() returns wrong IDs for nested types
+
 <a name="v_430"></a>
 <p><hr><h1>
 Eclipse Platform Build Notes&nbsp;<br>
 Java Development Tooling Core</h1>
-Eclipse SDK 3.0M9 Build - 18th May 2004 - 3.0 MILESTONE-9 / 3.0 RELEASE CANDIDATE 0
+Eclipse SDK 3.0M9 Build - 18th May 2004
 <br>Project org.eclipse.jdt.core v_430
 (<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core/?only_with_tag=v_430">cvs</a>).
 <h2>
diff --git a/dom/org/eclipse/jdt/core/dom/AST.java b/dom/org/eclipse/jdt/core/dom/AST.java
index 1030461..754efa8 100644
--- a/dom/org/eclipse/jdt/core/dom/AST.java
+++ b/dom/org/eclipse/jdt/core/dom/AST.java
@@ -93,7 +93,7 @@
      *
 	 * @since 3.0
 	 */
-	// TODO (jeem) deprecated Clients should use the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Clients should use the JLS3 API.
 	public static final int JLS2 = 2;
 	
 	/**
@@ -213,7 +213,7 @@
 	 * 
 	 * @see JavaCore#getDefaultOptions()
 	 */
-	// TODO (jeem) deprecated Clients should port their code to use the new JLS3 API and call {@link #newAST(int)} instead of using this constructor.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Clients should port their code to use the new JLS3 API and call {@link #newAST(int)} instead of using this constructor.
 	public AST() {
 		this(JavaCore.getDefaultOptions());
 	}
@@ -275,7 +275,7 @@
 	 *    value type: <code>String</code>)
 	 * @see JavaCore#getDefaultOptions()
 	 */
-	// TODO (jeem) deprecated Clients should port their code to use the new JLS3 API and call {@link #newAST(int)} instead of using this constructor.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Clients should port their code to use the new JLS3 API and call {@link #newAST(int)} instead of using this constructor.
 	public AST(Map options) {
 		this(JLS2);
 		// override scanner if 1.4 asked for
diff --git a/dom/org/eclipse/jdt/core/dom/BodyDeclaration.java b/dom/org/eclipse/jdt/core/dom/BodyDeclaration.java
index 3d32c88..8b4d8d6 100644
--- a/dom/org/eclipse/jdt/core/dom/BodyDeclaration.java
+++ b/dom/org/eclipse/jdt/core/dom/BodyDeclaration.java
@@ -209,7 +209,7 @@
 	 * an AST later than JLS2
 	 * @see Modifier
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>modifiers()</code> which contains a list of a <code>Modifier</code> nodes.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>modifiers()</code> which contains a list of a <code>Modifier</code> nodes.
 	public void setModifiers(int modifiers) {
 		// more efficient than just calling supportedOnlyIn2() to check
 		if (this.modifiers != null) {
diff --git a/dom/org/eclipse/jdt/core/dom/ClassInstanceCreation.java b/dom/org/eclipse/jdt/core/dom/ClassInstanceCreation.java
index 08a24b2..a750888 100644
--- a/dom/org/eclipse/jdt/core/dom/ClassInstanceCreation.java
+++ b/dom/org/eclipse/jdt/core/dom/ClassInstanceCreation.java
@@ -78,7 +78,7 @@
 	 * The "name" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #TYPE_PROPERTY} in the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #TYPE_PROPERTY} in the JLS3 API.
 	public static final ChildPropertyDescriptor NAME_PROPERTY = 
 		new ChildPropertyDescriptor(ClassInstanceCreation.class, "name", Name.class, MANDATORY, NO_CYCLE_RISK); //$NON-NLS-1$
 
@@ -397,7 +397,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>getType</code>, which returns a <code>Type</code> instead of a <code>Name</code>.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>getType</code>, which returns a <code>Type</code> instead of a <code>Name</code>.
 	public Name getName() {
 	    supportedOnlyIn2();
 		if (this.typeName == null) {
@@ -426,7 +426,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) deprecated In the JLS3 API, this method is replaced by <code>setType</code>, which expects a <code>Type</code> instead of a <code>Name</code>.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>setType</code>, which expects a <code>Type</code> instead of a <code>Name</code>.
 	public void setName(Name name) {
 	    supportedOnlyIn2();
 		if (name == null) {
diff --git a/dom/org/eclipse/jdt/core/dom/FieldDeclaration.java b/dom/org/eclipse/jdt/core/dom/FieldDeclaration.java
index 29eb13e..d15d5b0 100644
--- a/dom/org/eclipse/jdt/core/dom/FieldDeclaration.java
+++ b/dom/org/eclipse/jdt/core/dom/FieldDeclaration.java
@@ -48,7 +48,7 @@
 	 * The "modifiers" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
+    // TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
 	public static final SimplePropertyDescriptor MODIFIERS_PROPERTY = 
 		internalModifiersPropertyFactory(FieldDeclaration.class);
 	
diff --git a/dom/org/eclipse/jdt/core/dom/IVariableBinding.java b/dom/org/eclipse/jdt/core/dom/IVariableBinding.java
index ff92deb..b8a6c00 100644
--- a/dom/org/eclipse/jdt/core/dom/IVariableBinding.java
+++ b/dom/org/eclipse/jdt/core/dom/IVariableBinding.java
@@ -67,9 +67,7 @@
 	 * <b>Local variables inside methods:</b> Local variables (and parameters)
 	 * declared within a single method are assigned ascending ids in normal
 	 * code reading order; var1.getVariableId()&lt;var2.getVariableId() means that var1 is
-	 * declared before var2. Note that the numbering does not include the local
-	 * variables declared within the method's local (or anonymous) types - their
-	 * ids would be relative to the methods of the local type.
+	 * declared before var2.
 	 * </p>
 	 * <p>
 	 * <b>Local variables outside methods:</b> Local variables declared in a
diff --git a/dom/org/eclipse/jdt/core/dom/Initializer.java b/dom/org/eclipse/jdt/core/dom/Initializer.java
index a5e7c6c..876ec68 100644
--- a/dom/org/eclipse/jdt/core/dom/Initializer.java
+++ b/dom/org/eclipse/jdt/core/dom/Initializer.java
@@ -35,7 +35,7 @@
 	 * The "modifiers" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
+    // TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
 	public static final SimplePropertyDescriptor MODIFIERS_PROPERTY = 
 		internalModifiersPropertyFactory(Initializer.class);
 	
diff --git a/dom/org/eclipse/jdt/core/dom/Javadoc.java b/dom/org/eclipse/jdt/core/dom/Javadoc.java
index 0b114de..5e420c3 100644
--- a/dom/org/eclipse/jdt/core/dom/Javadoc.java
+++ b/dom/org/eclipse/jdt/core/dom/Javadoc.java
@@ -32,7 +32,7 @@
 	 * The "comment" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #TAGS_PROPERTY} in the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #TAGS_PROPERTY} in the JLS3 API.
 	public static final SimplePropertyDescriptor COMMENT_PROPERTY = 
 		new SimplePropertyDescriptor(Javadoc.class, "comment", String.class, MANDATORY); //$NON-NLS-1$
 	
diff --git a/dom/org/eclipse/jdt/core/dom/MethodDeclaration.java b/dom/org/eclipse/jdt/core/dom/MethodDeclaration.java
index 7953aca..69feab4 100644
--- a/dom/org/eclipse/jdt/core/dom/MethodDeclaration.java
+++ b/dom/org/eclipse/jdt/core/dom/MethodDeclaration.java
@@ -73,7 +73,7 @@
 	 * The "modifiers" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
+    // TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
 	public static final SimplePropertyDescriptor MODIFIERS_PROPERTY = 
 		internalModifiersPropertyFactory(MethodDeclaration.class);
 	
@@ -102,7 +102,7 @@
 	 * The "returnType" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #RETURN_TYPE2_PROPERTY} in the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #RETURN_TYPE2_PROPERTY} in the JLS3 API.
 	public static final ChildPropertyDescriptor RETURN_TYPE_PROPERTY = 
 		new ChildPropertyDescriptor(MethodDeclaration.class, "returnType", Type.class, MANDATORY, NO_CYCLE_RISK); //$NON-NLS-1$
 
@@ -664,7 +664,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>getReturnType2</code>, which may return <code>null</code>.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>getReturnType2</code>, which may return <code>null</code>.
 	public Type getReturnType() {
 	    supportedOnlyIn2();
 		if (this.returnType == null) {
@@ -698,7 +698,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>setReturnType2</code>, which accepts <code>null</code>.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>setReturnType2</code>, which accepts <code>null</code>.
 	public void setReturnType(Type type) {
 	    supportedOnlyIn2();
 		if (type == null) {
diff --git a/dom/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java b/dom/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java
index 43d5f68..7f2c782 100644
--- a/dom/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java
+++ b/dom/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java
@@ -40,7 +40,7 @@
 	 * The "modifiers" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
+    // TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
 	public static final SimplePropertyDescriptor MODIFIERS_PROPERTY = 
 		new SimplePropertyDescriptor(SingleVariableDeclaration.class, "modifiers", int.class, MANDATORY); //$NON-NLS-1$
 	
@@ -413,7 +413,7 @@
 	 * an AST later than JLS2
 	 * @see Modifier
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>modifiers()</code> which contains a list of  a <code>Modifier</code> nodes.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>modifiers()</code> which contains a list of  a <code>Modifier</code> nodes.
 	public void setModifiers(int modifiers) {
 	    supportedOnlyIn2();
 		preValueChange(MODIFIERS_PROPERTY);
diff --git a/dom/org/eclipse/jdt/core/dom/TypeDeclaration.java b/dom/org/eclipse/jdt/core/dom/TypeDeclaration.java
index e581c64..12b3fcd 100644
--- a/dom/org/eclipse/jdt/core/dom/TypeDeclaration.java
+++ b/dom/org/eclipse/jdt/core/dom/TypeDeclaration.java
@@ -77,7 +77,7 @@
 	 * The "modifiers" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
+    // TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
 	public static final SimplePropertyDescriptor MODIFIERS_PROPERTY = 
 		internalModifiersPropertyFactory(TypeDeclaration.class);
 	
@@ -106,7 +106,7 @@
 	 * The "superclass" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #SUPERCLASS_TYPE_PROPERTY} in the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #SUPERCLASS_TYPE_PROPERTY} in the JLS3 API.
 	public static final ChildPropertyDescriptor SUPERCLASS_PROPERTY = 
 		new ChildPropertyDescriptor(TypeDeclaration.class, "superclass", Name.class, OPTIONAL, NO_CYCLE_RISK); //$NON-NLS-1$
 
@@ -114,7 +114,7 @@
 	 * The "superInterfaces" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #SUPER_INTERFACE_TYPES_PROPERTY} in the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #SUPER_INTERFACE_TYPES_PROPERTY} in the JLS3 API.
 	public static final ChildListPropertyDescriptor SUPER_INTERFACES_PROPERTY = 
 		new ChildListPropertyDescriptor(TypeDeclaration.class, "superInterfaces", Name.class, NO_CYCLE_RISK); //$NON-NLS-1$
 
@@ -549,7 +549,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>getSuperclassType</code>, which returns a <code>Type</code> instead of a <code>Name</code>.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>getSuperclassType</code>, which returns a <code>Type</code> instead of a <code>Name</code>.
 	public Name getSuperclass() {
 	    supportedOnlyIn2();
 		return this.optionalSuperclassName;
@@ -594,7 +594,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) deprecated In the JLS3 API, this method is replaced by <code>setType</code>, which expects a <code>Type</code> instead of a <code>Name</code>.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>setType</code>, which expects a <code>Type</code> instead of a <code>Name</code>.
 	public void setSuperclass(Name superclassName) {
 	    supportedOnlyIn2();
 		ASTNode oldChild = this.optionalSuperclassName;
@@ -642,7 +642,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>superInterfaceTypes()</code>
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>superInterfaceTypes()</code>
 	public List superInterfaces() {
 		// more efficient than just calling supportedOnlyIn2() to check
 		if (this.superInterfaceNames == null) {
diff --git a/dom/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java b/dom/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java
index 41996a3..300e6d2 100644
--- a/dom/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java
+++ b/dom/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java
@@ -41,7 +41,7 @@
 	 * The "typeDeclaration" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #DECLARATION_PROPERTY} in the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #DECLARATION_PROPERTY} in the JLS3 API.
 	public static final ChildPropertyDescriptor TYPE_DECLARATION_PROPERTY = 
 		new ChildPropertyDescriptor(TypeDeclarationStatement.class, "typeDeclaration", TypeDeclaration.class, MANDATORY, CYCLE_RISK); //$NON-NLS-1$
 
@@ -242,7 +242,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>getDeclaration</code>, which returns <code>AbstractTypeDeclaration</code> instead of <code>TypeDeclaration</code>.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>getDeclaration</code>, which returns <code>AbstractTypeDeclaration</code> instead of <code>TypeDeclaration</code>.
 	public TypeDeclaration getTypeDeclaration() {
 	    supportedOnlyIn2();
 		return (TypeDeclaration) getDeclaration();
@@ -262,7 +262,7 @@
 	 * @exception UnsupportedOperationException if this operation is used in
 	 * an AST later than JLS2
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>setDeclaration</code> which takes <code>AbstractTypeDeclaration</code> instead of <code>TypeDeclaration</code>.
+    // TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>setDeclaration</code> which takes <code>AbstractTypeDeclaration</code> instead of <code>TypeDeclaration</code>.
 	public void setTypeDeclaration(TypeDeclaration decl) {
 	    supportedOnlyIn2();
 		// forward to non-deprecated replacement method
diff --git a/dom/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java b/dom/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java
index 3370c53..a3f8c57 100644
--- a/dom/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java
+++ b/dom/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java
@@ -45,7 +45,7 @@
 	 * The "modifiers" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
 	public static final SimplePropertyDescriptor MODIFIERS_PROPERTY = 
 		new SimplePropertyDescriptor(VariableDeclarationExpression.class, "modifiers", int.class, MANDATORY); //$NON-NLS-1$
 	
@@ -338,7 +338,7 @@
 	 * an AST later than JLS2
 	 * @see Modifier
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>modifiers()</code> which contains a list of a <code>Modifier</code> nodes.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>modifiers()</code> which contains a list of a <code>Modifier</code> nodes.
 	public void setModifiers(int modifiers) {
 	    supportedOnlyIn2();
 		preValueChange(MODIFIERS_PROPERTY);
diff --git a/dom/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java b/dom/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java
index 787e351..687d7c5 100644
--- a/dom/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java
+++ b/dom/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java
@@ -43,7 +43,7 @@
 	 * The "modifiers" structural property of this node type (JLS2 API only).
 	 * @since 3.0
 	 */
-	// TODO (jeem) - @deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated Replaced by {@link #MODIFIERS2_PROPERTY} in the JLS3 API.
 	public static final SimplePropertyDescriptor MODIFIERS_PROPERTY = 
 		new SimplePropertyDescriptor(VariableDeclarationStatement.class, "modifiers", int.class, MANDATORY); //$NON-NLS-1$
 	
@@ -330,7 +330,7 @@
 	 * an AST later than JLS2
 	 * @see Modifier
 	 */ 
-	// TODO (jeem ) - deprecated In the JLS3 API, this method is replaced by <code>modifiers()</code> which contains a list of a <code>Modifier</code> nodes.
+	// TODO (jeem) When JLS3 support is complete (post 3.0) - deprecated In the JLS3 API, this method is replaced by <code>modifiers()</code> which contains a list of a <code>Modifier</code> nodes.
 	public void setModifiers(int modifiers) {
 	    supportedOnlyIn2();
 		preValueChange(MODIFIERS_PROPERTY);
diff --git a/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java b/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java
index a4ddf82..c8e6abe 100644
--- a/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java
+++ b/model/org/eclipse/jdt/internal/core/builder/JavaBuilder.java
@@ -238,14 +238,12 @@
 	try {
 		notifier.checkCancel();
 
-		if ((this.lastState = getLastState(currentProject)) != null) {
-			initializeBuilder();
-			if (DEBUG && lastState != null)
-				System.out.println("Clearing last state : " + lastState); //$NON-NLS-1$
-			clearLastState();
-			removeProblemsAndTasksFor(currentProject);
-			new BatchImageBuilder(this).cleanOutputFolders(false);
-		}
+		initializeBuilder();
+		if (DEBUG)
+			System.out.println("Clearing last state as part of clean : " + lastState); //$NON-NLS-1$
+		clearLastState();
+		removeProblemsAndTasksFor(currentProject);
+		new BatchImageBuilder(this).cleanOutputFolders(false);
 	} catch (CoreException e) {
 		Util.log(e, "JavaBuilder handling CoreException while cleaning: " + currentProject.getName()); //$NON-NLS-1$
 		IMarker marker = currentProject.createMarker(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER);
diff --git a/model/org/eclipse/jdt/internal/core/builder/NameSet.java b/model/org/eclipse/jdt/internal/core/builder/NameSet.java
index 43c75af..144d38a 100644
--- a/model/org/eclipse/jdt/internal/core/builder/NameSet.java
+++ b/model/org/eclipse/jdt/internal/core/builder/NameSet.java
@@ -12,7 +12,7 @@
 
 import org.eclipse.jdt.core.compiler.CharOperation;
 
-public class NameSet {
+public final class NameSet {
 
 // to avoid using Enumerations, walk the individual values skipping nulls
 public char[][] names;
@@ -20,10 +20,12 @@
 public int threshold;
 
 public NameSet(int size) {
-	if (size < 3) size = 3;
 	this.elementSize = 0;
-	this.threshold = size + 1; // size is the expected number of elements
-	this.names = new char[2 * size + 1][];
+	this.threshold = size; // size represents the expected number of elements
+	int extraRoom = (int) (size * 1.5f);
+	if (this.threshold == extraRoom)
+		extraRoom++;
+	this.names = new char[extraRoom][];
 }
 
 public char[] add(char[] name) {
diff --git a/model/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.java b/model/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.java
index b773fc9..91036b2 100644
--- a/model/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.java
+++ b/model/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.java
@@ -20,10 +20,12 @@
 public int threshold;
 
 public QualifiedNameSet(int size) {
-	if (size < 3) size = 3;
 	this.elementSize = 0;
-	this.threshold = size + 1; // size is the expected number of elements
-	this.qualifiedNames = new char[2 * size + 1][][];
+	this.threshold = size; // size represents the expected number of elements
+	int extraRoom = (int) (size * 1.5f);
+	if (this.threshold == extraRoom)
+		extraRoom++;
+	this.qualifiedNames = new char[extraRoom][][];
 }
 
 public char[][] add(char[][] qualifiedName) {
diff --git a/model/org/eclipse/jdt/internal/core/builder/State.java b/model/org/eclipse/jdt/internal/core/builder/State.java
index 1ce20e2..fcc4894 100644
--- a/model/org/eclipse/jdt/internal/core/builder/State.java
+++ b/model/org/eclipse/jdt/internal/core/builder/State.java
@@ -153,12 +153,17 @@
 
 void recordLocatorForType(String qualifiedTypeName, String typeLocator) {
 	this.knownPackageNames = null;
+	// in the common case, the qualifiedTypeName is a substring of the typeLocator so share the char[] by using String.substring()
+	int start = typeLocator.indexOf(qualifiedTypeName, 0);
+	if (start > 0)
+		qualifiedTypeName = typeLocator.substring(start, start + qualifiedTypeName.length());
 	typeLocators.put(qualifiedTypeName, typeLocator);
 }
 
 void recordStructuralDependency(IProject prereqProject, State prereqState) {
 	if (prereqState != null)
-		structuralBuildTimes.put(prereqProject.getName(), new Long(prereqState.lastStructuralBuildTime));
+		if (prereqState.lastStructuralBuildTime > 0) // can skip if 0 (full build) since its assumed to be 0 if unknown
+			structuralBuildTimes.put(prereqProject.getName(), new Long(prereqState.lastStructuralBuildTime));
 }
 
 void removeLocator(String typeLocatorToRemove) {
@@ -253,7 +258,7 @@
 
 	newState.typeLocators = new SimpleLookupTable(length = in.readInt());
 	for (int i = 0; i < length; i++)
-		newState.typeLocators.put(in.readUTF(), internedTypeLocators[in.readInt()]);
+		newState.recordLocatorForType(in.readUTF(), internedTypeLocators[in.readInt()]);
 
 	char[][] internedSimpleNames = ReferenceCollection.internSimpleNames(readNames(in), false);
 	char[][][] internedQualifiedNames = new char[length = in.readInt()][][];
diff --git a/model/org/eclipse/jdt/internal/core/builder/StringSet.java b/model/org/eclipse/jdt/internal/core/builder/StringSet.java
index 4589426..a22ca99 100644
--- a/model/org/eclipse/jdt/internal/core/builder/StringSet.java
+++ b/model/org/eclipse/jdt/internal/core/builder/StringSet.java
@@ -18,10 +18,12 @@
 public int threshold;
 
 public StringSet(int size) {
-	if (size < 3) size = 3;
 	this.elementSize = 0;
-	this.threshold = size + 1; // size is the expected number of elements
-	this.values = new String[2 * size + 1];
+	this.threshold = size; // size represents the expected number of elements
+	int extraRoom = (int) (size * 1.5f);
+	if (this.threshold == extraRoom)
+		extraRoom++;
+	this.values = new String[extraRoom];
 }
 
 public boolean add(String value) {
diff --git a/plugin.properties b/plugin.properties
index b4641db..cee64cb 100644
--- a/plugin.properties
+++ b/plugin.properties
@@ -20,4 +20,5 @@
 codeFormattersName=Source Code Formatters
 javaTaskName=Java Task
 javaPropertiesName=Java Properties File
-javaSourceName=Java Source File
\ No newline at end of file
+javaSourceName=Java Source File
+jarManifestName=JAR Manifest File
\ No newline at end of file
diff --git a/plugin.xml b/plugin.xml
index c35474d..996bf45 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -194,8 +194,12 @@
 		base-type="org.eclipse.core.runtime.text"
 		priority="high"				
 		file-extensions="java"/>
-</extension>
-<extension point="org.eclipse.core.runtime.contentTypes">
+	<!-- declares a content type for JAR manifest files -->
+    <content-type id="JARManifest" name="%jarManifestName" 
+        base-type="org.eclipse.core.runtime.text"
+        priority="high"				
+        file-names="MANIFEST.MF"
+        default-charset="UTF-8"/>
 </extension>
 
 </plugin>