official jdt.core v_312 -- this is the 2.1 release with one bug fix for
the IBM JIT
diff --git a/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties b/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
index ed7de3e..64683ba 100644
--- a/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
+++ b/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/messages.properties
@@ -11,7 +11,7 @@
 ### JavaBatchCompiler messages.
 
 ### compiler version id
-compiler.version = 0.308
+compiler.version = 0.312
 ### scanning
 scanning.start = Collecting source files inside {0}
 
diff --git a/org.eclipse.jdt.core/buildnotes_jdt-core.html b/org.eclipse.jdt.core/buildnotes_jdt-core.html
index 9405bd3..a113737 100644
--- a/org.eclipse.jdt.core/buildnotes_jdt-core.html
+++ b/org.eclipse.jdt.core/buildnotes_jdt-core.html
@@ -15,7 +15,7 @@
 <table border=0 cellspacing=5 cellpadding=2 width="100%" >
   <tr> 
     <td align=left width="72%">
-      <font face="Verdana, Arial, Helvetica" size="+3"><b>jdt core - build notes 2.1 stream </font>
+      <font face="Verdana, Arial, Helvetica" size="+3"><b>jdt core - build notes 2.1 stream</b></font>
       <br><font face="Arial, Helvetica, sans-serif" size="-2" color="#8080ff">java development tooling core</font></td>
   </tr>
 	<tr><td>&nbsp;</td></tr>
@@ -24,7 +24,7 @@
 	  <font face="Arial, Helvetica, sans-serif" size="-1">
 	  Here are the build notes for the Eclipse JDT/Core plug-in project 
 	  <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/jdt-core-home/main.html"><b>org.eclipse.jdt.core</b></a>, 
-	  describing bug resolution and substantial changes in the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core"><b>HEAD</b></a> branch. 
+	  describing <a href="http://bugs.eclipse.org/bugs" target=new>bug</a> resolution and substantial changes in the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core"><b>HEAD</b></a> branch. 
 	  This present document covers all changes since Release 2.0, changes which occurred up to Release 2.0 can be found
 	  in <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.jdt.core/notes/R20_buildnotes_jdt-core.html">build notes R2.0</a>.
 	  </font>
@@ -35,8 +35,105 @@
 <p><hr><h1>
 Eclipse Platform Build Notes&nbsp;<br>
 Java Development Tooling Core</h1>
+Eclipse SDK 2.1 Build - 31st March 2003
+<br>Project org.eclipse.jdt.core v_312
+<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=35831">35831</a>
+NPE navigating references using links
+
+<h3>Problem Reports Closed</h3>
+
+
+<p><hr><h1>
+Eclipse Platform Build Notes&nbsp;<br>
+Java Development Tooling Core</h1>
+Eclipse SDK 2.1 Build - 27th March 2003
+<br>Project org.eclipse.jdt.core v_311 - 2.1 RELEASE
+<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=35731">35731</a>
+Unable to build problem
+
+<h3>Problem Reports Closed</h3>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35754">35754</a>
+NPE in Scope.getTypeOrPackage
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35298">35298</a>
+NPE: Internal compiler error
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31497">31497</a>
+Internal compiler error
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35476">35476</a>
+Null pointer exception in org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34962">34962</a>
+NPE in Scope.getTypeOrPackage
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35651">35651</a>
+"Unused private types, methods or fields" should recognize serialVersionUID.
+
+<p><hr><h1>
+Eclipse Platform Build Notes&nbsp;<br>
+Java Development Tooling Core</h1>
+Eclipse SDK 2.1 Build - 26th March 2003
+<br>Project org.eclipse.jdt.core v_310
+<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=24240">24240</a>
+DOC - JavaConventions.validateIdentifier: must NOT have the same spelling as ...
+
+<h3>Problem Reports Closed</h3>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35658">35658</a>
+Cannot resolve Inner Class reference
+
+<p><hr><h1>
+Eclipse Platform Build Notes&nbsp;<br>
+Java Development Tooling Core</h1>
+Eclipse SDK 2.1 Build - 25th March 2003
+<br>Project org.eclipse.jdt.core v_309
+<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=35654">35654</a>
+spec bug in CompilationUnitSorter.sort
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35561">35561</a>
+No source found if attached file contains 2 potential root paths
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35352">35352</a>
+NPE when attaching source
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35456">35456</a>
+The Eclipse compiler generates classes that throw a VerifyError
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35473">35473</a>
+NPE when exiting Eclipse
+
+<h3>Problem Reports Closed</h3>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35510">35510</a>
+Assigning code to a library that is within a jarfile
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35642">35642</a>
+NPE in index manager during shutdown
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35608">35608</a>
+NPE on shutdown
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35437">35437</a>
+can't call protected methods from derived classes in other pkg
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35396">35396</a>
+Compiler error in RC2
+
+<p><hr><h1>
+Eclipse Platform Build Notes&nbsp;<br>
+Java Development Tooling Core</h1>
 Eclipse SDK 2.1 Build - 20th March 2003
-<br>Project org.eclipse.jdt.core v_308
+<br>Project org.eclipse.jdt.core v_308 - 2.1 RELEASE CANDIDATE 3a
 <h2>
 What's new in this drop</h2>
 <ul>
@@ -47,11 +144,6 @@
 Index update request can be incorrectly handled
 
 <h3>Problem Reports Closed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35263">35263</a>
-Eclipse crashes when opening Hierarchy view for java.lang.Eception
-<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=35298">35298</a>
-NPE: Internal compiler error
-
 
 <p><hr><h1>
 Eclipse Platform Build Notes&nbsp;<br>
@@ -132,9 +224,7 @@
 Save All failed with unhelpful error message.
 
 <h3>Problem Reports Closed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34962">34962</a>
-NPE in Scope.getTypeOrPackage
-<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34802">34802</a>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34802">34802</a>
 instanceof produce InternalCompilerError on MacOSX with JDK1.4.1
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=34734">34734</a>
 internal compiler error ArrayIndexOutOfBound w/ 1.4.1 release
@@ -673,8 +763,6 @@
 ArrayOutOfBoundsException during shutdown
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=30609">30609</a>
 Output folder scrubbing
-<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31497">31497</a>
-Internal compiler error
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31591">31591</a>
 abstract method in base class, defined in a subclass results in compile error
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=31605">31605</a>
@@ -1348,7 +1436,7 @@
 		one of the proposed prefixes.<br>
 		<ul>
 		<li>option id: "org.eclipse.jdt.core.codeComplete.fieldPrefixes"</li>
-		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where <prefix> is a String without any wild-card</li>
+		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card</li>
 		<li>default: ""</li>
 	 	</ul>
 	</li>
@@ -1357,7 +1445,7 @@
 		one of the proposed prefixes.<br>
 		<ul>
 		<li>option id: "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"</li>
-		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where <prefix> is a String without any wild-card</li>
+		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card</li>
 		<li>default: ""</li>
 	 	</ul>
 	</li>
@@ -1366,7 +1454,7 @@
 		one of the proposed prefixes.<br>
 		<ul>
 		<li>option id: "org.eclipse.jdt.core.codeComplete.localPrefixes"</li>
-		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where <prefix> is a String without any wild-card</li>
+		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card</li>
 		<li>default: ""</li>
 	 	</ul>
 	</li>
@@ -1375,7 +1463,7 @@
 		one of the proposed prefixes.<br>
 		<ul>
 		<li>option id: "org.eclipse.jdt.core.codeComplete.argumentPrefixes"</li>
-		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where <prefix> is a String without any wild-card</li>
+		<li>possible values: { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card</li>
 		<li>default: ""</li>
 	 	</ul>
 	</li>
@@ -1384,7 +1472,7 @@
 		one of the proposed suffixes.<br>
 		<ul>
 		<li>option id: "org.eclipse.jdt.core.codeComplete.fieldSuffixes"</li>
-		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where <suffix> is a String without any wild-card </li>
+		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card </li>
 		<li>default: ""</li>
 	 	</ul>
 	</li>
@@ -1393,7 +1481,7 @@
 		one of the proposed suffixes.<br>
 		<ul>
 		<li>option id: "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"</li>
-		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where <suffix> is a String without any wild-card </li>
+		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card </li>
 		<li>default: ""</li>
 	 	</ul>
 	</li>
@@ -1402,7 +1490,7 @@
 		one of the proposed suffixes.<br>
 		<ul>
 		<li>option id: "org.eclipse.jdt.core.codeComplete.localSuffixes"</li>
-		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where <suffix> is a String without any wild-card </li>
+		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card </li>
 		<li>default: ""</li>
 	 	</ul>
 	</li>
@@ -1411,7 +1499,7 @@
 		one of the proposed suffixes.<br>
 		<ul>
 		<li>option id: "org.eclipse.jdt.core.codeComplete.argumentSuffixes"</li>
-		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where <suffix> is a String without any wild-card </li>
+		<li>possible values: { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card </li>
 		<li>default: ""</li>
 	 	</ul>
 	</li>
@@ -2763,7 +2851,7 @@
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23597">23597</a>
 cannot resolve a call to a protected superclass method
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23573">23573</a>
-AST: clone & source locations
+AST: clone &amp; source locations
 
 <h3>Problem Reports Closed</h3>
 <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22618">22618</a>
@@ -2920,7 +3008,7 @@
 *    one of the corresponding tag inside any comment in Java source code.
 *    Generated task messages will include the tag, and range until the next line separator or comment ending, and will be trimmed.
 *     - option id:			"org.eclipse.jdt.core.taskTags"
-*     - possible values:	{ "<tag>[,<tag>]*" } where <tag> is a String without any wild-card 
+*     - possible values:	{ "&lt;tag&gt;[,&lt;tag&gt;]*" } where &lt;tag&gt; is a String without any wild-card 
 *     - default:			""
 </pre>	 
  </li>
@@ -2969,7 +3057,7 @@
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22635">22635</a>
 recompile doesn't happen
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23118">23118</a>
-AST: BreakStatement & ContinueStatement: wrong length
+AST: BreakStatement &amp; ContinueStatement: wrong length
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=23048">23048</a>
 DOM - lazy initialization of empty loop bodies causes binding resolution to fail
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=22203">22203</a>
@@ -3149,7 +3237,7 @@
 
 <h3>Problem Reports Fixed</h3>
 <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21606">21606</a>
-ImageBuilder deletes & adds rather than overwriting
+ImageBuilder deletes &amp; adds rather than overwriting
 
 <h3>Problem Reports Closed</h3>
 <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21282">21282</a>
@@ -3175,7 +3263,7 @@
 <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21580">21580</a>
 VerifyError in 1.4 compliant mode
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=21557">21557</a>
-VM bug prevents valid Java code to be executed on VM < 1.3.1
+VM bug prevents valid Java code to be executed on VM &lt; 1.3.1
 
 <h3>Problem Reports Closed</h3>
 
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
index a90e13d..7bc1be5 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
@@ -956,7 +956,7 @@
 	 	e.g.  int.[cursor]
 	 	This is because the grammar does not allow any (empty) identifier to follow
 	 	a base type. We thus have to manually force the identifier to be consumed
-	 	(i.e. pushed).
+	 	(that is, pushed).
 	 */
 	if (assistIdentifier() == null && this.currentToken == TokenNameIdentifier) { // Test below copied from CompletionScanner.getCurrentIdentifierSource()
 		if (cursorLocation < this.scanner.startPosition && this.scanner.currentPosition == this.scanner.startPosition){ // fake empty identifier got issued
@@ -2369,7 +2369,7 @@
 			&& (!(referenceContext instanceof CompilationUnitDeclaration) 
 				|| isIndirectlyInsideFieldInitialization())) {
 
-			/*	disabled since does not handle possible field/message refs, i.e. Obj[ASSIST HERE]ect.registerNatives()		    
+			/*	disabled since does not handle possible field/message refs, that is, Obj[ASSIST HERE]ect.registerNatives()		    
 			// consume extra tokens which were part of the qualified reference
 			//   so that the replaced source comprises them as well 
 			if (this.assistNode instanceof NameReference){
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
index 85cb5af..71991c8 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
@@ -32,7 +32,7 @@
 		
 	/* Source positions of the completedIdentifier
 	 * if inside actual identifier, end goes to the actual identifier 
-	 * end, i.e. beyond cursor location
+	 * end, in other words, beyond cursor location
 	 */
 	public int completedIdentifierStart = 0;
 	public int completedIdentifierEnd = -1;
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/InvalidCursorLocation.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/InvalidCursorLocation.java
index fb1f60f..c2132ad 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/InvalidCursorLocation.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/InvalidCursorLocation.java
@@ -12,7 +12,7 @@
 
 /**
  * Thrown whenever cursor location is not inside a consistent token
- * i.e. inside a string, number, unicode, comments etc...
+ * for example: inside a string, number, unicode, comments etc...
  */
 public class InvalidCursorLocation extends RuntimeException {
 
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/CharOperation.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/CharOperation.java
index 915f387..5903cfc 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/CharOperation.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/CharOperation.java
@@ -210,14 +210,14 @@
 	}
 
 	/**
-	 * Compare the contents of the two arrays array and prefix and answers:
+	 * Compares the contents of the two arrays array and prefix. Returns
 	 * <ul>
 	 * <li>zero if the array starts with the prefix contents</li>
 	 * <li>the difference between the first two characters that are not equal </li>
 	 * <li>one if array length is lower than the prefix length and that the prefix starts with the 
 	 * array contents.</li>
 	 * </ul>
-	 * <br>
+	 * <p>
 	 * For example:
 	 * <ol>
 	 * <li><pre>
@@ -257,6 +257,7 @@
 	 * </pre>
 	 * </li>
 	 * </ol>
+	 * </p>
 	 * 
 	 * @param array the given array
 	 * @param prefix the given prefix
@@ -465,39 +466,59 @@
 	 * It answers null if the three arrays are null.
 	 * If the first array is null, then it answers the concatenation of second and third inserting
 	 * the sep2 character between them.
-	 * If the second array is null, then the first array is returned.
+	 * If the second array is null, then it answers the concatenation of first and third inserting
+	 * the sep1 character between them.
+	 * If the third array is null, then it answers the concatenation of first and second inserting
+	 * the sep1 character between them.
 	 * <br>
 	 * <br>
 	 * For example:
 	 * <ol>
 	 * <li><pre>
 	 *    first = null
+	 *    sep1 = '/'
 	 *    second = { 'a' }
-	 *    separator = '/'
-	 *    => result = { ' a' }
+	 *    sep2 = ':'
+	 *    third = { 'b' }
+	 *    => result = { ' a' , ':', 'b' }
 	 * </pre>
 	 * </li>
 	 * <li><pre>
-	 *    first = { ' a' }
+	 *    first = { 'a' }
+	 *    sep1 = '/'
 	 *    second = null
-	 *    separator = '/'
-	 *    => result = { ' a' }
+	 *    sep2 = ':'
+	 *    third = { 'b' }
+	 *    => result = { ' a' , '/', 'b' }
 	 * </pre>
 	 * </li>
 	 * <li><pre>
-	 *    first = { ' a' }
-	 *    second = { ' b' }
-	 *    separator = '/'
+	 *    first = { 'a' }
+	 *    sep1 = '/'
+	 *    second = { 'b' }
+	 *    sep2 = ':'
+	 *    third = null
 	 *    => result = { ' a' , '/', 'b' }
 	 * </pre>
 	 * </li>
+	 * <li><pre>
+	 *    first = { 'a' }
+	 *    sep1 = '/'
+	 *    second = { 'b' }
+	 *    sep2 = ':'
+	 *    third = { 'c' }
+	 *    => result = { ' a' , '/', 'b' , ':', 'c' }
+	 * </pre>
+	 * </li>
 	 * </ol>
 	 * 
 	 * @param first the first array to concatenate
+	 * @param sep1 the character to insert
 	 * @param second the second array to concatenate
-	 * @param separator the character to insert
-	 * @return the concatenation of the two arrays inserting the separator character 
-	 * between the two arrays , or null if the two arrays are null.
+	 * @param sep2 the character to insert
+	 * @param third the second array to concatenate
+	 * @return the concatenation of the three arrays inserting the sep1 character between the 
+	 * two arrays and sep2 between the last two.
 	 */
 	public static final char[] concat(
 		char[] first,
@@ -773,9 +794,8 @@
 	 * 
 	 * @param character the character to search
 	 * @param array the array in which the search is done
-	 * @exception NullPointerException if array is null.
-	 * 
 	 * @return true if the array contains an occurrence of character, false otherwise.
+	 * @exception NullPointerException if array is null.
 	 */
 	public static final boolean contains(char character, char[][] array) {
 		for (int i = array.length; --i >= 0;) {
@@ -810,9 +830,8 @@
 	 * 
 	 * @param character the character to search
 	 * @param array the array in which the search is done
-	 * @exception NullPointerException if array is null.
-	 * 
 	 * @return true if the array contains an occurrence of character, false otherwise.
+	 * @exception NullPointerException if array is null.
 	 */
 	public static final boolean contains(char character, char[] array) {
 		for (int i = array.length; --i >= 0;)
@@ -863,9 +882,9 @@
 	 * 
 	 * @param array the array to check
 	 * @param toBeFound the array to find
-	 * @exception NullPointerException if array is null or toBeFound is null
 	 * @return true if array ends with the sequence of characters contained in toBeFound, 
 	 * otherwise false.
+	 * @exception NullPointerException if array is null or toBeFound is null
 	 */
 	public static final boolean endsWith(char[] array, char[] toBeFound) {
 		int i = toBeFound.length;
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java
index 8fb308e..195517d 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java
@@ -144,7 +144,7 @@
 	/**
 	 * Problem Categories
 	 * The high bits of a problem ID contains information about the category of a problem. 
-	 * e.g. (problemID & TypeRelated) != 0, indicates that this problem is type related.
+	 * For example, (problemID & TypeRelated) != 0, indicates that this problem is type related.
 	 * 
 	 * A problem category can help to implement custom problem filters. Indeed, when numerous problems
 	 * are listed, focusing on import related problems first might be relevant.
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java
index 56aa11c..f019b00 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java
@@ -2498,7 +2498,7 @@
 	/**
 	 * INTERNAL USE-ONLY
 	 * That method generates the header of a code attribute.
-	 * - the index inside the constant pool for the attribute name (i.e.&nbsp;Code)
+	 * - the index inside the constant pool for the attribute name ("Code")
 	 * - leave some space for attribute_length(4), max_stack(2), max_locals(2), code_length(4).
 	 */
 	public void generateCodeAttributeHeader() {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IDocumentElementRequestor.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IDocumentElementRequestor.java
index b9cd201..c6dff82 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IDocumentElementRequestor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IDocumentElementRequestor.java
@@ -233,12 +233,12 @@
  * @param type - the name of the field type
  * @param typeStart - a source position corresponding to the start of the fields type
  * @param typeEnd - a source position corresponding to the end of the fields type
- * @param typeDimensionCount - the array dimension indicated on the type, i.e. int[] v
+ * @param typeDimensionCount - the array dimension indicated on the type (for example, 'int[] v')
  * @param name - the name of this constructor
  * @param nameStart - a source position corresponding to the first character of the name
  * @param nameEnd - a source position corresponding to the last character of the name
  * @param extendedTypeDimensionCount - the array dimension indicated on the variable,
- *  i.e. int v[]
+ *  (for example, 'int v[]')
  * @param extendedTypeDimnesionEnd - a source position corresponding to the end of
  *  the extened type dimension. This position should be -1 in case there is no extended
  *  dimension for the type.
@@ -313,7 +313,7 @@
  * @param returnTypeEnd - a source position corresponding to the last character
  *  of the return type
  * @param returnTypeDimensionCount - the array dimension count as supplied on the
- *  return type, i.e. public int[] foo() {}
+ *  return type (for example, 'public int[] foo() {}')
  * @param name - the name of this constructor
  * @param nameStart - a source position corresponding to the first character of the name
  * @param nameEnd - a source position corresponding to the last character of the name
@@ -326,7 +326,7 @@
  * @param parametersEnd - a source position corresponding to the last character of the
  *  parameter list
  * @param extendedReturnTypeDimensionCount - the array dimension count as supplied on the
- *  end of the parameter list, i.e. public int foo()[] {}
+ *  end of the parameter list (for example, 'public int foo()[] {}')
  * @param extendedReturnTypeDimensionEnd - a source position corresponding to the last character
  *  of the extended return type dimension. This position should be -1 in case there is no extended
  *  dimension for the type.
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IErrorHandlingPolicy.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IErrorHandlingPolicy.java
index d5e0459..c48b12c 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IErrorHandlingPolicy.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/IErrorHandlingPolicy.java
@@ -14,7 +14,7 @@
  * Handler policy is responsible to answer the 2 following
  * questions:
  * 1. should the handler stop on first problem which appears
- *	to be a real error (i.e. not a warning),
+ *	to be a real error (that is, not a warning),
  * 2. should it proceed once it has gathered all problems
  *
  * The intent is that one can supply its own policy to implement 
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Argument.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Argument.java
index f1a03b2..cca9639 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Argument.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Argument.java
@@ -59,7 +59,7 @@
 			scope.problemReporter().redefineArgument(this);
 			return null;
 		}
-		binding = new LocalVariableBinding(this, tb, modifiers, false); // argument decl, but local var  (i.e. isArgument = false)
+		binding = new LocalVariableBinding(this, tb, modifiers, false); // argument decl, but local var  (where isArgument = false)
 		scope.addLocalVariable(binding);
 		binding.constant = NotAConstant;
 		return tb;
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java
index 6572aa3..2bb8c57 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java
@@ -61,7 +61,7 @@
 		case '\\' :
 			value = '\\';
 			break;
-		default : //octal (welled formed, i.e. ended by a ' )
+		default : //octal (well-formed: ended by a ' )
 			int number = Character.getNumericValue(digit);
 			if ((digit = source[3]) != '\'')
 				number = (number * 8) + Character.getNumericValue(digit);
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
index 75276ea..1dd18cd 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
@@ -85,7 +85,7 @@
 
 	/**
 	 * Code generation for a field declaration:
-	 *	i.e.&nbsp;normal assignment to a field 
+	 *	   standard assignment to a field 
 	 *
 	 * @param currentScope org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.eclipse.jdt.internal.compiler.codegen.CodeStream
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldReference.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldReference.java
index f0a949b..e499034 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldReference.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/FieldReference.java
@@ -307,7 +307,7 @@
 		//if ref==null then indexInQualification==0 AND implicitReceiver == false. This case is a 
 		//degenerated case where a fake reference field (null) 
 		//is associted to a real FieldBinding in order 
-		//to allow its constant computation using the regular path (i.e. find the fieldDeclaration
+		//to allow its constant computation using the regular path (in other words, find the fieldDeclaration
 		//and proceed to its type resolution). As implicitReceiver is false, no error reporting
 		//against ref will be used ==> no nullPointerException risk .... 
 
@@ -518,8 +518,8 @@
 
 	public void setDepth(int depth) {
 
+		bits &= ~DepthMASK; // flush previous depth if any			
 		if (depth > 0) {
-			bits &= ~DepthMASK; // flush previous depth if any			
 			bits |= (depth & 0xFF) << DepthSHIFT; // encoded on 8 bits
 		}
 	}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Initializer.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Initializer.java
index c949513..c196460 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Initializer.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/Initializer.java
@@ -37,8 +37,8 @@
 	}
 
 	/**
-	 * Code generation for a non-static initializer.
-	 *	i.e.&nbsp;normal block code gen
+	 * Code generation for a non-static initializer: 
+	 *    standard block code gen
 	 *
 	 * @param currentScope org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.eclipse.jdt.internal.compiler.codegen.CodeStream
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java
index daed2c3..f739565 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java
@@ -78,7 +78,7 @@
 
 	/**
 	 * Code generation for a local declaration:
-	 *	i.e.&nbsp;normal assignment to a local variable + unused variable handling 
+	 *	  normal assignment to a local variable + unused variable handling 
 	 */
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MessageSend.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MessageSend.java
index 3e7cff4..6c388b5 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MessageSend.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MessageSend.java
@@ -224,7 +224,7 @@
 		return binding == null ? null : binding.returnType;
 	}
 	if (!binding.isStatic()) {
-		// the "receiver" must not be a type, i.e. a NameReference that the TC has bound to a Type
+		// the "receiver" must not be a type, in other words, a NameReference that the TC has bound to a Type
 		if (receiver instanceof NameReference 
 				&& (((NameReference) receiver).bits & BindingIds.TYPE) != 0) {
 			scope.problemReporter().mustUseAStaticMethod(this, binding);
@@ -258,8 +258,8 @@
 	this.qualifyingType = receiverType;
 }
 public void setDepth(int depth) {
+	bits &= ~DepthMASK; // flush previous depth if any
 	if (depth > 0) {
-		bits &= ~DepthMASK; // flush previous depth if any
 		bits |= (depth & 0xFF) << DepthSHIFT; // encoded on 8 bits
 	}
 }
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/NameReference.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/NameReference.java
index 9dde5b3..6843358 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/NameReference.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/NameReference.java
@@ -51,8 +51,8 @@
 	this.actualReceiverType = receiverType;
 }
 public void setDepth(int depth) {
+	bits &= ~DepthMASK; // flush previous depth if any			
 	if (depth > 0) {
-		bits &= ~DepthMASK; // flush previous depth if any			
 		bits |= (depth & 0xFF) << DepthSHIFT; // encoded on 8 bits
 	}
 }
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java
index 159c518..d50e6de 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java
@@ -1869,7 +1869,7 @@
 			} else {
 				Object[] emulationPath = currentScope.getEmulationPath(
 					syntheticArgType, 
-					false /*not only exact match (i.e. allow compatible)*/,
+					false /*not only exact match (that is, allow compatible)*/,
 					targetType.isAnonymousType());
 				this.generateOuterAccess(emulationPath, invocationSite, syntheticArgType, currentScope);
 			}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IDependent.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IDependent.java
index b456c83..04c4475 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IDependent.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/IDependent.java
@@ -11,7 +11,7 @@
 package org.eclipse.jdt.internal.compiler.env;
 
 /**
- * This represents the target (i.e.&nbsp;the file) of a type dependency.
+ * This represents the target file of a type dependency.
  *
  * All implementors of this interface are containers for types or types
  * themselves which must be able to identify their source file name
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/ReferenceContext.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/ReferenceContext.java
index d5d04a3..ec458c0 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/ReferenceContext.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/ReferenceContext.java
@@ -12,7 +12,7 @@
 /*
  * Implementors are valid compilation contexts from which we can
  * escape in case of error:
- *	i.e. method | type | compilation unit
+ *	For example: method, type or compilation unit.
  */
 
 import org.eclipse.jdt.internal.compiler.CompilationResult;
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java
index 21d0448..452c445 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java
@@ -143,7 +143,7 @@
 
 	/* Answer true if the receiver is suitable for assigning final blank fields.
 	 *
-	 * i.e. is inside an initializer, a constructor or a clinit 
+	 * in other words, it is inside an initializer, a constructor or a clinit 
 	 */
 	public final boolean allowBlankFinalFieldAssignment(FieldBinding binding) {
 
@@ -691,11 +691,11 @@
 											invocationSite.setDepth(depth);
 											invocationSite.setActualReceiverType(enclosingType);
 										}
-										// return the fieldBinding if it is not declared in a superclass of the scope's binding (i.e. "inherited")
+										// return the fieldBinding if it is not declared in a superclass of the scope's binding (that is, inherited)
 										return insideProblem == null ? fieldBinding : insideProblem;
 									}
 									if (foundField.isValidBinding())
-										// if a valid field was found, complain when another is found in an 'immediate' enclosing type (ie. not inherited)
+										// if a valid field was found, complain when another is found in an 'immediate' enclosing type (that is, not inherited)
 										if (foundField.declaringClass != fieldBinding.declaringClass)
 											// ie. have we found the same field - do not trust field identity yet
 											return new ProblemFieldBinding(
@@ -1129,14 +1129,14 @@
 										invocationSite.setDepth(depth);
 										invocationSite.setActualReceiverType(receiverType);
 									}
-									// return the methodBinding if it is not declared in a superclass of the scope's binding (i.e. "inherited")
+									// return the methodBinding if it is not declared in a superclass of the scope's binding (that is, inherited)
 									if (fuzzyProblem != null)
 										return fuzzyProblem;
 									if (insideProblem != null)
 										return insideProblem;
 									return methodBinding;
 								}
-								// if a method was found, complain when another is found in an 'immediate' enclosing type (ie. not inherited)
+								// if a method was found, complain when another is found in an 'immediate' enclosing type (that is, not inherited)
 								// NOTE: Unlike fields, a non visible method hides a visible method
 								if (foundMethod.declaringClass != methodBinding.declaringClass)
 									// ie. have we found the same method - do not trust field identity yet
@@ -1290,7 +1290,7 @@
 
 	/* Answer the reference type of this scope.
 	 *
-	 * i.e. the nearest enclosing type of this scope.
+	 * It is the nearest enclosing type of this scope.
 	 */
 	public TypeDeclaration referenceType() {
 
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
index 665d35e..8108dc3 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
@@ -859,8 +859,7 @@
 	}
 
 	/* Answer the reference type of this scope.
-	*
-	* i.e. the nearest enclosing type of this scope.
+	* It is the nearest enclosing type of this scope.
 	*/
 	public TypeDeclaration referenceType() {
 		return referenceContext;
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilerModifiers.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilerModifiers.java
index 73e7658..d9d06aa 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilerModifiers.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/CompilerModifiers.java
@@ -23,7 +23,7 @@
 	final int AccIsConstantValue = 0x80000;	 // bit20
 	final int AccDefaultAbstract = 0x80000; // bit20
 	// bit21 - IConstants.AccDeprecated
-	final int AccDeprecatedImplicitly = 0x200000; // bit22 ie. is deprecated itself or contained by a deprecated type
+	final int AccDeprecatedImplicitly = 0x200000; // bit22 to record whether deprecated itself or contained by a deprecated type
 	final int AccAlternateModifierProblem = 0x400000; // bit23
 	final int AccModifierProblem = 0x800000; // bit24
 	final int AccSemicolonBody = 0x1000000; // bit25
@@ -34,5 +34,5 @@
 	final int AccVisibilityMASK = AccPublic | AccProtected | AccPrivate;
 	
 	final int AccOverriding = 0x10000000; // bit29 to record fact a method overrides another one
-	final int AccImplementing = 0x20000000; // bit30 to record fact a method implements another one (i.e. is concrete and overrides an abstract one)
+	final int AccImplementing = 0x20000000; // bit30 to record fact a method implements another one (it is concrete and overrides an abstract one)
 }
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
index 1afbe3b..d64d628 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
@@ -438,7 +438,7 @@
 	if (referenceBinding instanceof UnresolvedReferenceBinding)
 		referenceBinding = ((UnresolvedReferenceBinding) referenceBinding).resolve(this);
 
-	// compoundName refers to a nested type incorrectly (i.e. package1.A$B)
+	// compoundName refers to a nested type incorrectly (for example, package1.A$B)
 	if (referenceBinding.isNestedType())
 		return new ProblemReferenceBinding(compoundName, InternalNameProvided);
 	else
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
index fc2b75b..160f686 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
@@ -260,7 +260,7 @@
 }
 
 /* Answer true if the receiver is implementing another method
- * i.e. is overriding and is concrete and overriden is abstract
+ * in other words, it is overriding and concrete, and overriden method is abstract
  * Only set for source methods
 */
 public final boolean isImplementing() {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
index f8bf377..93def53 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
@@ -445,7 +445,7 @@
 
 	/* Answer the reference type of this scope.
 	*
-	* i.e. the nearest enclosing type of this scope.
+	* It is the nearest enclosing type of this scope.
 	*/
 	public TypeDeclaration referenceType() {
 
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
index bbebdf5..b5982f1 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java
@@ -13,6 +13,7 @@
 import org.eclipse.jdt.core.compiler.CharOperation;
 import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
 import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
+import org.eclipse.jdt.internal.compiler.ast.ImportReference;
 import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
@@ -102,6 +103,14 @@
 			return new ArrayBinding(type, dimension);
 	}
 
+	public final ClassScope enclosingClassScope() {
+		Scope scope = this;
+		while ((scope = scope.parent) != null) {
+			if (scope instanceof ClassScope) return (ClassScope)scope;
+		}
+		return null; // may answer null if no type around
+	}
+
 	public final MethodScope enclosingMethodScope() {
 		Scope scope = this;
 		while ((scope = scope.parent) != null) {
@@ -1030,7 +1039,6 @@
 	/* Internal use only 
 	*/
 	final Binding getTypeOrPackage(char[] name, int mask) {
-		
 		Scope scope = this;
 		ReferenceBinding foundType = null;
 		if ((mask & TYPE) == 0) {
@@ -1068,7 +1076,7 @@
 									// found a valid type in the 'immediate' scope (ie. not inherited)
 									// OR in 1.4 mode (inherited shadows enclosing)
 									if (foundType == null)
-										return memberType;
+										return memberType; 
 									if (foundType.isValidBinding())
 										// if a valid type was found, complain when another is found in an 'immediate' enclosing type (ie. not inherited)
 										if (foundType != memberType)
@@ -1096,6 +1104,7 @@
 
 		// at this point the scope is a compilation unit scope
 		CompilationUnitScope unitScope = (CompilationUnitScope) scope;
+		PackageBinding currentPackage = unitScope.fPackage; 
 		// ask for the imports + name
 		if ((mask & TYPE) != 0) {
 			// check single type imports.
@@ -1107,7 +1116,8 @@
 					if (!typeImport.onDemand) {
 						if (CharOperation.equals(typeImport.compoundName[typeImport.compoundName.length - 1], name)) {
 							if (unitScope.resolveSingleTypeImport(typeImport) != null) {
-								if (typeImport.reference != null) typeImport.reference.used = true;
+								ImportReference importReference = typeImport.reference;
+								if (importReference != null) importReference.used = true;
 								return typeImport.resolvedImport; // already know its visible
 							}
 						}
@@ -1115,8 +1125,8 @@
 				}
 			}
 			// check if the name is in the current package, skip it if its a sub-package
-			unitScope.recordReference(unitScope.fPackage.compoundName, name);
-			Binding binding = unitScope.fPackage.getTypeOrPackage(name);
+			unitScope.recordReference(currentPackage.compoundName, name);
+			Binding binding = currentPackage.getTypeOrPackage(name);
 			if (binding instanceof ReferenceBinding) return binding; // type is always visible to its own package
 
 			// check on demand imports
@@ -1127,12 +1137,12 @@
 					ImportBinding someImport = imports[i];
 					if (someImport.onDemand) {
 						Binding resolvedImport = someImport.resolvedImport;
-						ReferenceBinding temp =
-							(resolvedImport instanceof PackageBinding)
-								? findType(name, (PackageBinding) resolvedImport, unitScope.fPackage)
+						ReferenceBinding temp = resolvedImport instanceof PackageBinding
+								? findType(name, (PackageBinding) resolvedImport, currentPackage)
 								: findDirectMemberType(name, (ReferenceBinding) resolvedImport);
 						if (temp != null && temp.isValidBinding()) {
-							if (someImport.reference != null) someImport.reference.used = true;
+							ImportReference importReference = someImport.reference;
+							if (importReference != null) importReference.used = true;
 							if (foundInImport)
 								// Answer error binding -- import on demand conflict; name found in two import on demand packages.
 								return new ProblemReferenceBinding(name, Ambiguous);
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
index 4d99fb1..c76fec5 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
@@ -398,8 +398,8 @@
 }
 public final void arrayInitializer(int length) {
 	//length is the size of the array Initializer
-	//expressionPtr points on the last elt of the arrayInitializer
-	//i.e. it has not been decremented yet.
+	//expressionPtr points on the last elt of the arrayInitializer, 
+	// in other words, it has not been decremented yet.
 
 	ArrayInitializer ai = new ArrayInitializer();
 	if (length != 0) {
@@ -6661,7 +6661,7 @@
 /*
  * Move checkpoint location (current implementation is moving it by one token)
  *
- * Answers true if successfully moved checkpoint (i.e. did not attempt to move it
+ * Answers true if successfully moved checkpoint (in other words, it did not attempt to move it
  * beyond end of file).
  */
 protected boolean moveRecoveryCheckpoint() {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
index c98f487..75ccba0 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
@@ -411,7 +411,7 @@
  * Line numbers are 1-based, and relative to the scanner initialPosition. 
  * Character positions are 0-based.
  *
- * e.g.	getLineStart(1) --> 0	i.e. first line starts at character 0.
+ * e.g.	getLineStart(1) --> 0	indicates that the first line starts at character 0.
  *
  * In case the given line number is inconsistent, answers -1.
  */
@@ -2800,8 +2800,8 @@
 }
 public int scanNumber(boolean dotPrefix) throws InvalidInputException {
 
-	//when entering this method the currentCharacter is the firt
-	//digit of the number , i.e. it may be preceeded by a . when
+	//when entering this method the currentCharacter is the first
+	//digit of the number. It may be preceeded by a '.' when
 	//dotPrefix is true
 
 	boolean floating = dotPrefix;
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
index 5591423..e4869db 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
@@ -25,7 +25,7 @@
  * 
  * Disclaimer : These constant values are generated automatically using a Java 
  * grammar, therefore their actual values are subject to change if new keywords 
- * were added to the language (i.e. 'assert' keyword in 1.4).
+ * were added to the language (for instance, 'assert' is a keyword in 1.4).
  */
 public interface TerminalTokens {
 
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties
index d83147c..1882fd4 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties
@@ -161,7 +161,7 @@
 225 = Invalid parenthesized expression
 
 250 = Unexpected end of file
-251 = Invalid hexa literal number
+251 = Invalid hex literal number
 252 = Invalid octal literal number
 253 = Invalid character constant
 254 = Invalid escape sequence (valid ones are  \\b  \\t  \\n  \\f  \\r  \\"  \\''  \\\\ )
diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java
index bd968b8..8279887 100644
--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java
+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/CompilationUnitResolver.java
@@ -38,7 +38,7 @@
 	 *  @param environment org.eclipse.jdt.internal.compiler.api.env.INameEnvironment
 	 *      Environment used by the compiler in order to resolve type and package
 	 *      names. The name environment implements the actual connection of the compiler
-	 *      to the outside world (e.g. in batch mode the name environment is performing
+	 *      to the outside world (for example, in batch mode the name environment is performing
 	 *      pure file accesses, reuse previous build state or connection to repositories).
 	 *      Note: the name environment is responsible for implementing the actual classpath
 	 *            rules.
diff --git a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java
index cd901bf..c4cf367 100644
--- a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java
+++ b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java
@@ -251,7 +251,7 @@
 		}
 	}
 	if (!binding.isStatic()) {
-		// the "receiver" must not be a type, i.e. a NameReference that the TC has bound to a Type
+		// the "receiver" must not be a type, in other words, a NameReference that the TC has bound to a Type
 		if (receiver instanceof NameReference) {
 			if ((((NameReference) receiver).bits & BindingIds.TYPE) != 0) {
 				scope.problemReporter().mustUseAStaticMethod(this, binding);
diff --git a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
index c5703ec..e2bcb4b 100644
--- a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
+++ b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
@@ -728,7 +728,7 @@
 				// found a valid method in the 'immediate' scope (ie. not inherited)
 				// OR the receiverType implemented a method with the correct name
 				if (foundMethod == null) {
-					// return the methodBinding if it is not declared in a superclass of the scope's binding (i.e. "inherited")
+					// return the methodBinding if it is not declared in a superclass of the scope's binding (it is inherited)
 					if (fuzzyProblem != null)
 						return fuzzyProblem;
 					if (insideProblem != null)
diff --git a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java
index 7813c74..aa89b5c 100644
--- a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java
+++ b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java
@@ -37,7 +37,7 @@
 
 /**
  * A single name reference inside a code snippet can denote a field of a remote
- * receiver object (i.e.&nbsp;the one of the context in the stack frame).
+ * receiver object (that is, the receiver of the context in the stack frame).
  */
 public class CodeSnippetSingleNameReference extends SingleNameReference implements EvaluationConstants, InvocationSite, ProblemReasons {
 
diff --git a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java
index bb22c74..fb99257 100644
--- a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java
+++ b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java
@@ -18,7 +18,7 @@
 
 /**
  * A super reference inside a code snippet denotes a reference to the super type of 
- * the remote receiver object (i.e.&nbsp;the one of the context in the stack frame). This is 
+ * the remote receiver object (that is, the receiver of the context in the stack frame). This is 
  * used to report an error through JavaModelException according to the fact that super
  * reference are not supported in code snippet.
  */
diff --git a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java
index 8e9d4a2..8c38f25 100644
--- a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java
+++ b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java
@@ -21,8 +21,7 @@
 
 /**
  * A this reference inside a code snippet denotes a remote
- * receiver object (i.e.&nbsp;the one of the context in the stack
- * frame)
+ * receiver object (that is, the receiver of the context in the stack frame)
  */
 public class CodeSnippetThisReference extends ThisReference implements EvaluationConstants, InvocationSite {
 	EvaluationContext evaluationContext;
diff --git a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java
index 4e3b39b..f7d2ed0 100644
--- a/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java
+++ b/org.eclipse.jdt.core/eval/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java
@@ -22,6 +22,7 @@
  * [package <package name>;]
  * [import <import name>;]*
  * public class <code snippet class name> extends <global variable class name> {
+ *   [<declaring type> val$this;]
  *   public void run() {
  *     <code snippet>
  *   }
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ClasspathContainerInitializer.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ClasspathContainerInitializer.java
index 9914df7..8e98051 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ClasspathContainerInitializer.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ClasspathContainerInitializer.java
@@ -31,8 +31,8 @@
  * <p>
  * Multiple classpath containers can be registered, each of them declares
  * the container ID they can handle, so as to narrow the set of containers they
- * can resolve, i.e. a container initializer is guaranteed to only be activated to 
- * resolve containers which match the ID they registered onto.
+ * can resolve, in other words, a container initializer is guaranteed to only be 
+ * activated to resolve containers which match the ID they registered onto.
  * <p>
  * In case multiple container initializers collide on the same container ID, the first
  * registered one will be invoked.
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ElementChangedEvent.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ElementChangedEvent.java
index 219097d..eec8444 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ElementChangedEvent.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ElementChangedEvent.java
@@ -51,9 +51,9 @@
 	 *
 	 * Note: this notification occurs during the corresponding PRE_AUTO_BUILD
 	 * resource change notification. The delta, which is notified here, only contains
-	 * information relative to the previous JavaModel operations (i.e. ignores the
-	 * possible resources which have changed outside Java operations). In
-	 * particular, it is possible that the JavaModel be inconsistent with respect to
+	 * information relative to the previous JavaModel operations (in other words, 
+	 * it ignores the possible resources which have changed outside Java operations). 
+	 * In particular, it is possible that the JavaModel be inconsistent with respect to
 	 * resources, which got modified outside JavaModel operations (it will only be
 	 * fully consistent once the POST_CHANGE notification has occurred).
 	 * 
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IBuffer.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IBuffer.java
index 0388cd4..92e1837 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IBuffer.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IBuffer.java
@@ -20,9 +20,9 @@
  * If a buffer does not have an underlying resource, saving the buffer has no effect. 
  * Buffers can be read-only.
  * <p>
- * Note that java model operations that manipulate an <code>IBuffer</code> (e.g. 
+ * Note that java model operations that manipulate an <code>IBuffer</code> (for example, 
  * <code>IType.createMethod(...)</code>) ensures that the same line delimiter 
- * (i.e. either <code>"\n"</code> or <code>"\r"</code> or <code>"\r\n"</code>) is 
+ * (either <code>"\n"</code> or <code>"\r"</code> or <code>"\r\n"</code>) is 
  * used across the whole buffer. Thus these operations may change the line delimiter(s) 
  * included in the string to be append, or replaced.
  * However implementers of this interface should be aware that other clients of <code>IBuffer</code>
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java
index d928cd1..2a77df8 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IClasspathContainer.java
@@ -16,8 +16,8 @@
  * Interface of a classpath container.
  * A classpath container provides a way to indirectly reference a set of classpath entries through
  * a classpath entry of kind <code>CPE_CONTAINER</code>. Typically, a classpath container can
- * be used to describe a complex library composed of multiple JARs or projects,
- * considering also that containers can map to different set of entries on each project, i.e. several 
+ * be used to describe a complex library composed of multiple JARs or projects, considering also 
+ * that containers can map to different set of entries on each project, in other words, several 
  * projects can reference the same generic container path, but have each of them actually bound 
  * to a different container object.
  * <p>
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaElementDelta.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaElementDelta.java
index 4e57c4d..8e12ffc 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaElementDelta.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaElementDelta.java
@@ -41,7 +41,7 @@
  * has been closed. This flag is only valid if the element is an <code>IJavaProject</code>.</li>
  * <li><code>F_CONTENT</code> - The contents of the element have been altered.  This flag
  * is only valid for elements which correspond to files.</li>
- *<li><code>F_FINE_GRAINED</code> - The delta is a fine-grained delta, i.e.&nbsp;an analysis down
+ *<li><code>F_FINE_GRAINED</code> - The delta is a fine-grained delta, that is, an analysis down
  * to the members level was done to determine if there were structural changes to members of the element.</li>
  * <li><code>F_MODIFIERS</code> - The modifiers on the element have changed in some way. 
  * This flag is only valid if the element is an <code>IMember</code>.</li>
@@ -214,7 +214,7 @@
 	public int F_SOURCEDETACHED = 0x2000;	
 	
 	/**
-	 * Change flag indicating that this is a fine-grained delta, i.e.&nbsp;an analysis down
+	 * Change flag indicating that this is a fine-grained delta, that is, an analysis down
 	 * to the members level was done to determine if there were structural changes to
 	 * members.
 	 * <p>
@@ -238,92 +238,89 @@
 	 */
 	public int F_ARCHIVE_CONTENT_CHANGED = 0x8000;
 
-//	/**
-//	 * Change flag indicating that the project custom options have changed on the file system,
-//	 * i.e. independently from a change performed using the <code>IJavaProject#setOptions</code>
-//	 * functionality.
-//	 * This flag is only valid if the element is an <code>IJavaProject</code>
-//	 * 
-//	 * @see IJavaProject#setOptions(Map)
-//	 * @since 2.1
-//	 */
-//	public int F_OPTIONS_CHANGED = 0x10000;
-	
+	/**
+	 * Returns deltas for the children that have been added.
+	 * @return deltas for the children that have been added
+	 */
+	public IJavaElementDelta[] getAddedChildren();
 
-/**
- * Returns deltas for the children that have been added.
- * @return deltas for the children that have been added
- */
-public IJavaElementDelta[] getAddedChildren();
-/**
- * Returns deltas for the affected (added, removed, or changed) children.
- * @return deltas for the affected (added, removed, or changed) children
- */
-public IJavaElementDelta[] getAffectedChildren();
-/**
- * Returns deltas for the children which have changed.
- * @return deltas for the children which have changed
- */
-public IJavaElementDelta[] getChangedChildren();
-/**
- * Returns the element that this delta describes a change to.
- * @return the element that this delta describes a change to
- */
-public IJavaElement getElement();
-/**
- * Returns flags that describe how an element has changed. 
- * Such flags should be tested using the <code>&</code> operand, e.g.
- * <pre>
- * if ((delta.getFlags() & IJavaElementDelta.F_CONTENT) != 0) {
- * 	// the delta indicates a content change
- * }
- * </pre>
- *
- * @return flags that describe how an element has changed
- */
-public int getFlags();
-/**
- * Returns the kind of this delta - one of <code>ADDED</code>, <code>REMOVED</code>,
- * or <code>CHANGED</code>.
- * 
- * @return the kind of this delta
- */
-public int getKind();
-/**
- * Returns an element describing this element before it was moved
- * to its current location, or <code>null</code> if the
- * <code>F_MOVED_FROM</code> change flag is not set. 
- * 
- * @return an element describing this element before it was moved
- * to its current location, or <code>null</code> if the
- * <code>F_MOVED_FROM</code> change flag is not set
- */
-public IJavaElement getMovedFromElement();
-/**
- * Returns an element describing this element in its new location,
- * or <code>null</code> if the <code>F_MOVED_TO</code> change
- * flag is not set.
- * 
- * @return an element describing this element in its new location,
- * or <code>null</code> if the <code>F_MOVED_TO</code> change
- * flag is not set
- */
-public IJavaElement getMovedToElement();
-/**
- * Returns deltas for the children which have been removed.
- * 
- * @return deltas for the children which have been removed
- */
-public IJavaElementDelta[] getRemovedChildren();
-/**
- * Returns the collection of resource deltas.
- * <p>
- * Note that resource deltas, like Java element deltas, are generally only valid
- * for the dynamic scope of an event notification. Clients must not hang on to
- * these objects.
- * </p>
- *
- * @return the underlying resource deltas, or <code>null</code> if none
- */
-public IResourceDelta[] getResourceDeltas();
+	/**
+	 * Returns deltas for the affected (added, removed, or changed) children.
+	 * @return deltas for the affected (added, removed, or changed) children
+	 */
+	public IJavaElementDelta[] getAffectedChildren();
+
+	/**
+	 * Returns deltas for the children which have changed.
+	 * @return deltas for the children which have changed
+	 */
+	public IJavaElementDelta[] getChangedChildren();
+
+	/**
+	 * Returns the element that this delta describes a change to.
+	 * @return the element that this delta describes a change to
+	 */
+	public IJavaElement getElement();
+
+	/**
+	 * Returns flags that describe how an element has changed. 
+	 * Such flags should be tested using the <code>&</code> operand. For example:
+	 * <pre>
+	 * if ((delta.getFlags() & IJavaElementDelta.F_CONTENT) != 0) {
+	 * 	// the delta indicates a content change
+	 * }
+	 * </pre>
+	 *
+	 * @return flags that describe how an element has changed
+	 */
+	public int getFlags();
+
+	/**
+	 * Returns the kind of this delta - one of <code>ADDED</code>, <code>REMOVED</code>,
+	 * or <code>CHANGED</code>.
+	 * 
+	 * @return the kind of this delta
+	 */
+	public int getKind();
+
+	/**
+	 * Returns an element describing this element before it was moved
+	 * to its current location, or <code>null</code> if the
+	 * <code>F_MOVED_FROM</code> change flag is not set. 
+	 * 
+	 * @return an element describing this element before it was moved
+	 * to its current location, or <code>null</code> if the
+	 * <code>F_MOVED_FROM</code> change flag is not set
+	 */
+	public IJavaElement getMovedFromElement();
+
+	/**
+	 * Returns an element describing this element in its new location,
+	 * or <code>null</code> if the <code>F_MOVED_TO</code> change
+	 * flag is not set.
+	 * 
+	 * @return an element describing this element in its new location,
+	 * or <code>null</code> if the <code>F_MOVED_TO</code> change
+	 * flag is not set
+	 */
+	public IJavaElement getMovedToElement();
+
+	/**
+	 * Returns deltas for the children which have been removed.
+	 * 
+	 * @return deltas for the children which have been removed
+	 */
+	public IJavaElementDelta[] getRemovedChildren();
+
+	/**
+	 * Returns the collection of resource deltas.
+	 * <p>
+	 * Note that resource deltas, like Java element deltas, are generally only valid
+	 * for the dynamic scope of an event notification. Clients must not hang on to
+	 * these objects.
+	 * </p>
+	 *
+	 * @return the underlying resource deltas, or <code>null</code> if none
+	 */
+	public IResourceDelta[] getResourceDeltas();
 }
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModel.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModel.java
index 4c5b04b..3133336 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModel.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModel.java
@@ -130,7 +130,7 @@
  */
 IJavaProject[] getJavaProjects() throws JavaModelException;
 /**
- * Returns an array of non-Java resources (i.e. non-Java projects) in
+ * Returns an array of non-Java resources (that is, non-Java projects) in
  * the workspace.
  * <p>
  * Non-Java projects include all projects that are closed (even if they have the
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModelMarker.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModelMarker.java
index 5cc7f4f..080e0ad 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModelMarker.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaModelMarker.java
@@ -38,7 +38,7 @@
 	/**
 	 * Java model task marker type (value <code>"org.eclipse.jdt.core.task"</code>).
 	 * This can be used to recognize task markers in the workspace that correspond to tasks
-	 * specified in Java source comments and detected during compilation (e.g. 'TO-DO: ...').
+	 * specified in Java source comments and detected during compilation (for example, 'TO-DO: ...').
 	 * Tasks are identified by a task tag, which can be customized through <code>JavaCore</code>
 	 * option <code>"org.eclipse.jdt.core.compiler.taskTag"</code>.
 	 * @since 2.1
@@ -49,8 +49,7 @@
     /** 
 	 * Id marker attribute (value <code>"arguments"</code>).
 	 * Arguments are concatenated into one String, prefixed with an argument count (followed with colon
-	 * separator) and separated with '#' characters.
-	 * e.g. 
+	 * separator) and separated with '#' characters. For example:
 	 *     { "foo", "bar" } is encoded as "2:foo#bar",     
 	 *     {  } is encoded as "0: "
 	 * @since 2.0
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaProject.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaProject.java
index 7aff3d2..c386f85 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaProject.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IJavaProject.java
@@ -226,7 +226,7 @@
 	
 	/**
 	 * Returns the table of the current custom options for this project. Projects remember their custom options,
-	 * i.e. only the options different from the the JavaCore global options for the workspace.
+	 * in other words, only the options different from the the JavaCore global options for the workspace.
 	 * A boolean argument allows to directly merge the project options with global ones from <code>JavaCore</code>.
 	 * <p>
 	 * For a complete description of the configurable options, see <code>JavaCore#getDefaultOptions</code>.
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IPackageFragment.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IPackageFragment.java
index 36f7a61..3312c67 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IPackageFragment.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IPackageFragment.java
@@ -82,7 +82,7 @@
 	 * Returns all of the class files in this package fragment.
 	 *
 	 * <p>Note: it is possible that a package fragment contains only
-	 * compilation units (i.e. its kind is <code>K_SOURCE</code>), in
+	 * compilation units (in other words, its kind is <code>K_SOURCE</code>), in
 	 * which case this method returns an empty collection.
 	 *
 	 * @exception JavaModelException if this element does not exist or if an
@@ -104,7 +104,7 @@
 	 * Returns all of the compilation units in this package fragment.
 	 *
 	 * <p>Note: it is possible that a package fragment contains only
-	 * class files (i.e. its kind is <code>K_BINARY</code>), in which
+	 * class files (in other words, its kind is <code>K_BINARY</code>), in which
 	 * case this method returns an empty collection.
 	 *
 	 * @exception JavaModelException if this element does not exist or if an
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IRegion.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IRegion.java
index 2baa857..0d96a56 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IRegion.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IRegion.java
@@ -57,7 +57,7 @@
 	 * Removes the specified element from the region and returns
 	 * <code>true</code> if successful, <code>false</code> if the remove
 	 * fails. If an ancestor of the given element is included, the
-	 * remove fails (i.e. not possible to selectively
+	 * remove fails (in other words, it is not possible to selectively
 	 * exclude descendants of included ancestors).
 	 * 
 	 * @param element the given element
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java
index ce0f024..4db9c74 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IType.java
@@ -282,7 +282,7 @@
 	/**
 	 * Returns the initializer with the specified position relative to
 	 * the order they are defined in the source.
-	 * Numbering starts at 1 (i.e. the first occurrence is occurrence 1, not occurrence 0).
+	 * Numbering starts at 1 (thus the first occurrence is occurrence 1, not occurrence 0).
 	 * This is a handle-only method.  The initializer may or may not be present.
 	 * 
 	 * @param occurrenceCount the specified position
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IWorkingCopy.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IWorkingCopy.java
index 44a2850..0309aee 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IWorkingCopy.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/IWorkingCopy.java
@@ -154,7 +154,7 @@
 	IJavaElement[] findElements(IJavaElement element);
 	
 	/**
-	 * Finds the primary type of this compilation unit (i.e.&nbsp;the type with the same name as the
+	 * Finds the primary type of this compilation unit (that is, the type with the same name as the
 	 * compilation unit), or <code>null</code> if no such a type exists.
 	 * 
 	 * @return the found primary type of this compilation unit, or <code>null</code> if no such a type exists
@@ -166,7 +166,7 @@
 	 * Returns a shared working copy on this element using the given factory to create
 	 * the buffer, or this element if this element is already a working copy.
 	 * This API can only answer an already existing working copy if it is based on the same
-	 * original compilation unit AND was using the same buffer factory (i.e. as defined by <code>Object#equals</code>).	 
+	 * original compilation unit AND was using the same buffer factory (that is, as defined by <code>Object.equals</code>).	 
 	 * <p>
 	 * The life time of a shared working copy is as follows:
 	 * <ul>
@@ -178,7 +178,7 @@
 	 * </ul>
 	 * So users of this method must destroy exactly once the working copy.
 	 * <p>
-	 * Note that the buffer factory will be used for the life time of this working copy, i.e. if the 
+	 * Note that the buffer factory will be used for the life time of this working copy, that is if the 
 	 * working copy is closed then reopened, this factory will be used.
 	 * The buffer will be automatically initialized with the original's compilation unit content
 	 * upon creation.
@@ -231,7 +231,7 @@
 	/**
 	 * Returns a new working copy of this element using the given factory to create
 	 * the buffer, or this element if this element is already a working copy.
-	 * Note that this factory will be used for the life time of this working copy, i.e. if the 
+	 * Note that this factory will be used for the life time of this working copy, that is if the 
 	 * working copy is closed then reopened, this factory will be reused.
 	 * The buffer will be automatically initialized with the original's compilation unit content
 	 * upon creation.
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java
index 8e68a28..13832b0 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaConventions.java
@@ -114,9 +114,9 @@
 	}
 
 	/**
-	 * Returns the current identifier extracted by the scanner (ie. without unicodes)
-	 * from the given id.
-	 * Returns <code>null</code> if the id was not valid.
+	 * Returns the current identifier extracted by the scanner (without unicode
+	 * escapes) from the given id.
+	 * Returns <code>null</code> if the id was not valid
 	 */
 	private static synchronized char[] scannedIdentifier(String id) {
 		if (id == null) {
@@ -250,7 +250,7 @@
 
 	/**
 	 * Validate the given Java identifier.
-	 * The identifier must have the same spelling as a Java keyword,
+	 * The identifier must not have the same spelling as a Java keyword,
 	 * boolean literal (<code>"true"</code>, <code>"false"</code>), or null literal (<code>"null"</code>).
 	 * See section 3.8 of the <em>Java Language Specification, Second Edition</em> (JLS2).
 	 * A valid identifier can act as a simple type name, method name or field name.
@@ -371,7 +371,7 @@
 	 * The syntax of a package name corresponds to PackageName as
 	 * defined by PackageDeclaration (JLS2 7.4). For example, <code>"java.lang"</code>.
 	 * <p>
-	 * Note that the given name must be a non-empty package name (ie. attempting to
+	 * Note that the given name must be a non-empty package name (that is, attempting to
 	 * validate the default package will return an error status.)
 	 * Also it must not contain any characters or substrings that are not valid 
 	 * on the file system on which workspace root is located.
@@ -427,10 +427,10 @@
 	/**
 	 * Validate a given classpath and output location for a project, using the following rules:
 	 * <ul>
-	 *   <li> Classpath entries cannot collide with each other, i.e. all entry paths must be unique.
+	 *   <li> Classpath entries cannot collide with each other; that is, all entry paths must be unique.
 	 *   <li> The project output location path cannot be null, must be absolute and located inside the project.
 	 *   <li> Specific output locations (specified on source entries) can be null, if not they must be located inside the project,
-	 *   <li> A project entry cannot refer to itself directly (i.e. a project cannot prerequisite itself).
+	 *   <li> A project entry cannot refer to itself directly (that is, a project cannot prerequisite itself).
      *   <li> Classpath entries or output locations cannot coincidate or be nested in each other, except for the following scenarii listed below:
 	 *      <ul><li> A source folder can coincidate with its own output location, in which case this output can then contain library archives. 
 	 *                     However, an output location cannot coincidate with any library or a distinct source folder than the one referring to it. </li> 
@@ -643,7 +643,7 @@
 		}
 		// ensure that no output is coincidating with another source folder (only allowed if matching current source folder)
 		// perform one separate iteration so as to not take precedence over previously checked scenarii (in particular should
-		// diagnose nesting source folder issue before this one, e.g. [src]"Project/", [src]"Project/source/" and output="Project/" should
+		// diagnose nesting source folder issue before this one, for example, [src]"Project/", [src]"Project/source/" and output="Project/" should
 		// first complain about missing exclusion pattern
 		for (int i = 0 ; i < length; i++) {
 			IClasspathEntry entry = classpath[i];
@@ -675,9 +675,9 @@
 	}
 	
 	/**
-	 * Returns a java model status describing the problem related to this classpath entry if any, 
-	 * a status object with code <code>IStatus.OK</code> if the entry is fine.
-	 * (i.e. if the given classpath entry denotes a valid element to be referenced onto a classpath).
+	 * Returns a Java model status describing the problem related to this classpath entry if any, 
+	 * a status object with code <code>IStatus.OK</code> if the entry is fine (that is, if the
+	 * given classpath entry denotes a valid element to be referenced onto a classpath).
 	 * 
 	 * @param javaProject the given java project
 	 * @param entry the given classpath entry
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
index b5c3c06..3dc93bc 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
@@ -88,7 +88,7 @@
 	public static final String NATURE_ID = PLUGIN_ID + ".javanature" ; //$NON-NLS-1$
 
 	/**
-	 * Name of the handle id attribute in a Java marker
+	 * Name of the handle id attribute in a Java marker.
 	 */
 	protected static final String ATT_HANDLE_ID =
 		"org.eclipse.jdt.internal.core.JavaModelManager.handleId" ; //$NON-NLS-1$
@@ -1122,7 +1122,7 @@
 	 *     - default:           "generate"
 	 *    
 	 * COMPILER / Preserving Unused Local Variables
-	 *    Unless requested to preserve unused local variables (i.e. never read), the 
+	 *    Unless requested to preserve unused local variables (that is, never read), the 
 	 *    compiler will optimize them out, potentially altering debugging
 	 *     - option id:         "org.eclipse.jdt.core.compiler.codegen.unusedLocal"
 	 *     - possible values:   { "preserve", "optimize out" }
@@ -1180,7 +1180,7 @@
 	 *     - default:           "disabled"
 	 *
 	 * COMPILER / Reporting Hidden Catch Block
-	 *    Locally to a try statement, some catch blocks may hide others , e.g.
+	 *    Locally to a try statement, some catch blocks may hide others . For example,
 	 *      try {  throw new java.io.CharConversionException();
 	 *      } catch (java.io.CharConversionException e) {
 	 *      } catch (java.io.IOException e) {}. 
@@ -1192,14 +1192,14 @@
 	 *
 	 * COMPILER / Reporting Unused Local
 	 *    When enabled, the compiler will issue an error or a warning for unused local 
-	 *    variables (i.e. variables never read from)
+	 *    variables (that is, variables never read from)
 	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedLocal"
 	 *     - possible values:   { "error", "warning", "ignore" }
 	 *     - default:           "ignore"
 	 *
 	 * COMPILER / Reporting Unused Parameter
 	 *    When enabled, the compiler will issue an error or a warning for unused method 
-	 *    parameters (i.e. parameters never read from)
+	 *    parameters (that is, parameters never read from)
 	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameter"
 	 *     - possible values:   { "error", "warning", "ignore" }
 	 *     - default:           "ignore"
@@ -1242,7 +1242,7 @@
 	 *
 	 * COMPILER / Reporting Non-Externalized String Literal
 	 *    When enabled, the compiler will issue an error or a warning for non externalized 
-	 *    String literal (i.e. non tagged with //$NON-NLS-<n>$). 
+	 *    String literal (that is, not tagged with //$NON-NLS-<n>$). 
 	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral"
 	 *     - possible values:   { "error", "warning", "ignore" }
 	 *     - default:           "ignore"
@@ -1256,7 +1256,8 @@
 	 * 
 	 * COMPILER / Reporting Non-Static Reference to a Static Member
 	 *    When enabled, the compiler will issue an error or a warning whenever a static field
-	 *    or method is accessed with an expression receiver.
+	 *    or method is accessed with an expression receiver. A reference to a static member should
+	 *    be qualified with a type name.
 	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.staticAccessReceiver"
 	 *     - possible values:   { "error", "warning", "ignore" }
 	 *     - default:           "warning"
@@ -1270,14 +1271,18 @@
 	 * 
 	 * COMPILER / Reporting Interface Method not Compatible with non-Inherited Methods
 	 *    When enabled, the compiler will issue an error or a warning whenever an interface
-	 *    defines a method incompatible with a non-inherited Object one.
+	 *    defines a method incompatible with a non-inherited Object method. Until this conflict
+	 *    is resolved, such an interface cannot be implemented, For example, 
+	 *      interface I { 
+	 *         int clone();
+	 *      } 
 	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"
 	 *     - possible values:   { "error", "warning", "ignore" }
 	 *     - default:           "warning"
 	 * 
 	 * COMPILER / Reporting Usage of char[] Expressions in String Concatenations
 	 *    When enabled, the compiler will issue an error or a warning whenever a char[] expression
-	 *    is used in String concatenations (e.g. "hello" + new char[]{'w','o','r','l','d'}).
+	 *    is used in String concatenations (for example, "hello" + new char[]{'w','o','r','l','d'}).
 	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion"
 	 *     - possible values:   { "error", "warning", "ignore" }
 	 *     - default:           "warning"
@@ -1304,11 +1309,12 @@
 	 *     - default:           "100"
 	 * 
 	 * COMPILER / Define the Automatic Task Tags
-	 *    When the tag is non empty, the compiler will issue a task marker whenever it encounters
+	 *    When the tag list is not empty, the compiler will issue a task marker whenever it encounters
 	 *    one of the corresponding tag inside any comment in Java source code.
-	 *    Generated task messages will include the tag, and range until the next line separator or comment ending, and will be trimmed.
+	 *    Generated task messages will include the tag, and range until the next line separator or comment ending.
+	 *    Note that tasks messages are trimmed.
 	 *     - option id:         "org.eclipse.jdt.core.compiler.taskTags"
-	 *     - possible values:   { "<tag>[,<tag>]*" } where <tag> is a String without any wild-card 
+	 *     - possible values:   { "<tag>[,<tag>]*" } where <tag> is a String without any wild-card or leading/trailing spaces 
 	 *     - default:           ""
 	 * 
 	 * COMPILER / Define the Automatic Task Priorities
@@ -1330,7 +1336,7 @@
 	 *    Allow to toggle the builder to abort if the classpath is invalid
 	 *     - option id:         "org.eclipse.jdt.core.builder.invalidClasspath"
 	 *     - possible values:   { "abort", "ignore" }
-	 *     - default:           "ignore"
+	 *     - default:           "abort"
 	 * 
 	 * BUILDER / Cleaning Output Folder(s)
 	 *    Indicate whether the JavaBuilder is allowed to clean the output folders
@@ -1339,6 +1345,13 @@
 	 *     - possible values:   { "clean", "ignore" }
 	 *     - default:           "clean"
 	 * 
+	 * BUILDER / Reporting Duplicate Resources
+	 *    Indicate the severity of the problem reported when more than one occurrence
+	 *    of a resource is to be copied into the output location.
+	 *     - option id:         "org.eclipse.jdt.core.builder.duplicateResourceTask"
+	 *     - possible values:   { "error", "warning" }
+	 *     - default:           "warning"
+	 * 
 	 * JAVACORE / Computing Project Build Order
 	 *    Indicate whether JavaCore should enforce the project build order to be based on
 	 *    the classpath prerequisite chain. When requesting to compute, this takes over
@@ -1355,8 +1368,8 @@
 	 *     - default:           <platform default>
 	 * 
 	 * JAVACORE / Reporting Incomplete Classpath
-	 *    Indicate the severity of the problem reported when an entry on the classpath doesn't exist 
-	 *    is not legite or is not visible (e.g. a referenced project is closed).
+	 *    Indicate the severity of the problem reported when an entry on the classpath does not exist, 
+	 *    is not legite or is not visible (for example, a referenced project is closed).
 	 *     - option id:         "org.eclipse.jdt.core.incompleteClasspath"
 	 *     - possible values:   { "error", "warning"}
 	 *     - default:           "error"
@@ -1368,14 +1381,14 @@
 	 *     - default:           "error"
 	 * 
 	 * JAVACORE / Enabling Usage of Classpath Exclusion Patterns
-	 *    When set to "disabled", no entry on a project classpath can be associated with
+	 *    When disabled, no entry on a project classpath can be associated with
 	 *    an exclusion pattern.
 	 *     - option id:         "org.eclipse.jdt.core.classpath.exclusionPatterns"
 	 *     - possible values:   { "enabled", "disabled" }
 	 *     - default:           "enabled"
 	 * 
 	 * JAVACORE / Enabling Usage of Classpath Multiple Output Locations
-	 *    When set to "disabled", no entry on a project classpath can be associated with
+	 *    When disabled, no entry on a project classpath can be associated with
 	 *    a specific output location, preventing thus usage of multiple output locations.
 	 *     - option id:         "org.eclipse.jdt.core.classpath.multipleOutputLocations"
 	 *     - possible values:   { "enabled", "disabled" }
@@ -1424,7 +1437,7 @@
 	 *     - default:           "80"
 	 * 
 	 *	FORMATTER / Compacting Assignment
-	 *    Assignments can be formatted asymmetrically, e.g. 'int x= 2;', when Normal, a space
+	 *    Assignments can be formatted asymmetrically, for example 'int x= 2;', when Normal, a space
 	 *    is inserted before the assignment operator
 	 *     - option id:         "org.eclipse.jdt.core.formatter.style.assignment"
 	 *     - possible values:   { "compact", "normal" }
@@ -1451,7 +1464,7 @@
 	 * 
 	 *	CODEASSIST / Activate Visibility Sensitive Completion
 	 *    When active, completion doesn't show that you can not see
-	 *    (e.g. you can not see private methods of a super class).
+	 *    (for example, you can not see private methods of a super class).
 	 *     - option id:         "org.eclipse.jdt.core.codeComplete.visibilityCheck"
 	 *     - possible values:   { "enabled", "disabled" }
 	 *     - default:           "disabled"
@@ -1736,7 +1749,7 @@
 
 
 	/**
-	 * Resolve a variable path (helper method)
+	 * Resolve a variable path (helper method).
 	 * 
 	 * @param variablePath the given variable path
 	 * @return the resolved variable path or <code>null</code> if none
@@ -1765,7 +1778,7 @@
 	/**
 	 * Answers the shared working copies currently registered for this buffer factory. 
 	 * Working copies can be shared by several clients using the same buffer factory,see 
-	 * <code>IWorkingCopy##getSharedWorkingCopy</code>.
+	 * <code>IWorkingCopy.getSharedWorkingCopy</code>.
 	 * 
 	 * @param factory the given buffer factory
 	 * @return the list of shared working copies for a given buffer factory
@@ -2073,8 +2086,8 @@
 	 * <p>
 	 * A container entry allows to express indirect references to a set of libraries, projects and variable entries,
 	 * which can be interpreted differently for each Java project where it is used.
-	 * A classpath container entry can be resolved using <code>JavaCore#getResolvedClasspathContainer</code>,
-	 * and updated with <code>JavaCore#classpathContainerChanged</code>
+	 * A classpath container entry can be resolved using <code>JavaCore.getResolvedClasspathContainer</code>,
+	 * and updated with <code>JavaCore.classpathContainerChanged</code>
 	 * <p>
 	 * A container is exclusively resolved by a <code>ClasspathContainerInitializer</code> registered onto the
 	 * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
@@ -2122,8 +2135,8 @@
 	 * <p>
 	 * A container entry allows to express indirect references to a set of libraries, projects and variable entries,
 	 * which can be interpreted differently for each Java project where it is used.
-	 * A classpath container entry can be resolved using <code>JavaCore#getResolvedClasspathContainer</code>,
-	 * and updated with <code>JavaCore#classpathContainerChanged</code>
+	 * A classpath container entry can be resolved using <code>JavaCore.getResolvedClasspathContainer</code>,
+	 * and updated with <code>JavaCore.classpathContainerChanged</code>
 	 * <p>
 	 * A container is exclusively resolved by a <code>ClasspathContainerInitializer</code> registered onto the
 	 * extension point "org.eclipse.jdt.core.classpathContainerInitializer".
@@ -2427,7 +2440,7 @@
 	 * for the project's source folder identified by the given absolute 
 	 * workspace-relative path but excluding all source files with paths
 	 * matching any of the given patterns, and associated with a specific output location
-	 * (i.e. ".class" files are not going to the project default output location). 
+	 * (that is, ".class" files are not going to the project default output location). 
 	 * All package fragments within the root will have children of type 
 	 * <code>ICompilationUnit</code>.
 	 * <p>
@@ -2662,9 +2675,9 @@
 		JavaModelManager.getJavaModelManager().removeElementChangedListener(listener);
 	}
 	/**
-	 * Runs the given action as an atomic java model operation.
+	 * Runs the given action as an atomic Java model operation.
 	 * <p>
-	 * After running a method that modifies java elements,
+	 * After running a method that modifies Java elements,
 	 * registered listeners receive after-the-fact notification of
 	 * what just transpired, in the form of a element changed event.
 	 * This method allows clients to call a number of
@@ -2988,7 +3001,7 @@
 	}
 	
 	/**
-	 * Shutdown the JavaCore plugin
+	 * Shutdown the JavaCore plug-in.
 	 * <p>
 	 * De-registers the JavaModelManager as a resource changed listener and save participant.
 	 * <p>
@@ -3014,7 +3027,7 @@
 	}
 
 	/**
-	 * Startup of the JavaCore plugin
+	 * Startup of the JavaCore plug-in.
 	 * <p>
 	 * Registers the JavaModelManager as a resource changed listener and save participant.
 	 * Starts the background indexing, and restore saved classpath variable values.
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/NamingConventions.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/NamingConventions.java
index 2909ce5..0461d73 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/NamingConventions.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/NamingConventions.java
@@ -19,7 +19,8 @@
 /**
  * Provides methods for computing Java-specific names.
  * <p>
- * The bevavior of the methods is dependent of several JavaCore options.<br>
+ * The bevavior of the methods is dependent of several JavaCore options.
+ * <p>
  * The possible options are :
  * <ul>
  * <li>CODEASSIST_FIELD_PREFIXES : Define the Prefixes for Field Name.</li>
@@ -31,11 +32,12 @@
  * <li>CODEASSIST_LOCAL_SUFFIXES : Define the Suffixes for Local Variable Name.</li>
  * <li>CODEASSIST_ARGUMENT_SUFFIXES : Define the Suffixes for Argument Name.</li>
  * </ul>
+ * </p>
  * <p>
- * 
  * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
  * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
- * 
+ * </p>
+ * <p>
  * This class provides static methods and constants only; it is not intended to be
  * instantiated or subclassed by clients.
  * </p>
@@ -273,16 +275,21 @@
 	}
 
 	/**
-	 * Remove prefix and suffix from an argument name.<br>
+	 * Remove prefix and suffix from an argument name.
+	 * <p>
 	 * If argument name prefix is <code>pre</code> and argument name suffix is <code>suf</code>
 	 * then for an argument named <code>preArgsuf</code> the result of this method is <code>arg</code>.
 	 * If there is no prefix or suffix defined in JavaCore options the result is the unchanged
-	 * name <code>preArgsuf</code>.<br>
-	 * 
+	 * name <code>preArgsuf</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_ARGUMENT_PREFIXES and
-	 * CODEASSIST_ARGUMENT_SUFFIXES.<br>
+	 * CODEASSIST_ARGUMENT_SUFFIXES.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
  	 * 
 	 * @param javaProject project which contains the argument.
 	 * @param argumentName argument's name.
@@ -299,16 +306,21 @@
 	}
 	
 	/**
-	 * Remove prefix and suffix from an argument name.<br>
+	 * Remove prefix and suffix from an argument name.
+	 * <p>
 	 * If argument name prefix is <code>pre</code> and argument name suffix is <code>suf</code>
 	 * then for an argument named <code>preArgsuf</code> the result of this method is <code>arg</code>.
 	 * If there is no prefix or suffix defined in JavaCore options the result is the unchanged
-	 * name <code>preArgsuf</code>.<br>
-	 * 
+	 * name <code>preArgsuf</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_ARGUMENT_PREFIXES and
-	 * CODEASSIST_ARGUMENT_SUFFIXES.<br>
+	 * CODEASSIST_ARGUMENT_SUFFIXES.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
  	 * 
 	 * @param javaProject project which contains the argument.
 	 * @param argumentName argument's name.
@@ -321,17 +333,22 @@
 	}
 
 	/**
-	 * Remove prefix and suffix from a field name.<br>
+	 * Remove prefix and suffix from a field name.
+	 * <p>
 	 * If field name prefix is <code>pre</code> and field name suffix is <code>suf</code>
 	 * then for a field named <code>preFieldsuf</code> the result of this method is <code>field</code>.
 	 * If there is no prefix or suffix defined in JavaCore options the result is the unchanged
-	 * name <code>preFieldsuf</code>.<br>
-	 * 
+	 * name <code>preFieldsuf</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_FIELD_PREFIXES, 
 	 * CODEASSIST_FIELD_SUFFIXES for instance field and CODEASSIST_STATIC_FIELD_PREFIXES,
-	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.<br>
+	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
 	 * 
 	 * @param javaProject project which contains the field.
 	 * @param fieldName field's name.
@@ -352,17 +369,22 @@
 	}
 
 	/**
-	 * Remove prefix and suffix from a field name.<br>
+	 * Remove prefix and suffix from a field name.
+	 * <p>
 	 * If field name prefix is <code>pre</code> and field name suffix is <code>suf</code>
 	 * then for a field named <code>preFieldsuf</code> the result of this method is <code>field</code>.
 	 * If there is no prefix or suffix defined in JavaCore options the result is the unchanged
-	 * name <code>preFieldsuf</code>.<br>
-	 * 
+	 * name <code>preFieldsuf</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_FIELD_PREFIXES, 
 	 * CODEASSIST_FIELD_SUFFIXES for instance field and CODEASSIST_STATIC_FIELD_PREFIXES,
-	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.<br>
+	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
 	 * 
 	 * @param javaProject project which contains the field.
 	 * @param fieldName field's name.
@@ -377,16 +399,21 @@
 		return String.valueOf(removePrefixAndSuffixForFieldName(javaProject, fieldName.toCharArray(), modifiers));
 	}
 	/**
-	 * Remove prefix and suffix from a local variable name.<br>
+	 * Remove prefix and suffix from a local variable name.
+	 * <p>
 	 * If local variable name prefix is <code>pre</code> and local variable name suffix is <code>suf</code>
 	 * then for a local variable named <code>preLocalsuf</code> the result of this method is <code>local</code>.
 	 * If there is no prefix or suffix defined in JavaCore options the result is the unchanged
-	 * name <code>preLocalsuf</code>.<br>
-	 * 
+	 * name <code>preLocalsuf</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_LOCAL_PREFIXES and 
-	 * CODEASSIST_LOCAL_SUFFIXES.<br>
+	 * CODEASSIST_LOCAL_SUFFIXES.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
 	 * 
 	 * @param javaProject project which contains the variable.
 	 * @param localName variable's name.
@@ -403,16 +430,21 @@
 	}
 	
 	/**
-	 * Remove prefix and suffix from a local variable name.<br>
+	 * Remove prefix and suffix from a local variable name.
+	 * <p>
 	 * If local variable name prefix is <code>pre</code> and local variable name suffix is <code>suf</code>
 	 * then for a local variable named <code>preLocalsuf</code> the result of this method is <code>local</code>.
 	 * If there is no prefix or suffix defined in JavaCore options the result is the unchanged
-	 * name <code>preLocalsuf</code>.<br>
-	 * 
+	 * name <code>preLocalsuf</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_LOCAL_PREFIXES and 
-	 * CODEASSIST_LOCAL_SUFFIXES.<br>
+	 * CODEASSIST_LOCAL_SUFFIXES.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
 	 * 
 	 * @param javaProject project which contains the variable.
 	 * @param localName variable's name.
@@ -426,16 +458,21 @@
 
 	/**
 	 * Suggest names for an argument. The name is computed from argument's type
-	 * and possible prefixes or suffixes are added.<br>
+	 * and possible prefixes or suffixes are added.
+	 * <p>
 	 * If the type of the argument is <code>TypeName</code>, the prefix for argument is <code>pre</code>
 	 * and the suffix for argument is <code>suf</code> then the proposed names are <code>preTypeNamesuf</code>
 	 * and <code>preNamesuf</code>. If there is no prefix or suffix the proposals are <code>typeName</code>
-	 * and <code>name</code>.<br>
-	 * 
+	 * and <code>name</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_ARGUMENT_PREFIXES and 
-	 * CODEASSIST_ARGUMENT_SUFFIXES.<br>
+	 * CODEASSIST_ARGUMENT_SUFFIXES.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
 	 * 
 	 * @param javaProject project which contains the argument.
 	 * @param packageName package of the argument's type.
@@ -462,16 +499,21 @@
 	
 	/**
 	 * Suggest names for an argument. The name is computed from argument's type
-	 * and possible prefixes or suffixes are added.<br>
+	 * and possible prefixes or suffixes are added.
+	 * <p>
 	 * If the type of the argument is <code>TypeName</code>, the prefix for argument is <code>pre</code>
 	 * and the suffix for argument is <code>suf</code> then the proposed names are <code>preTypeNamesuf</code>
 	 * and <code>preNamesuf</code>. If there is no prefix or suffix the proposals are <code>typeName</code>
-	 * and <code>name</code>.<br>
-	 * 
+	 * and <code>name</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_ARGUMENT_PREFIXES and 
-	 * CODEASSIST_ARGUMENT_SUFFIXES.<br>
+	 * CODEASSIST_ARGUMENT_SUFFIXES.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
 	 * 
 	 * @param javaProject project which contains the argument.
 	 * @param packageName package of the argument's type.
@@ -494,17 +536,23 @@
 	}
 	/**
 	 * Suggest names for a field. The name is computed from field's type
-	 * and possible prefixes or suffixes are added.<br>
+	 * and possible prefixes or suffixes are added.
+	 * <p>
 	 * If the type of the field is <code>TypeName</code>, the prefix for field is <code>pre</code>
 	 * and the suffix for field is <code>suf</code> then the proposed names are <code>preTypeNamesuf</code>
 	 * and <code>preNamesuf</code>. If there is no prefix or suffix the proposals are <code>typeName</code>
-	 * and <code>name</code>.<br>
-	 * 
+	 * and <code>name</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_FIELD_PREFIXES, 
 	 * CODEASSIST_FIELD_SUFFIXES and for instance field and CODEASSIST_STATIC_FIELD_PREFIXES,
-	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.<br>
+	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
+	 * 
 	 * @param javaProject project which contains the field.
 	 * @param packageName package of the field's type.
 	 * @param qualifiedTypeName field's type.
@@ -534,17 +582,23 @@
 	
 	/**
 	 * Suggest names for a field. The name is computed from field's type
-	 * and possible prefixes or suffixes are added.<br>
+	 * and possible prefixes or suffixes are added.
+	 * <p>
 	 * If the type of the field is <code>TypeName</code>, the prefix for field is <code>pre</code>
 	 * and the suffix for field is <code>suf</code> then the proposed names are <code>preTypeNamesuf</code>
 	 * and <code>preNamesuf</code>. If there is no prefix or suffix the proposals are <code>typeName</code>
-	 * and <code>name</code>.<br>
-	 * 
+	 * and <code>name</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_FIELD_PREFIXES, 
 	 * CODEASSIST_FIELD_SUFFIXES and for instance field and CODEASSIST_STATIC_FIELD_PREFIXES,
-	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.<br>
+	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
+	 * 
 	 * @param javaProject project which contains the field.
 	 * @param packageName package of the field's type.
 	 * @param qualifiedTypeName field's type.
@@ -571,16 +625,22 @@
 	
 	/**
 	 * Suggest names for a local variable. The name is computed from variable's type
-	 * and possible prefixes or suffixes are added.<br>
+	 * and possible prefixes or suffixes are added.
+	 * <p>
 	 * If the type of the local variable is <code>TypeName</code>, the prefix for local variable is <code>pre</code>
 	 * and the suffix for local variable is <code>suf</code> then the proposed names are <code>preTypeNamesuf</code>
 	 * and <code>preNamesuf</code>. If there is no prefix or suffix the proposals are <code>typeName</code>
-	 * and <code>name</code>.<br>
-	 * 
+	 * and <code>name</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_LOCAL_PREFIXES and
-	 * CODEASSIST_LOCAL_SUFFIXES.<br>
+	 * CODEASSIST_LOCAL_SUFFIXES.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
+	 * 
 	 * @param javaProject project which contains the variable.
 	 * @param packageName package of the variable's type.
 	 * @param qualifiedTypeName variable's type.
@@ -606,16 +666,22 @@
 	
 	/**
 	 * Suggest names for a local variable. The name is computed from variable's type
-	 * and possible prefixes or suffixes are added.<br>
+	 * and possible prefixes or suffixes are added.
+	 * <p>
 	 * If the type of the local variable is <code>TypeName</code>, the prefix for local variable is <code>pre</code>
 	 * and the suffix for local variable is <code>suf</code> then the proposed names are <code>preTypeNamesuf</code>
 	 * and <code>preNamesuf</code>. If there is no prefix or suffix the proposals are <code>typeName</code>
-	 * and <code>name</code>.<br>
-	 * 
+	 * and <code>name</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_LOCAL_PREFIXES and
-	 * CODEASSIST_LOCAL_SUFFIXES.<br>
+	 * CODEASSIST_LOCAL_SUFFIXES.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
+	 * 
 	 * @param javaProject project which contains the variable.
 	 * @param packageName package of the variable's type.
 	 * @param qualifiedTypeName variable's type.
@@ -638,17 +704,23 @@
 	
 	/**
 	 * Suggest name for a getter method. The name is computed from field's name
-	 * and possible prefixes or suffixes are removed.<br>
+	 * and possible prefixes or suffixes are removed.
+	 * <p>
 	 * If the field name is <code>preFieldNamesuf</code> and the prefix for field is <code>pre</code> and
 	 * the suffix for field is <code>suf</code> then the prosposed name is <code>isFieldName</code> for boolean field or
 	 * <code>getFieldName</code> for others. If there is no prefix and suffix the proposal is <code>isPreFieldNamesuf</code>
-	 * for boolean field or <code>getPreFieldNamesuf</code> for others.<br>
-	 * 
+	 * for boolean field or <code>getPreFieldNamesuf</code> for others.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_FIELD_PREFIXES, 
 	 * CODEASSIST_FIELD_SUFFIXES for instance field and CODEASSIST_STATIC_FIELD_PREFIXES,
-	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.<br>
+	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
+	 * 
 	 * @param project project which contains the field.
 	 * @param fieldName field's name's.
 	 * @param modifiers field's modifiers as defined by the class
@@ -684,17 +756,23 @@
 	
 	/**
 	 * Suggest name for a getter method. The name is computed from field's name
-	 * and possible prefixes or suffixes are removed.<br>
+	 * and possible prefixes or suffixes are removed.
+	 * <p>
 	 * If the field name is <code>preFieldNamesuf</code> and the prefix for field is <code>pre</code> and
 	 * the suffix for field is <code>suf</code> then the prosposed name is <code>isFieldName</code> for boolean field or
 	 * <code>getFieldName</code> for others. If there is no prefix and suffix the proposal is <code>isPreFieldNamesuf</code>
-	 * for boolean field or <code>getPreFieldNamesuf</code> for others.<br>
-	 * 
+	 * for boolean field or <code>getPreFieldNamesuf</code> for others.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_FIELD_PREFIXES, 
 	 * CODEASSIST_FIELD_SUFFIXES for instance field and CODEASSIST_STATIC_FIELD_PREFIXES,
-	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.<br>
+	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
+	 * 
 	 * @param project project which contains the field.
 	 * @param fieldName field's name's.
 	 * @param modifiers field's modifiers as defined by the class
@@ -719,15 +797,22 @@
 
 	/**
 	 * Suggest name for a setter method. The name is computed from field's name
-	 * and possible prefixes or suffixes are removed.<br>
+	 * and possible prefixes or suffixes are removed.
+	 * <p>
 	 * If the field name is <code>preFieldNamesuf</code> and the prefix for field is <code>pre</code> and
 	 * the suffix for field is <code>suf</code> then the prosposed name is <code>setFieldName</code>.
-	 * If there is no prefix and suffix the proposal is <code>setPreFieldNamesuf</code>.<br>
+	 * If there is no prefix and suffix the proposal is <code>setPreFieldNamesuf</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_FIELD_PREFIXES, 
 	 * CODEASSIST_FIELD_SUFFIXES for instance field and CODEASSIST_STATIC_FIELD_PREFIXES,
-	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.<br>
+	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
+	 * 
 	 * @param project project which contains the field.
 	 * @param fieldName field's name's.
 	 * @param modifiers field's modifiers as defined by the class
@@ -768,15 +853,22 @@
 	
 	/**
 	 * Suggest name for a setter method. The name is computed from field's name
-	 * and possible prefixes or suffixes are removed.<br>
+	 * and possible prefixes or suffixes are removed.
+	 * <p>
 	 * If the field name is <code>preFieldNamesuf</code> and the prefix for field is <code>pre</code> and
 	 * the suffix for field is <code>suf</code> then the prosposed name is <code>setFieldName</code>.
-	 * If there is no prefix and suffix the proposal is <code>setPreFieldNamesuf</code>.<br>
+	 * If there is no prefix and suffix the proposal is <code>setPreFieldNamesuf</code>.
+	 * </p>
+	 * <p>
 	 * This method is affected by the following JavaCore options : CODEASSIST_FIELD_PREFIXES, 
 	 * CODEASSIST_FIELD_SUFFIXES for instance field and CODEASSIST_STATIC_FIELD_PREFIXES,
-	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.<br>
+	 * CODEASSIST_STATIC_FIELD_SUFFIXES for static field.
+	 * </p>
+	 * <p>
 	 * For a complete description of these configurable options, see <code>getDefaultOptions</code>.
 	 * For programmaticaly change these options, see <code>JavaCore#setOptions()</code>.
+	 * </p>
+	 * 
 	 * @param project project which contains the field.
 	 * @param fieldName field's name's.
 	 * @param modifiers field's modifiers as defined by the class
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java
index 8384752..7dd5fe8 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java
@@ -26,8 +26,8 @@
  *   | "S"  // short
  *   | "V"  // void
  *   | "Z"  // boolean
- *   | "L" + binaryTypeName + ";"  // resolved named type (i.e., in compiled code)
- *   | "Q" + sourceTypeName + ";"  // unresolved named type (i.e., in source code)
+ *   | "L" + binaryTypeName + ";"  // resolved named type (in compiled code)
+ *   | "Q" + sourceTypeName + ";"  // unresolved named type (in source code)
  *   | "[" + typeSignature  // array of type denoted by typeSignature
  * </pre>
  * </p>
@@ -495,7 +495,7 @@
 			}
 		default:
 			// non primitive type
-			int sigLength = arrayCount + 1 + length + 1; // e.g. '[[[Ljava.lang.String;'
+			int sigLength = arrayCount + 1 + length + 1; // for example '[[[Ljava.lang.String;'
 			sig = new char[sigLength];
 			int sigIndex = arrayCount+1; // index in sig
 			int startID = 0; // start of current ID in typeName
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java
index f553d9e..424d7ba 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/ToolFactory.java
@@ -102,7 +102,7 @@
 	 * Create a classfile bytecode disassembler, able to produce a String representation of a given classfile.
 	 * 
 	 * @return a classfile bytecode disassembler
-	 * @see IClassFileDisassembler
+	 * @see org.eclipse.jdt.core.util.IClassFileDisassembler
 	 * @deprecated - should use factory method creating ClassFileBytesDisassembler instead 
 	 */
 	public static org.eclipse.jdt.core.util.IClassFileDisassembler createDefaultClassFileDisassembler(){
@@ -255,7 +255,6 @@
 	 * can then be extracted using <code>IScanner#getLineEnds</code>. Only non-unicode escape sequences are 
 	 * considered as valid line separators.
   	 * @return a scanner
-	 * @see ToolFactory#createScanner(boolean,boolean,boolean,boolean, boolean)
 	 * @see org.eclipse.jdt.core.compiler.IScanner
 	 */
 	public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean assertMode, boolean recordLineSeparator){
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/IScanner.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/IScanner.java
index 5087540..7828066 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/IScanner.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/IScanner.java
@@ -32,7 +32,7 @@
 	/**
 	 * Answers the current identifier source, after unicode escape sequences have
 	 * been translated into unicode characters.
-	 * e.g. if original source was <code>\\u0061bc</code> then it will answer <code>abc</code>.
+	 * For example, if original source was <code>\\u0061bc</code> then it will answer <code>abc</code>.
 	 * 
 	 * @return the current identifier source, after unicode escape sequences have
 	 * been translated into unicode characters
@@ -42,7 +42,7 @@
 	/**
 	 * Answers the current identifier source, before unicode escape sequences have
 	 * been translated into unicode characters.
-	 * e.g. if original source was <code>\\u0061bc</code> then it will answer <code>\\u0061bc</code>.
+	 * For example, if original source was <code>\\u0061bc</code> then it will answer <code>\\u0061bc</code>.
 	 * 
 	 * @return the current identifier source, before unicode escape sequences have
 	 * been translated into unicode characters
@@ -72,7 +72,7 @@
 
 	/**
 	 * Answers the starting position of a given line number. This line has to have been encountered
-	 * already in the tokenization process (i.e. it cannot be used to compute positions of lines beyond
+	 * already in the tokenization process (in other words, it cannot be used to compute positions of lines beyond
 	 * current token). Once the entire source has been processed, it can be used without any limit.
 	 * Line starting positions are zero-based, and start immediately after the previous line separator (if any).
 	 * 
@@ -83,7 +83,7 @@
 
 	/**
 	 * Answers the ending position of a given line number. This line has to have been encountered
-	 * already in the tokenization process (i.e. it cannot be used to compute positions of lines beyond
+	 * already in the tokenization process (in other words, it cannot be used to compute positions of lines beyond
 	 * current token). Once the entire source has been processed, it can be used without any limit.
 	 * Line ending positions are zero-based, and correspond to the last character of the line separator 
 	 * (in case multi-character line separators).	 
@@ -114,7 +114,7 @@
 	/**
 	 * Read the next token in the source, and answers its ID as specified by <code>ITerminalSymbols</code>.
 	 * Note that the actual token ID values are subject to change if new keywords were added to the language
-	 * (i.e. 'assert' keyword in 1.4).
+	 * (for instance, 'assert' is a keyword in 1.4).
 	 * 
 	 * @throws InvalidInputException in case a lexical error was detected while reading the current token
 	 */
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
index 7ac6bba..d4bf8f0 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
@@ -17,7 +17,7 @@
  * 
  * Disclaimer : These constant values are generated automatically using a Java 
  * grammar, therefore their actual values are subject to change if new keywords 
- * were added to the language (i.e. 'assert' keyword in 1.4).
+ * were added to the language (for instance, 'assert' is a keyword in 1.4).
  * 
  * @see IScanner
  * @since 2.0
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/CompilationUnitSorter.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/CompilationUnitSorter.java
index 7a60c5b..98ab372 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/CompilationUnitSorter.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/CompilationUnitSorter.java
@@ -127,7 +127,7 @@
      *		  RELATIVE_ORDER property</code></td>
 	 *	  </tr>
 	 * </table>
-	 * Clients should rely on the AST nodes being properly parented or on
+	 * Clients should not rely on the AST nodes being properly parented or on
 	 * having source range information. (Future releases may provide options
 	 * for requesting additional information like source positions, full ASTs,
 	 * non-recursive sorting, etc.)
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java
index 67b2696..78b6661 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Buffer.java
@@ -135,8 +135,9 @@
  * @see IBuffer
  */
 public String getContents() {
-	if (this.contents == null) return null;
-	return new String(this.getCharacters());
+	char[] chars = this.getCharacters();
+	if (chars == null) return null;
+	return new String(chars);
 }
 /**
  * @see IBuffer
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java
index 175f1c3..e60e452 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java
@@ -61,7 +61,7 @@
 	protected Map fNewElements;
 
 	/**
-	 * Stack of parent scope info objects - i.e. the info on the
+	 * Stack of parent scope info objects. The info on the
 	 * top of the stack is the parent of the next element found.
 	 * For example, when we locate a method, the parent info object
 	 * will be the type the method is contained in.
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java
index fc03f61..431494e 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java
@@ -26,7 +26,7 @@
 /**
  * This operation creates an <code>ITypeHierarchy</code> for a specific type within
  * a specified region, or for all types within a region. The specified
- * region limits the number of resolved subtypes (i.e. to the subset of
+ * region limits the number of resolved subtypes (to the subset of
  * types in the specified region). The resolved supertypes may go outside
  * of the specified region in order to reach the root(s) of the type
  * hierarchy. A Java Project is required to provide a context (classpath)
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java
index 59602f1..b3661d5 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeleteElementsOperation.java
@@ -31,8 +31,8 @@
  * If an element does not exist, it is ignored.
  *
  * <p>NOTE: This operation only deletes elements contained within leaf resources -
- * i.e. elements within compilation units. To delete a compilation unit or
- * a package, etc (i.e. an actual resource), a DeleteResourcesOperation
+ * that is, elements within compilation units. To delete a compilation unit or
+ * a package, etc (which have an actual resource), a DeleteResourcesOperation
  * should be used.
  */
 public class DeleteElementsOperation extends MultiOperation {
@@ -103,7 +103,7 @@
 		ICompilationUnit cu = (ICompilationUnit) element;
 	
 		// keep track of the import statements - if all are removed, delete
-		// the import container (i.e. report it in the delta)
+		// the import container (and report it in the delta)
 		int numberOfImports = cu.getImports().length;
 	
 		IBuffer buffer = cu.getBuffer();
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/HandleFactory.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/HandleFactory.java
index 5bc8b4b..e1d47a7 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/HandleFactory.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/HandleFactory.java
@@ -60,7 +60,7 @@
 	 * or a path to a file in a jar file - it then contains the path to the jar file and the path to the file in the jar
 	 * (eg. c:/jdk1.2.2/jre/lib/rt.jar|java/lang/Object.class or /Proj/rt.jar|java/lang/Object.class)
 	 * NOTE: This assumes that the resource path is the toString() of an IPath, 
-	 *       i.e. it uses the IPath.SEPARATOR for file path
+	 *       in other words, it uses the IPath.SEPARATOR for file path
 	 *            and it uses '/' for entries in a zip file.
 	 * If not null, uses the given scope as a hint for getting Java project handles.
 	 */
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/IJavaElementRequestor.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/IJavaElementRequestor.java
index b38a1b0..66c6717 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/IJavaElementRequestor.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/IJavaElementRequestor.java
@@ -20,7 +20,7 @@
  * This interface is used by IRequestorNameLookup. As results
  * are found by IRequestorNameLookup, they are reported to this
  * interface. An IJavaElementRequestor is able to cancel
- * at any time (i.e. stop receiving results), by responding
+ * at any time (that is, stop receiving results), by responding
  * <code>true</code> to <code>#isCancelled</code>.
  */
 public interface IJavaElementRequestor {
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElement.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElement.java
index df898a9..0fbfbdd 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElement.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElement.java
@@ -43,7 +43,7 @@
 	 * that a duplicate named element exists. For example, if
 	 * there are two fields in a compilation unit with the
 	 * same name, the occurrence count is used to distinguish
-	 * them.  The occurrence count starts at 1 (i.e. the first 
+	 * them.  The occurrence count starts at 1 (thus the first 
 	 * occurrence is occurrence 1, not occurrence 0).
 	 */
 	protected int fOccurrenceCount = 1;
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementDelta.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementDelta.java
index c925147..d7b79af 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementDelta.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElementDelta.java
@@ -63,7 +63,7 @@
 /**
  * Creates the root delta. To create the nested delta
  * hierarchies use the following convenience methods. The root
- * delta can be created at any level (i.e. project, package root,
+ * delta can be created at any level (for example: project, package root,
  * package fragment...).
  * <ul>
  * <li><code>added(IJavaElement)</code>
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java
index 6f88a10..c2241ac 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaModelManager.java
@@ -122,7 +122,7 @@
 			}
 			if (outputLocation.isPrefixOf(folderPath)) {
 				// only allow nesting in project's output if there is a corresponding source folder
-				// or if the project's output is not used (i.e. all source folders have a custom output)
+				// or if the project's output is not used (in other words, if all source folders have their custom output)
 				IClasspathEntry[] classpath = project.getResolvedClasspath(true);
 				boolean isOutputUsed = false;
 				for (int i = 0, length = classpath.length; i < length; i++) {
@@ -563,7 +563,7 @@
 	/**
 	 * addElementChangedListener method comment.
 	 * Need to clone defensively the listener information, in case some listener is reacting to some notification iteration by adding/changing/removing
-	 * any of the other (i.e. it deregisters itself).
+	 * any of the other (for example, if it deregisters itself).
 	 */
 	public void addElementChangedListener(IElementChangedListener listener, int eventMask) {
 		for (int i = 0; i < this.elementChangedListenerCount; i++){
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
index 05847f6..34b51d7 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
@@ -1970,9 +1970,8 @@
 	}
 	
 	/**
-	 * Saves the classpath in a shareable format (VCM-wise) if necessary.
-	 *  (i.e.&nbsp;semantically different).
-	 * Will never write an identical one.
+	 * Saves the classpath in a shareable format (VCM-wise) only when necessary, that is, if  it is semantically different
+	 * from the existing one in file. Will never write an identical one.
 	 * 
 	 * @return Return whether the .classpath file was modified.
 	 */
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java
index a420167..ae93e99 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java
@@ -41,7 +41,7 @@
  *
  * <p>There are two logical sets of methods within this interface.  Methods
  * which start with <code>find*</code> are intended to be convenience methods for quickly
- * finding an element within another element, i.e. finding a class within a
+ * finding an element within another element; for instance, for finding a class within a
  * package.  The other set of methods all begin with <code>seek*</code>.  These methods
  * do comprehensive searches of the <code>IJavaProject</code> returning hits
  * in real time through an <code>IJavaElementRequestor</code>.
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Openable.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Openable.java
index ab0b70c..5749c58 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Openable.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/Openable.java
@@ -163,7 +163,7 @@
 
 /**
  * Builds this element's structure and properties in the given
- * info object, based on this element's current contents (i.e. buffer
+ * info object, based on this element's current contents (reuse buffer
  * contents if this element has an open buffer, or resource contents
  * if this element does not have an open buffer). Children
  * are placed in the given newElements table (note, this element
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OverflowingLRUCache.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OverflowingLRUCache.java
index 82bdac2..43e7aef 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OverflowingLRUCache.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/OverflowingLRUCache.java
@@ -258,7 +258,7 @@
 	 *	Calls <code>privateRemoveEntry</code> with the external functionality enabled.
 	 *
 	 * @param shuffle indicates whether we are just shuffling the queue 
-	 * (i.e., the entry table is left alone).
+	 * (in which case, the entry table is not modified).
 	 */
 	protected void privateRemoveEntry (LRUCacheEntry entry, boolean shuffle) {
 		privateRemoveEntry(entry, shuffle, true);
@@ -272,7 +272,7 @@
  *	pointers are not changed.
  *
  *	@param shuffle indicates whether we are just shuffling the queue 
- *	(i.e., the entry table is left alone).
+ *	(in which case, the entry table is not modified).
  */
 protected void privateRemoveEntry(LRUCacheEntry entry, boolean shuffle, boolean external) {
 
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java
index 4a8488f..b083b03 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRoot.java
@@ -183,14 +183,10 @@
  *
  * @see JavaElement
  */
-protected void closing(Object info) throws JavaModelException {
-	SourceMapper mapper= getSourceMapper();
-	if (mapper != null) {
-		mapper.close();
-	}
-	super.closing(info);
-}
-
+//protected void closing(Object info) throws JavaModelException { TODO remove after 2.1
+//	((PackageFragmentRootInfo) info).sourceMapper = null;
+//	super.closing(info);
+//}
 /**
  * Compute the package fragment children of this package fragment root.
  * 
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java
index 35ce251..5cdde47 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java
@@ -143,7 +143,7 @@
  * Retuns the SourceMapper for this root, or <code>null</code>
  * if this root does not have attached source.
  */
-protected SourceMapper getSourceMapper() {
+protected synchronized SourceMapper getSourceMapper() {
 	return this.sourceMapper;
 }
 private static boolean isClasspathEntry(IPath path, IClasspathEntry[] resolvedClasspath) {
@@ -170,7 +170,7 @@
 /**
  * Sets the SourceMapper for this root.
  */
-protected void setSourceMapper(SourceMapper mapper) {
+protected synchronized void setSourceMapper(SourceMapper mapper) {
 	this.sourceMapper= mapper;
 }
 }
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java
index f5f448f..4a0e38a 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SetClasspathOperation.java
@@ -264,8 +264,8 @@
 
 	/**
 	 * Generates the delta of removed/added/reordered roots.
-	 * Use three deltas in case the same root is removed/added/reordered (i.e. changed from
-	 * K_SOURCE to K_BINARY or visa versa)
+	 * Use three deltas in case the same root is removed/added/reordered (for
+	 * instance, if it is changed from K_SOURCE to K_BINARY or vice versa)
 	 */
 	protected void generateClasspathChangeDeltas(
 		IClasspathEntry[] oldResolvedPath,
@@ -676,9 +676,8 @@
 	/**
 	 * Sets the output location of the pre-specified project.
 	 *
-	 * <p>This can cause changes in package fragments - i.e. if the
-	 * old and new output location folder could be considered as
-	 * a package fragment.
+	 * <p>This can cause changes in package fragments, in case either  the
+	 * old or new output location folder are considered as a package fragment.
 	 */
 	protected void updateOutputLocation() throws JavaModelException {
 		
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java
index f874598..3b8a705 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMapper.java
@@ -295,7 +295,9 @@
 	
 	private void computeAllRootPaths(IType type) {
 		IPackageFragmentRoot root = (IPackageFragmentRoot) type.getPackageFragment().getParent();
-		this.rootPaths = new HashSet();
+		if (this.rootPaths == null) {
+			this.rootPaths = new HashSet();
+		}
 		long time = 0;
 		if (VERBOSE) {
 			System.out.println("compute all root paths for " + root.getElementName()); //$NON-NLS-1$
@@ -315,7 +317,7 @@
 					String entryName = entry.getName();
 					if (!entry.isDirectory()) {
 						int index = entryName.indexOf('/');
-						if (index != -1) {
+						if (index != -1 && Util.isClassFileName(entryName)) {
 							String firstLevelPackageName = entryName.substring(0, index);
 							if (JavaConventions.validatePackageName(firstLevelPackageName).isOK()) {
 								firstLevelPackageNames.add(firstLevelPackageName);
@@ -818,7 +820,7 @@
 	}
 
 	/*
-	 * Finds the source file name (i.e. the simple .java file name) for the given IBinaryType.
+	 * Finds the source file name (using the simple .java file name) for the given IBinaryType.
 	 * Returns null if not found.
 	 */
 	public String findSourceFileName(IType type, IBinaryType info) {
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java
index c2f55b1..3cfd14c 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java
@@ -19,10 +19,10 @@
 /* package */ class SourceMethodElementInfo extends MemberElementInfo implements ISourceMethod {
 
 	/**
-	 * For a source method (i.e. method contained in a comilation unit)
+	 * For a source method (that is, a method contained in a compilation unit)
 	 * this is a collection of the names of the parameters for this method,
-	 * in the order the parameters are delcared. For a binary method (i.e.
-	 * method declared in a binary type), these names are invented as
+	 * in the order the parameters are delcared. For a binary method (that is, 
+	 * a method declared in a binary type), these names are invented as
 	 * "arg"i where i starts at 1. This is an empty array if this method
 	 * has no parameters.
 	 */
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java
index b6895a5..1acff1f 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java
@@ -68,8 +68,8 @@
 	/**
 	 * A temporary cache of infos to handles to speed info
 	 * to handle translation - it only contains the entries
-	 * for the types in the region (i.e. no supertypes outside
-	 * the region).
+	 * for the types in the region (in other words, it contains
+	 * no supertypes outside the region).
 	 */
 	protected Map infoToHandle;
 	public HierarchyBuilder(TypeHierarchy hierarchy) throws JavaModelException {
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
index 54ec30f..a6d7af2 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
@@ -50,7 +50,7 @@
 	/**
 	 * A temporary cache of compilation units to handles to speed info
 	 * to handle translation - it only contains the entries
-	 * for the types in the region (i.e. no supertypes outside
+	 * for the types in the region (in other words, it contains no supertypes outside
 	 * the region).
 	 */
 	protected Map cuToHandle;
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java
index 988415f..f7d9b83 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java
@@ -33,7 +33,7 @@
 
 	/**
 	 * The Java Project in which the hierarchy is being built - this
-	 * provides the context (i.e. classpath and namelookup rules)
+	 * provides the context for determining a classpath and namelookup rules/
 	 */
 	protected IJavaProject fProject;
 /**
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java
index c43fc1a..eba759f 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java
@@ -79,7 +79,7 @@
 	
 	/**
 	 * The Java Project in which the hierarchy is being built - this
-	 * provides the context (i.e. classpath and namelookup rules)
+	 * provides the context for determining a classpath and namelookup rules.
 	 * Possibly null.
 	 */
 	protected IJavaProject project;
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java
index d53054a..53ce617 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java
@@ -281,7 +281,7 @@
  * @param returnTypeEnd - a source position corresponding to the last character
  *		of the return type
  * @param returnTypeDimensionCount - the array dimension count as supplied on the
- *		return type, i.e. public int[] foo() {}
+ *		return type (for instance, 'public int[] foo() {}')
  * @param name - the name of this constructor
  * @param nameStart - a source position corresponding to the first character of the name
  * @param nameEnd - a source position corresponding to the last character of the name
@@ -294,7 +294,7 @@
  * @param parametersEnd - a source position corresponding to the last character of the
  *		parameter list
  * @extendedReturnTypeDimensionCount - the array dimension count as supplied on the
- *		end of the parameter list, i.e. public int foo()[] {}
+ *		end of the parameter list (for instance, 'public int foo()[] {}')
  * @extendedReturnTypeDimensionEnd - a source position corresponding to the last character
  *		of the extended return type dimension
  * @param exceptionTypes - a list of the exception types
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java
index ce87f38..45653cd 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java
@@ -46,7 +46,7 @@
  * @param document - the document containing this node's original contents
  * @param sourceRange - a two element array of integers describing the
  *		entire inclusive source range of this node within its document.
- * 		A compilation unit's source range is the entire document - i.e.
+ * 		A compilation unit's source range is the entire document - 
  *		the first integer is zero, and the second integer is the position
  *		of the last character in the document.
  */
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMField.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMField.java
index 81f0637..a0641a7 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMField.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMField.java
@@ -88,7 +88,7 @@
  *		is the first character of the first modifier for this member, and
  *		the second integer is the last whitespace character preceeding the
  *		next part of this member declaration. If there are no modifiers present
- *		in this node's source code (i.e. default protection), this array
+ *		in this node's source code (that is, package default visibility), this array
  *		contains two -1's.
  * @param typeRange- a two element array describing the location of the
  *		typeName in the document - the positions of the first and last characters
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java
index 0422b25..76d1a0d 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java
@@ -67,7 +67,7 @@
  *		is the first character of the first modifier for this member, and
  *		the second integer is the last whitespace character preceeding the
  *		next part of this member declaration. If there are no modifiers present
- *		in this node's source code (i.e. default protection), this array
+ *		in this node's source code (that is, package default visibility), this array
  *		contains two -1's.
  * @param bodyStartPosition - the position of the open brace of the body
  * 		of this initialzer.
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMember.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMember.java
index f983b7c..2d05295 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMember.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMember.java
@@ -57,7 +57,7 @@
 	 * The original inclusive source range of the
 	 * member's modifiers in the document, or -1's if
 	 * the member did not originally have modifiers in
-	 * the source code (i.e. default protection).
+	 * the source code (that is, package default visibility).
 	 */
 	 protected int[] fModifierRange;
 
@@ -94,7 +94,7 @@
  *		is the first character of the first modifier for this member, and
  *		the second integer is the last whitespace character preceeding the
  *		next part of this member declaration. If there are no modifiers present
- *		in this node's source code (i.e. default protection), this array
+ *		in this node's source code (that is, package default visibility), this array
  *		contains two -1's.
  */
 DOMMember(char[] document, int[] sourceRange, String name, int[] nameRange, int[] commentRange, int flags, int[] modifierRange) {
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMethod.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMethod.java
index c3897fa..fd88639 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMethod.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMMethod.java
@@ -146,7 +146,7 @@
  *		is the first character of the first modifier for this member, and
  *		the second integer is the last whitespace character preceeding the
  *		next part of this member declaration. If there are no modifiers present
- *		in this node's source code (i.e. default protection), this array
+ *		in this node's source code (that is, package default visibility), this array
  *		contains two -1's.
  * @param isConstructor - true if the method is a contructor, otherwise false
  * @param returnType - the normalized return type of this method
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMNode.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMNode.java
index 31eb0d6..90b0a00 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMNode.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMNode.java
@@ -34,7 +34,7 @@
  * form from which to generate the contents of the document fragment. As attributes
  * of a node are changed, the node attempts to maintain the original formatting
  * by only replacing relevant portions of the shared document with the value
- * of new attributes (i.e. filling in the form with replacement values).
+ * of new attributes (that is, filling in the form with replacement values).
  *
  * <p>When a node is first created, it is considered unfragmented. When any
  * attribute of the node is altered, the node is then considered fragmented
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMType.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMType.java
index d5cb508..5a195e6 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMType.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/jdom/DOMType.java
@@ -156,7 +156,7 @@
  *		is the first character of the first modifier for this member, and
  *		the second integer is the last whitespace character preceeding the
  *		next part of this member declaration. If there are no modifiers present
- *		in this node's source code (i.e. default protection), this array
+ *		in this node's source code (that is, package default visibility), this array
  *		contains two -1's.
  * @param typeRange - a two element array describing the location of the 'class'
  *		or 'interface' keyword in the type declaration - first and last character
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CharArrayOps.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CharArrayOps.java
index 2ab34c5..1bdf70c 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CharArrayOps.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/CharArrayOps.java
@@ -14,7 +14,7 @@
  * A class to do characters operations so that we can use
  * char arrays more effectively.
  */
-public class CharArrayOps {
+public class CharArrayOps { // TODO: should promote to CharOperation
 /**
  * Returns the char arrays as an array of Strings
  */
@@ -97,7 +97,7 @@
  *  1. the src array is null
  *  2. the start index is out of bounds
  *  3. the length parameter specifies a end point which is out of bounds
- * Does not return a copy of the array if possible, i.e. if start is zero
+ * Does not return a copy of the array if possible, in other words, if start is zero
  * and length equals the length of the src array.
  *
  * @param src - the array from which elements need to be copied
@@ -127,8 +127,8 @@
  *  1. the src array is null
  *  2. the start index is out of bounds
  *  3. the length parameter specifies a end point which is out of bounds
- * Does not return a copy of the array if possible, i.e. if start is zero
- * and length equals the length of the src array.
+ * Does not return a copy of the array if possible (if start is zero
+ * and length equals the length of the src array).
  *
  * @param src - the array from which elements need to be copied
  * @param start - the start index in the src array
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/LRUCache.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/LRUCache.java
index 9f2e83e..f8b1b2b 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/LRUCache.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/LRUCache.java
@@ -302,7 +302,7 @@
 	/**
 	 * Adds the given entry from the receiver.
 	 * @param shuffle Indicates whether we are just shuffling the queue 
-	 * (i.e., the entry table is left alone).
+	 * (in which case, the entry table is not modified).
 	 */
 	protected void privateAddEntry (LRUCacheEntry entry, boolean shuffle) {
 		
@@ -335,7 +335,7 @@
 	/**
 	 * Removes the entry from the entry queue.  
 	 * @param shuffle indicates whether we are just shuffling the queue 
-	 * (i.e., the entry table is left alone).
+	 * (in which case, the entry table is not modified).
 	 */
 	protected void privateRemoveEntry (LRUCacheEntry entry, boolean shuffle) {
 		
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java
index f5a4942..506a9f3 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/PublicScanner.java
@@ -406,7 +406,7 @@
  * Line numbers are 1-based, and relative to the scanner initialPosition. 
  * Character positions are 0-based.
  *
- * e.g.	getLineStart(1) --> 0	i.e. first line starts at character 0.
+ * e.g.	getLineStart(1) --> 0	indicates that the first line starts at character 0.
  *
  * In case the given line number is inconsistent, answers -1.
  */
@@ -2795,8 +2795,8 @@
 }
 public int scanNumber(boolean dotPrefix) throws InvalidInputException {
 
-	//when entering this method the currentCharacter is the firt
-	//digit of the number , i.e. it may be preceeded by a . when
+	//when entering this method the currentCharacter is the first
+	//digit of the number. It may be preceeded by a '.' when
 	//dotPrefix is true
 
 	boolean floating = dotPrefix;
diff --git a/org.eclipse.jdt.core/notes/R20_buildnotes_jdt-core.html b/org.eclipse.jdt.core/notes/R20_buildnotes_jdt-core.html
index 238480c..6f3fab0 100644
--- a/org.eclipse.jdt.core/notes/R20_buildnotes_jdt-core.html
+++ b/org.eclipse.jdt.core/notes/R20_buildnotes_jdt-core.html
@@ -15,7 +15,7 @@
 <table border=0 cellspacing=5 cellpadding=2 width="100%" >
   <tr> 
     <td align=left width="72%">
-      <font face="Verdana, Arial, Helvetica" size="+3"><b>jdt core - build notes R2.0</font>
+      <font face="Verdana, Arial, Helvetica" size="+3"><b>jdt core - build notes R2.0</b></font>
       <br><font face="Arial, Helvetica, sans-serif" size="-2" color="#8080ff">java development tooling core</font></td>
   </tr>
 	<tr><td>&nbsp;</td></tr>
@@ -243,7 +243,7 @@
 
 <h3>Problem Reports Fixed</h3>
 <a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19714">19714</a>
-Eclipse crashes: Drag & Drop
+Eclipse crashes: Drag &amp; Drop
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19794">19794</a>
 Method body change may result in massive recompilation
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18983">18983</a>
@@ -733,7 +733,7 @@
 	 * COMPILER / Maximum number of problems reported per compilation unit
 	 *    Specify the maximum number of problems reported on each compilation unit.
 	 *     - option id:			"org.eclipse.jdt.core.compiler.maxProblemPerUnit"
-	 *     - possible values:	"<n>" where <n> is zero or a positive integer (if zero then all problems are reported).
+	 *     - possible values:	"&lt;n&gt;" where &lt;n&gt; is zero or a positive integer (if zero then all problems are reported).
 	 *     - default:			"100"
     </pre>
     <li>By default, the Java builder is now aborting build process on projects with classpath problems. This option can be disabled through the Java preferences:
@@ -1261,7 +1261,7 @@
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12588">12588</a>
 Good match marked as potential  
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13143">13143</a>
-Binary constructor search does not work (ref & decl)  
+Binary constructor search does not work (ref &amp; decl)  
 <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13807">13807</a>
 null binding returned for fully qualified array declaration
 <h3>
@@ -2430,7 +2430,7 @@
 <li>Resource copy filters : A new setting allows to specify exclusion filters for resource being copied to the output folder..
 	<ul>
 	<li>option id:			"org.eclipse.jdt.core.builder.resourceCopyExclusionFilters"
-	<li>possible values:	{ "<name>[,<name>]* } where <name> is a file name pattern (only * wild-cards allowed)
+	<li>possible values:	{ "&lt;name&gt;[,&lt;name&gt;]* } where &lt;name&gt; is a file name pattern (only * wild-cards allowed)
 	<li>default:			"" 
 	</ul>
 </li>
@@ -2880,7 +2880,7 @@
 constructors (i.e. allow them to throw any exceptions).
 <li> The compiler now enforces that interface methods be compatible with Object ones.
 <li> The batch compiler will no longer create package directory structure anymore when the command line
-argument '-d' <tt><destination></tt> is omitted (compliant with standard batch compilers).
+argument '-d' <tt>&lt;destination&gt;</tt> is omitted (compliant with standard batch compilers).
 <li> A type hierarchy that misses a super type is not rooted at Object any longer,
      but the subtype (of the missing type) will be a root (this is the behavior of
      VA/Java and VAME.)
@@ -3572,7 +3572,9 @@
 Problem Reports Fixed</h3>
 <a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5821">5821</a>: Refactor
 Rename renames local variable instead of member in case of name clash
-<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5003>5003</a>:     Review JavaBuilder cancelation handling <br><a href=" http://dev.eclipse.org/bugs/show_bug.cgi?id="5790">5790</a>:
+<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5003">5003</a>:
+Review JavaBuilder cancelation handling
+<br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5790">5790</a>:
 IJavaProject.hasBuildState() fails with new builder
 <br><a href="http://dev.eclipse.org/bugs/show_bug.cgi?id=5794">5794</a>:
 Polymorphic search doesn't work in dependent projects
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchConstants.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchConstants.java
index e95342d..d26ee65 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchConstants.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchConstants.java
@@ -106,7 +106,7 @@
 	/**
 	 * When searching for field matches, it will exclusively find read accesses, as
 	 * opposed to write accesses. Note that some expressions are considered both
-	 * as field read/write accesses: e.g. x++; x+= 1;
+	 * as field read/write accesses: for example, x++; x+= 1;
 	 * 
 	 * @since 2.0
 	 */
@@ -115,7 +115,7 @@
 	/**
 	 * When searching for field matches, it will exclusively find write accesses, as
 	 * opposed to read accesses. Note that some expressions are considered both
-	 * as field read/write accesses: e.g. x++; x+= 1;
+	 * as field read/write accesses: for example,  x++; x+= 1;
 	 * 
 	 * @since 2.0
 	 */
@@ -125,7 +125,7 @@
 	
 	/**
 	 * The search pattern matches exactly the search result,
-	 * i.e. the source of the search result equals the search pattern.
+	 * that is, the source of the search result equals the search pattern.
 	 */
 	int EXACT_MATCH = 0;
 	/**
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchResultCollector.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchResultCollector.java
index 7e94ccb..ecc3fa3 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchResultCollector.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchResultCollector.java
@@ -29,7 +29,7 @@
  * </p>
  * <p>
  * The order of the results is unspecified. Clients must not rely on this order to display results, 
- * but they should sort these results (e.g. in a syntactical order).
+ * but they should sort these results (for example, in syntactical order).
  * <p>
  * The <code>IJavaSearchResultCollector</code> is also used to provide a progress monitor to the 
  * <code>SearchEngine</code>.
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchScope.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchScope.java
index 067fa56..2674e13 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchScope.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/IJavaSearchScope.java
@@ -53,15 +53,15 @@
  * <ul>
  * <li> If the path is a project path, this is the full path of the project
  *       (see <code>IResource.getFullPath()</code>).
- *        E.g. /MyProject
+ *        For example, /MyProject
  * </li>
  * <li> If the path is a JAR path and this JAR is internal to the workspace,
  *        this is the full path of the JAR file (see <code>IResource.getFullPath()</code>).
- *        E.g. /MyProject/mylib.jar
+ *        For example, /MyProject/mylib.jar
  * </li>
  * <li> If the path is a JAR path and this JAR is external to the workspace,
  *        this is the full OS path to the JAR file on the file system.
- *        E.g. d:\libs\mylib.jar
+ *        For example, d:\libs\mylib.jar
  * </li>
  * </ul>
  * 
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/ITypeNameRequestor.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/ITypeNameRequestor.java
index fa4e0c2..8ac9f4f 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/ITypeNameRequestor.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/ITypeNameRequestor.java
@@ -27,12 +27,12 @@
  * @param simpleTypeName the simple name of the class
  * @param enclosingTypeNames if the class is a member type, 
  *          the simple names of the enclosing types from the outer-most to the
- *          direct parent of the class (e.g. if the class is x.y.A$B$C then
+ *          direct parent of the class (for example, if the class is x.y.A$B$C then
  *          the enclosing types are [A, B]. This is an empty array if the class
  *          is a top-level type.
  * @param path the full path to the resource containing the class. If the resource is a .class file
  *          or a .java file, this is the full path in the workspace to this resource. If the
- *          resource is an archive (i.e. a .zip or .jar file), the path is composed of 2 paths separated
+ *          resource is an archive (that is, a .zip or .jar file), the path is composed of 2 paths separated
  *		 	 by <code>IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR</code>: 
  *			 the first path is the full OS path to the archive (if it is an external archive), 
  *			 or the workspace relative <code>IPath</code> to the archive (if it is an internal archive), 
@@ -46,12 +46,12 @@
  * @param simpleTypeName the simple name of the interface
  * @param enclosingTypeNames if the interface is a member type, 
  *          the simple names of the enclosing types from the outer-most to the
- *          direct parent of the interface (e.g. if the interface is x.y.A$B$I then
+ *          direct parent of the interface (for example, if the interface is x.y.A$B$I then
  *          the enclosing types are [A, B]. This is an empty array if the interface
  *          is a top-level type.
  * @param path the full path to the resource containing the interface. If the resource is a .class file
  *          or a .java file, this is the full path in the workspace to this resource. If the
- *          resource is an archive (i.e. a .zip or .jar file), the path is composed of 2 paths separated
+ *          resource is an archive (that is, a .zip or .jar file), the path is composed of 2 paths separated
  *		 	 by <code>IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR</code>: 
  *			 the first path is the full OS path to the archive (if it is an external archive), 
  *			 or the workspace relative <code>IPath</code> to the archive (if it is an internal archive), 
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java
index 8d1081d..da02e62 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/core/search/SearchEngine.java
@@ -127,7 +127,7 @@
  * have their underlying resource included in or equals to one of the given
  * resources.
  * <p>
- * Resources must not overlap, e.g. one cannot include a folder and its children.
+ * Resources must not overlap, for example, one cannot include a folder and its children.
  * </p>
  *
  * @param resources the resources the scope is limited to
@@ -402,7 +402,7 @@
 /**
  * Searches for matches of a given search pattern. Search patterns can be created using helper
  * methods (from a String pattern or a Java element) and encapsulate the description of what is
- * being searched (e.g. search method declarations in a case sensitive way).
+ * being searched (for example, search method declarations in a case sensitive way).
  *
  * @param workspace the workspace
  * @param searchPattern the pattern to be searched for
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/LRUCache.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/LRUCache.java
index fc56375..c6eb80d 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/LRUCache.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/index/impl/LRUCache.java
@@ -308,7 +308,7 @@
 	/**
 	 * Adds the given entry from the receiver.
 	 * @param shuffle Indicates whether we are just shuffling the queue 
-	 * (i.e., the entry table is left alone).
+	 * (in which case, the entry table is not modified).
 	 */
 	protected void privateAddEntry(LRUCacheEntry entry, boolean shuffle) {
 
@@ -341,7 +341,7 @@
 	/**
 	 * Removes the entry from the entry queue.  
 	 * @param shuffle indicates whether we are just shuffling the queue 
-	 * (i.e., the entry table is left alone).
+	 * (in which case, the entry table is not modified).
 	 */
 	protected void privateRemoveEntry(LRUCacheEntry entry, boolean shuffle) {
 
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java
index 5b6f9dc..b09224c 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/IndexSelector.java
@@ -157,9 +157,14 @@
 	// acquire the in-memory indexes on the fly
 	int length = this.indexKeys.length;
 	IIndex[] indexes = new IIndex[length];
+	int count = 0;
 	for (int i = 0; i < length; i++){
 		// may trigger some index recreation work
-		indexes[i] = indexManager.getIndex(indexKeys[i], true /*reuse index file*/, false /*do not create if none*/);
+		IIndex index = indexManager.getIndex(indexKeys[i], true /*reuse index file*/, false /*do not create if none*/);
+		if (index != null) indexes[count++] = index; // only consider indexes which are ready yet
+	}
+	if (count != length) {
+		System.arraycopy(indexes, 0, indexes=new IIndex[count], 0, count);
 	}
 	return indexes;
 }
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/PatternSearchJob.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/PatternSearchJob.java
index c1b4f92..696964d 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/PatternSearchJob.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/PatternSearchJob.java
@@ -110,7 +110,7 @@
 		}
 	}
 	public boolean isReadyToRun() {
-		if (this.indexSelector == null) { // only check once, i.e. as long as this job is used, it will keep the same index picture
+		if (this.indexSelector == null) { // only check once. As long as this job is used, it will keep the same index picture
 			this.indexSelector = new IndexSelector(this.scope, this.focus, this.isPolymorphicSearch, this.indexManager);
 			this.indexSelector.getIndexes(); // will only cache answer if all indexes were available originally
 		}
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java
index 3ebe753..d44762f 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java
@@ -435,7 +435,7 @@
 }
 /**
  * Concat(first, second, third, fourth, fifth, sep) --> [first][second][sep][third][sep][fourth][sep][fifth]
- * i.e. no separator is inserted in between first and second
+ * in other words, no separator is inserted in between first and second
  */
 protected static final char[] concat(char[] firstWithSeparator, char[] second, char[] third, char[] fourth, char[] fifth, char separator) {
 	int length1= firstWithSeparator.length;
@@ -459,7 +459,7 @@
 }
 /**
  * Concat(first, second, third, sep) --> [first][second][sep][third]
- * i.e. no separator is inserted in between first and second
+ * in other words, no separator is inserted in between first and second
  */
 protected static final char[] concat(char[] firstWithSeparator, char[] second, char[] third, char separator) {
 	int length1= firstWithSeparator.length;
@@ -474,7 +474,7 @@
 }
 /**
  * Concat(first, second, third, charAfterThird, fourth, fifth, sixth, charAfterSixth, last, sep) --> [first][second][sep][third][sep][charAfterThird][sep][fourth][sep][fifth][sep][sixth][sep][charAfterSixth][last]
- * i.e. no separator is inserted in between first and second
+ * in other words, no separator is inserted in between first and second
  */
 protected static final char[] concat(char[] firstWithSeparator, char[] second, char[] third, char charAfterThird, char[] fourth, char[] fifth, char[] sixth, char charAfterSixth, char last, char separator) {
 	int length1= firstWithSeparator.length;
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SearchPattern.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SearchPattern.java
index 79c2ad9..a0bb1a4 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SearchPattern.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SearchPattern.java
@@ -183,8 +183,7 @@
 				if (parameterTypeQualifications[i].length == 1 && parameterTypeQualifications[i][0] == '*') {
 					parameterTypeQualifications[i] = null;
 				} else {
-					// prefix with a '*' as the full qualification could be bigger 
-					// (i.e. because of an import)
+					// prefix with a '*' as the full qualification could be bigger (because of an import)
 					parameterTypeQualifications[i] = CharOperation.concat(ONE_STAR, parameterTypeQualifications[i]);
 				}
 				parameterTypeSimpleNames[i] = CharOperation.subarray(parameterTypePart, lastDotPosition+1, parameterTypePart.length);
@@ -344,8 +343,7 @@
 			if (typeQualification.length == 1 && typeQualification[0] == '*') {
 				typeQualification = null;
 			} else {
-				// prefix with a '*' as the full qualification could be bigger 
-				// (i.e. because of an import)
+				// prefix with a '*' as the full qualification could be bigger (because of an import)
 				typeQualification = CharOperation.concat(ONE_STAR, typeQualification);
 			}
 			typeSimpleName = CharOperation.subarray(typePart, lastDotPosition+1, typePart.length);
@@ -583,8 +581,7 @@
 				if (parameterTypeQualifications[i].length == 1 && parameterTypeQualifications[i][0] == '*') {
 					parameterTypeQualifications[i] = null;
 				} else {
-					// prefix with a '*' as the full qualification could be bigger 
-					// (i.e. because of an import)
+					// prefix with a '*' as the full qualification could be bigger (because of an import)
 					parameterTypeQualifications[i] = CharOperation.concat(ONE_STAR, parameterTypeQualifications[i]);
 				}
 				parameterTypeSimpleNames[i] = CharOperation.subarray(parameterTypePart, lastDotPosition+1, parameterTypePart.length);
@@ -604,7 +601,7 @@
 			if (returnTypeQualification.length == 1 && returnTypeQualification[0] == '*') {
 				returnTypeQualification = null;
 			} else {
-				// (i.e. because of an import)
+				// because of an import
 				returnTypeQualification = CharOperation.concat(ONE_STAR, returnTypeQualification);
 			}			
 			returnTypeSimpleName = CharOperation.subarray(returnTypePart, lastDotPosition+1, returnTypePart.length);
@@ -734,8 +731,7 @@
 				typeSimpleName = (lastDot != -1 ? typeSignature.substring(lastDot + 1) : typeSignature).toCharArray();
 				typeQualification = 
 					lastDot != -1 ? 
-						// prefix with a '*' as the full qualification could be bigger 
-						// (i.e. because of an import)
+						// prefix with a '*' as the full qualification could be bigger (because of an import)
 						CharOperation.concat(ONE_STAR, typeSignature.substring(0, lastDot).toCharArray()) : 
 						null;
 			} catch (JavaModelException e) {
@@ -852,8 +848,7 @@
 				returnSimpleName = (lastDot != -1 ? returnType.substring(lastDot + 1) : returnType).toCharArray();
 				returnQualification = 
 					lastDot != -1 ? 
-						// prefix with a '*' as the full qualification could be bigger 
-						// (i.e. because of an import)
+						// prefix with a '*' as the full qualification could be bigger (because of an import)
 						CharOperation.concat(ONE_STAR, returnType.substring(0, lastDot).toCharArray()) : 
 						null;
 			} catch (JavaModelException e) {
@@ -869,8 +864,7 @@
 				parameterSimpleNames[i] = (lastDot != -1 ? signature.substring(lastDot + 1) : signature).toCharArray();
 				parameterQualifications[i] = 
 					lastDot != -1 ? 
-						// prefix with a '*' as the full qualification could be bigger 
-						// (i.e. because of an import)
+						// prefix with a '*' as the full qualification could be bigger (because of an import)
 						CharOperation.concat(ONE_STAR, signature.substring(0, lastDot).toCharArray()) : 
 						null;
 			}
@@ -1202,8 +1196,8 @@
 }
 
 /**
- * Returns the type of container of this pattern, i.e. is it in compilation unit,
- * in class declarations, field declarations, or in method declarations.
+ * Returns the type(s) of container for this pattern.
+ * It is a bit combination of types, denoting compilation unit, class declarations, field declarations or method declarations.
  */
 protected abstract int matchContainer();
 /**
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java
index c7bee16..32e1807 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java
@@ -62,8 +62,8 @@
 	this.needsResolve = superQualification != null;
 }
 /*
- * superRef/Object/java.lang/X/p (i.e. class p.X extends java.lang.Object)
- * superRef/Exception//X/p (i.e. class p.X extends Exception)
+ * "superRef/Object/java.lang/X/p" represents "class p.X extends java.lang.Object"
+ * "superRef/Exception//X/p" represents "class p.X extends Exception"
  */
 public void decodeIndexEntry(IEntryResult entryResult){
 
@@ -145,7 +145,7 @@
 			char[] word = entry.getWord();
 			if (slash + length >= word.length) continue;
 			
-			// ensure that's the end of the ref (i.e. simple name is not a prefix of ref)
+			// ensure it is the end of the ref (a simple name is not a prefix of ref)
 			if (word[length+slash] != '/') continue; 
 			
 			// compare ref to simple name
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java
index 3985941..8e92009 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java
@@ -194,7 +194,7 @@
 		return false;
 	/* check enclosingTypeName - exact match only */
 	if (enclosingTypeNames != null){
-		// empty char[][] means no enclosing type, i.e. the decoded one is the empty char array
+		// empty char[][] means no enclosing type (in which case, the decoded one is the empty char array)
 		if (enclosingTypeNames.length == 0){
 			if (decodedEnclosingTypeNames != CharOperation.NO_CHAR_CHAR) return false;
 		} else {
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/processing/JobManager.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/processing/JobManager.java
index f178548..5a1e1a1 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/processing/JobManager.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/processing/JobManager.java
@@ -169,8 +169,8 @@
 	 * an issue.Therefore, this functionality allows a given job to be run without
 	 * colliding with background ones.
 	 * Note: multiple thread might attempt to perform concurrent jobs at the same time,
-	 * 			and shoud synchronize (it is deliberately left to clients to decide whether
-	 *			concurrent jobs might interfere or not, i.e. multiple read jobs are ok).
+	 *            and should synchronize (it is deliberately left to clients to decide whether
+	 *            concurrent jobs might interfere or not. In general, multiple read jobs are ok).
 	 *
 	 * Waiting policy can be:
 	 * 		IJobConstants.ForceImmediateSearch