JDT/Core Release Notes 3.4
Author: IBM

jdt core - build notes 3.4 stream
Java development tools core
Here are the build notes for the Eclipse JDT/Core plug-in project org.eclipse.jdt.core, describing bug resolution and substantial changes in the HEAD branch. For more information on 3.4 planning, please refer to JDT/Core release plan, the next milestone plan, the overall official plan, or the build schedule. This present document covers all changes since Release 3.3 (also see a summary of API changes). Maintenance of previous releases of JDT/Core is performed in parallel branches: R3.3.x, R3.2.x, R3.1.x, R3.0.x, R2.1.x, R2.0.x, R1.0.x.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4.0 - June 13, 2008 - 3.4.0
Project org.eclipse.jdt.core v_874 (cvs).

## What's new in this drop

### Problem Reports Fixed

236599 Fix wording of JDT

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4.0 - June 9, 2008
Project org.eclipse.jdt.core v_873 (cvs).

## What's new in this drop

### Problem Reports Fixed

236252 Batch compiler's help should not have 'release candidate-4' in the version name

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC4 - June 3, 2008 - 3.4 RELEASE CANDIDATE 4
Project org.eclipse.jdt.core v_872 (cvs).

## What's new in this drop

### Problem Reports Fixed

234718 JarPackageFragmentRoot.computeChildren(..) is slow
234848 Need to trace classpath container initialization failures

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC3 - May 29, 2008 - 3.4 RELEASE CANDIDATE 3
Project org.eclipse.jdt.core v_871 (cvs).

## What's new in this drop

### Problem Reports Fixed

234307 Java Model Exception from org.eclipse.jdt.internal.core.Buffer.save(Buffer.javga:361)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC3 - May 29, 2008
Project org.eclipse.jdt.core v_870 (cvs).

## What's new in this drop

### Problem Reports Fixed

234336 [formatter] JavaDocTestCase.testMultiLineCommentIndent* tests fail in I20080527-2000 build
233800 [1.5][compiler] Internal compiler NPE on checkUnsafeCast

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC3 - May 27, 2008
Project org.eclipse.jdt.core v_869 (cvs).

## What's new in this drop

### Problem Reports Fixed

234120 PublicScanner not in sync with internal Scanner
233625 Content Assist outof memory
232768 [formatter] does not format block and single line comment if too much selected
233887 [javadoc][1.5] Build of Eclipse project stop by NullPointerException and will not continue on Eclipse version later than 3.4M7
232814 [compiler] Testcase with "value1 - (-value2)" not working when value2 is final

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC2 - May 22, 2008 - 3.4 RELEASE CANDIDATE 2
Project org.eclipse.jdt.core v_868 (cvs).

## What's new in this drop

### Problem Reports Fixed

230944 [formatter] Formatter does not respect /*-

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC2 - May 22, 2008
Project org.eclipse.jdt.core v_867 (cvs).

## What's new in this drop

### Problem Reports Fixed

232788 [formatter] Formatter misaligns stars when formatting block comments
233228 [formatter] line comments which contains \\u are not correctly formatted
233224 [formatter] Xdoclet tags looses @ on format
232466 [formatter] References of inlined tags are still split in certain circumstances
228648 AST: no binding for Javadoc reference to inner class

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC2 - May 20, 2008
Project org.eclipse.jdt.core v_866 (cvs).

## What's new in this drop

### Problem Reports Fixed

232803 Reconcile doesn't find methods with a $ in parameter types
232488 [formatter] Code formatter scrambles JavaDoc of Generics
225737 [compiler][1.5] Generics - JDT cannot compile hudson-core when javac can
231861 [1.5][compiler] Generics: problem with partial generics

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC1 - May 15, 2008- 3.4 RELEASE CANDIDATE 1
Project org.eclipse.jdt.core v_865 (cvs).

## What's new in this drop

### Problem Reports Fixed

232285 [formatter] New comment formatter wrongly formats javadoc header/footer with several contiguous stars
229480 [builder] compiler exception causes NPE in AbstractImageBuilder.acceptResult()

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC1 - May 14, 2008
Project org.eclipse.jdt.core v_864 (cvs).

## What's new in this drop

### Problem Reports Fixed

232037 CompilationUnit#equals(Object) throws NPE if owner is null
227185 [1.5][compiler] Compiler error using generics with static class

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC1 - May 13, 2008
Project org.eclipse.jdt.core v_863 (cvs).

## What's new in this drop

### Problem Reports Fixed

231297 [formatter] New JavaDoc formatter wrongly split inline tags before reference
231263 [formatter] New JavaDoc formatter wrongly indent tags description
229682 [formatter] New comment put text over the max line length in some cases
231293 New errors about indirectly referenced classes from required .class files in 20080508-200
231622 Some classes from Missing classes from Cntrl-Shift-T
231747 [assist] UnsupportedOperationException even when the context is extended

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC1 - May 12, 2008
Project org.eclipse.jdt.core v_862 (cvs).

## What's new in this drop

### Problem Reports Fixed

231579 Converting compiler.tool to API tools support
231367 org.eclipse.jdt.compiler.tool is not singleton
230026 [1.5][compiler] CCE during static import resolution with parameterized type
230885 [content assist] NPE at ParameterGuesser.createVariable()
163200 Moving code with compile errors outside of a source folder preserve compile errors
229951 StackOverflowError during JavaSearchScope.add for large workspace
230864 [assist] Code assist do not work in parameterized method with 'this' as receive

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC1 - May 8, 2008
Project org.eclipse.jdt.core v_861 (cvs).

## What's new in this drop

### Problem Reports Fixed

230127 [clean up] NPE in Organize Imports save action
231053 [formatter] Comment formatter fails to format long strings in @see references
231060 [formatter] '*' are not preserved in Javadoc comments when located at the beginning of the line

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC1 - May 7, 2008
Project org.eclipse.jdt.core v_860 (cvs).

## What's new in this drop

### Problem Reports Fixed

222284 [search] ZipException while searching if linked jar doesn't exist any longer
191322 [javadoc] @see or @link reference to method without signature fails to resolve to base class method
194743 Constructor tooltip does not show constructor javadoc without source attachment
228464 Annotation.getMemberValuePairs() empty for single attribute with empty value
229128 [search] Search finding matches in working copies that are not part of scope
230391 [organize imports] unmatched packages group is always first
229927 No code assist in array initializer

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4RC1 - May 5, 2008
Project org.eclipse.jdt.core v_859 (cvs).

## What's new in this drop

### Problem Reports Fixed

230364 [formatter] Test failure in CleanUpStressTest after changes to comment formatter
214558 [1.5][compiler] javac reports ambiguous method ref that Eclipse does not identify
228291 [1.5][compiler] Incorrect unsafe warning for casting complex but static types.
230070 [1.5][compiler] Internal compiler error: NullPointerException at org.eclipse.jdt.internal.compiler.ast.CastExpression.checkUnsafeCast()
230230 [formatter] New comment formatter does not handle properly all scanner exceptions
230184 [formatter] New comment formatter split comment line between contiguous tokens
229954 [formatter] New comment formatter fails to format correctly when invalid throws reference
229932 [formatter] New comment formatter wrongly formats @param tags with wrong syntax
229683 [formatter] New comment formatter takes 2 passes to format when tags are inside text
229968 Perf regression while computing type hierarchy
229636 JavaModelException should stay instanciatable
228109 [1.5][compiler] Enum static field initializer in enum constructor failed to give compilation error

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M7 - April 30, 2008 - 3.4 MILESTONE 7
Project org.eclipse.jdt.core v_858 (cvs).

## What's new in this drop

### Problem Reports Fixed

228651 [dom] NPE in MemberValuePairBinding.isDefault()
229569 [formatter] New comments formatter does not indent lines inside immutable tags
229526 Conversion to Api tools adds a new internal method inside an API class
229595 OptionTests.testBug68993() failing due to wrong assumption

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M7 - April 29, 2008
Project org.eclipse.jdt.core v_857 (cvs).

## What's new in this drop

### Problem Reports Fixed

229373 [formatter] New comment formatter gets lost when encountering invalid closing tags
229304 cannot 'Open Type' a binary type that is present in an external folder
229326 [formatter] New comment formatter takes 2 passes to format some block comments
227730 [Javadoc] Missing description should not be warned for {@inheritDoc}

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M7 - April 28, 2008
Project org.eclipse.jdt.core v_856 (cvs).

## What's new in this drop

### Problem Reports Fixed

229108 [formatter] New comment formatter adds unnecessary spaces before and after <code> tags
229107 [formatter] New comment formatter fails to format correctly when <table ...> tags is used
229103 [formatter] New comment formatter split inlined tags incorrectly

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M7 - April 27, 2008
Project org.eclipse.jdt.core v_855 (cvs).

## What's new in this drop

### Problem Reports Fixed

227043 [formatter] CodeFormatter does not format line and block comments
228528 NPE when interrupting the build
228639 Source attachment root detection doesn't work if source folder contains META-INF
79798 [compiler] Wrong compiler error when interface overrides two methods with same signature but different exceptions
227546 [assist] No method declaration completion in enum constant
158526 [search] NPE in JavaSearchScope.addEnclosingProjectOrJar(..)
182738 [search] Avoid keeping list of roots in JavaWorkspaceScope
228193 [formatter] Javadoc comments are still formatted using JavaDocRegion!
227822 [select] ClassCastException thrown if unable to resolve core Java types
227855 incorrect compilation errors related to annotations
208010 [compiler] Compiler reports unneccessary warning for static members
222735 DOM AST: hide recovered bindings unless 'recovered bindings' is enabled

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M7 - April 22, 2008
Project org.eclipse.jdt.core v_854 (cvs).

## What's new in this drop

- ZIP archives that have an extension other than `.zip` and `.jar` can now be put on the classpath as well. See bug 182360 for details.

### Problem Reports Fixed

209643 keyword completion proposals for @interface and enum
227531 add one exception logging in ASTParser
227941 org.eclipse.jdt.internal.compiler.batch.Main writes bad characters to an xml log file
227930 [compiler] NPE during exception reporting
227502 [1.5][compiler] Bad error message for abstract enum
227761 NPE from CompletionContext.getVisibleElements
227813 root detection in in external linked source folders
209149 [1.7][compiler] 1.7 compliance allows type params to be declared in any order
182360 Only Jar and Zip files allowed for java.io.File in ClasspathContainers using
222326 [1.5][compiler] NullPointerException during: "Compute launch button tooltip"
161030 add code assist for enum values
207631 [Content Assist] Autocompletion fails after use of binary right-shift operators
226918 [jsr199] the standard java file manager returned by the Eclipse compiler does not accept non-modifiable iterators as remaining arg to JavaFileManager#handleOption

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M7 - April 15, 2008
Project org.eclipse.jdt.core v_853 (cvs).

## What's new in this drop

- The Java compiler now uses multiple CPUs when running in batch mode. See bug 142126.
- In order to avoid breaking existing clients while fixing bug 102780, the new formatter behavior (i.e. format comments while formatting the whole compilation unit) will be activated only if a specific flag was set.

  This flag is defined in CodeFormatter and named `'F_INCLUDE_COMMENTS'`. Clients will have to combine it with existing CodeFormatter.K_COMPILATION_UNIT or CodeFormatter.UNKNOWN kinds to see the fix for this bug activated...

  Here's its complete new API changes done on `org.eclipse.jdt.core.formatter.CodeFormatter`:

      /**
       * Flag used to include the comments during the formatting of the code
       * snippet.
       *
       * This flag can only be combined with following kinds:
       *      . {@link #K_COMPILATION_UNIT}
       *      . {@link #K_UNKNOWN}
       *
       * Note also that it has an effect only when the option
       * {@link DefaultCodeFormatterConstants
       *  #FORMATTER_COMMENT_FORMAT_JAVADOC_COMMENT}
       * is set to {@link DefaultCodeFormatterConstants#TRUE} while calling
       * {@link #format(int, String, int, int, int, String)} or
       * {@link #format(int, String, IRegion[], int, String)} methods
       *
       * For example, with the Eclipse default formatter options, the formatting of
       * the following code snippet using {@link #K_COMPILATION_UNIT}:
       *
       * public class X {
       * /**
       *  * This is just a simple example to show that comments will be formatted while processing a compilation unit only if the constant flag F_INCLUDE_COMMENT flag is set.
       *  * @param str The input string */
       *  void foo(String str){}}
       *
       * will produce the following output:
       *
       * public class X {
       *      /**
       *       * This is just a simple example to show that comments will be formatted while processing a compilation unit only if the constant flag F_INCLUDE_COMMENT flag is set.
       *       *
       *       * @param str The input string
       *       */
       *      void foo(String str){
       *      }
       *  }
       *
       * Adding this flavor to the kind given while formatting the same source
       * (e.g. {@link #K_COMPILATION_UNIT} | {@link #F_INCLUDE_COMMENTS})
       * will produce the following output instead:
       *
       * public class X {
       *      /**
       *       * This is just a simple example to show that comments will be formatted
       *       * while processing a compilation unit only if the constant flag
       *       * F_INCLUDE_COMMENT flag is set.
       *       *
       *       * @param str
       *       *                 The input string
       *       */
       *      void foo(String str){
       *      }
       *  }
       *
       * Note: Although we're convinced that the formatter should
       * always include the comments while processing a
       * {@link #K_COMPILATION_UNIT kind of compilation unit}, we
       * have decided to add a specific flag to fix this formatter incorrect behavior.
       * This will prevent all existing clients using the {@link #K_COMPILATION_UNIT}
       * kind to be broken while formatting.
       *
       * @since 3.4
       */
      public static final int F_INCLUDE_COMMENTS = 0x1000;

  Note that CodeFormatter.UNKNOWN and CodeFormatter.K_COMPILATION_UNIT specification will be updated to include this new possible combination:

      /**
       * Unknown kind
       *
       * Note that since 3.4, the {@link #F_INCLUDE_COMMENTS} flag can be added
       * to this constant in order to get the comments formatted if a
       * compilation unit is processed.
       */
      public static final int K_UNKNOWN = 0x00;

      /**
       * Kind used to format a compilation unit
       *
       * Note that using this constant, the javadoc comments are only indented while
       * processing the compilation unit.
       *
       * Since 3.4, if the corresponding comment option is set to
       * true then it is also possible to format the comments on the fly
       * by adding the {@link #F_INCLUDE_COMMENTS} flag to this kind of format.
       */
      public static final int K_COMPILATION_UNIT = 0x08;

### Problem Reports Fixed

142126 utilizing multiple CPUs for Java compiler
102780 [formatter] CodeFormatter does not format Javadoc
219855 [1.5][compiler] StackOverflowError during: "Requesting Java AST from selection"
223986 Invalid incompatible return type error
226890 [jsr199] enable CompilerToolTests#testCompilerOneClassWithEclipseCompiler4 on Linux
226673 CompletionContext.getVisibleElements(..) doesn't find assignable fields
178982 [assist] Bad static import relevance in content assist
225563 Class with compile errors results in invalid class file format
226313 Anonymous enum type has wrong name and source range
223685 [clean-up] Necessary cast removed
82712 [1.5] Code assist does not show method parameters from static imports
226134 CCE in SourceMethod.getDefaultValue() for constructor
97310 code assist for type variable bounds: should not suggest classes
224402 [compiler] CCE in compiler: MissingTypeBinding cannot be cast to ProblemReferenceBinding
96604 [1.5][codeassist] missing proposals for wildcard capture

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M7 - April 8, 2008
Project org.eclipse.jdt.core v_852 (cvs).

## What's new in this drop

### Problem Reports Fixed

215331 [assist] Inconsistent completions for member types
221904 Java Model Exception while trying to open *.class file
223488 'package-info.java' does not exist in PackageBinding.getAnnotations()
193045 [1.5][assist] Code completion fails in inner class w/ foreach loop
223899 Base type var should not be proposed before Object var in == case
225577 [compiler] Default abstract methods should be tagged as synthetic
133005 BinaryTypeConverter cannot convert generic type reference.
224351 Regression in performance test FullSourceWorkspaceModelTests#testFindType
215975 new field declaration CompletionProposal cuts changes initial prefix
217078 [compiler] compiler.regression.RuntimeTests#test0001_memory_exhaustion failing when using IBM JRE
219099 Content assist does not not offer multiple choices for ambiguous static imports

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M7 - April 1, 2008
Project org.eclipse.jdt.core v_851 (cvs).

## What's new in this drop

### Problem Reports Fixed

224715 Missing abstract problem methods should be tagged as synthetic methods

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 28, 2008 - 3.4 MILESTONE 6
Project org.eclipse.jdt.core v_850 (cvs).

## What's new in this drop

### Problem Reports Fixed

224458 [search] NPE trying to search for a field declaration

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 27, 2008
Project org.eclipse.jdt.core v_849 (cvs).

## What's new in this drop

### Problem Reports Fixed

223878 [content assist] Illegal argument exception from content assist

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 26, 2008
Project org.eclipse.jdt.core v_848 (cvs).

## What's new in this drop

### Problem Reports Fixed

222534 [compiler] wrong field hides field warning for private fields

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 25, 2008
Project org.eclipse.jdt.core v_847 (cvs).

## What's new in this drop

- `JavaCore.COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION_ALL_TAGS` introduced in 3.4M3 has been renamed to `COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION_ALL_STANDARD_TAGS`.

### Problem Reports Fixed

223838 [dom] AnnotationBinding.isRecovered() always return false
221267 [1.5][compiler] missing annotation bindings on interface method parameter

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 23, 2008
Project org.eclipse.jdt.core v_846 (cvs).

## What's new in this drop

- The batch compiler now uses the `Class-Path` clause of jar files manifests to complete the classpath. For jar files that are specified on a `-classpath` option, the compiler follows `Class-Path` clauses recursively and appends each referenced jar file to the end of the classpath, provided it is not on the classpath yet. See bug 97332 for further details.
- Added APIs to call the batch compiler from a stand-alone application: `BatchCompiler#compiler(String, PrintWriter, PrintWriter, CompilationProgress)` and `BatchCompiler#compiler(String[], PrintWriter, PrintWriter, CompilationProgress)`. See 217233 for more details.
- All search reference matches may now have a local element. Clients can access this local element using the `getLocalElement()` method on the new `ReferenceMatch` API class:

      /**
       * An abstract Java search match that represents a reference.
       *
       * This class is not intended to be subclassed by clients.
       *
       * @since 3.4
       */
      public abstract class ReferenceMatch extends SearchMatch {
      ...
      /**
       * Returns the local element of this search match, or null if none.
       * A local element is the inner most element that contains the reference and that is not
       * reachable by navigating from the root of the {@link IJavaModel} using
       * {@link IParent#getChildren()}.
       *
       * Known element types for local elements are {@link IJavaElement#ANNOTATION},
       * {@link IJavaElement#LOCAL_VARIABLE} and {@link IJavaElement#TYPE_PARAMETER}.
       * However clients should not assume that this set of element types is closed as
       * other types of elements may be returned in the future, e.g. if new types
       * of elements are added in the Java model. Clients can only assume that the
       * {@link IJavaElement#getParent() parent} chain of this local element eventually leads
       * to the element from {@link #getElement()}.
       *
       * The local element being an {@link IAnnotation} is the most usal case. For example,
       *
       *    . searching for the references to the method Annot.clazz() in
       *
       *             public class Test {
       *                 void method() {
       *                     @Annot(clazz=Test.class) int x;
       *                 }
       *             }
       *
       *      will return one {@link MethodReferenceMatch} match whose local element
       *      is the {@link IAnnotation} 'Annot'.
       *
       *    . searching for the references to the type Deprecated in
       *
       *             public class Test {
       *                @Deprecated void method() {}
       *             }
       *
       *      will return one {@link TypeReferenceMatch} match whose local element
       *      is the {@link IAnnotation} 'Deprecated'.
       *
       *    . searching for the references to the field CONST in
       *
       *              @Num(number= Num.CONST)
       *              @interface Num {
       *                  public static final int CONST= 42;
       *                  int number();
       *              }
       *
       *      will return one {@link FieldReferenceMatch} match whose local element
       *      is the {@link IAnnotation} 'Num'.
       *
       * A local element may also be a {@link ILocalVariable} whose type is the referenced type. For example,
       *
       *    . searching for the references to the type Test in
       *
       *         public class Test {
       *             void foo() {
       *                Test local;
       *             }
       *         }
       *
       *      will return one {@link TypeReferenceMatch} match whose local element
       *      is the {@link ILocalVariable} 'local'.
       *
       * Or a local element may be an {@link ITypeParameter} that extends the referenced type. For example,
       *
       *    . searching for the references to the type Test in
       *
       *         public class X<T extends Test> {
       *         }
       *
       *      will return one {@link TypeReferenceMatch} match whose local element
       *      is the {@link ITypeParameter} 'T'.
       *
       * @return the local element of this search match, or null if none.
       *
       * @since 3.4
       */
      public IJavaElement getLocalElement() {
      	return null;
      }

  See bug 209996 for more details.

### Problem Reports Fixed

209996 [search] Add a way to access the most local enclosing annotation for reference search matches
222902 [Javadoc] Missing description should not be warned in some cases
217233 [compiler] Add compiler API to call the batch compiler from a stand-alone application
223495 [assist] Member types of missing parametrized types are not proposed
223479 [assist] Member types of missing types are not proposed in class body
223253 NPE in TypeBinding.getName
223360 [search] Huge error message if OOME while building workspace
222213 Java model not updated after quick fix 'Add unimplemented methods'
97332 [compiler] Add support for classpath specified in manifest file inside a jar
218824 [DOM/AST] incorrect code leads to IllegalArgumentException during AST creation
183211 [1.5][compiler] single static import for a field is ambiguous

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 18, 2008
Project org.eclipse.jdt.core v_845 (cvs).

## What's new in this drop

- Added new API `org.eclipse.jdt.core.JavaCore#getOptionForConfigurableSeverity(int)` to link back problem IDs to options that configure problems:

      	/**
      	 * Returns the option that can be used to configure the severity of the
      	 * compiler problem identified by problemID if any, null otherwise. Non-null
      	 * return values are taken from the constants defined by this class whose
      	 * names start with COMPILER_PB and for which the possible values of the
      	 * option are defined by { "error", "warning", "ignore" }. A null return
      	 * value means that the provided problem ID is unknown or that it matches
      	 * a problem whose severity cannot be configured.
      	 * @param problemID one of the problem IDs defined by {@link IProblem}
      	 * @return the option that can be used to configure the severity of the
      	 *         compiler problem identified by problemID if any, null otherwise
      	 * @since 3.4
      	 */
      	public static String getOptionForConfigurableSeverity(int problemID) {...}

### Problem Reports Fixed

222399 Regression in several Model performance tests
221680 Classpath gets reset randomly in headless mode
222458 IType#getFullyQualifiedParameterizedName() is underspecified
221723 Override method fails with and error saying "1" due to a java.lang.ArrayIndexOutOfBoundsException:
218603 [api] provide a mapping from problem id to preference key
219625 [1.5][compiler] Generics related AbstractMethodError that is not given by Sun Java
216930 [1.5][compiler] Wrong compiler error when using static method with same signature as non static one but with variable arguments
222457 Javadoc fixes for IType#get*QualifiedName()
222080 [assist] Wrong proposals order when completing on an item of an array
222182 [formatter] AIOOB in Util.getLineNumber(Util.java:438)
156168 [model] type separator is ignored in BinaryType.getFullyQualifiedName(enclosingTypeSeparator)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 11, 2008
Project org.eclipse.jdt.core v_844 (cvs).

## What's new in this drop

- CodeAssist: Added new API to give more information about completion context:
  - CompletionContext#getEnclosingElement() - This method returns the innermost enclosing Java element which contains the completion location.

        public class X {
        	void foo() {
        		zzz| // ctrl+space at | location
        	}
        }

    `getEnclosingElement()` returns the IMethod named foo.
  - CompletionContext#getVisibleElements(String) - This method returns the elements visible from the completion location.

        public class X {
        	p.Y f1;
        	p.Z f2;
        	void foo() {
        		p.Y l1;
        		p.Z l2;
        		zzz| // ctrl+space at | location
        	}
        }

    `getVisibleElements("Lp/Z;")` returns the IField named f2 and the ILocalVariable name l2.

      public class CompletionRequestor {
      	...

      	/**
      	 * Returns whether this requestor requires an extended context.
      	 *
      	 * By default this method return false.
      	 *
      	 * @return true if this requestor requires an extended context.
      	 *
      	 * @see CompletionContext#isExtended()
      	 *
      	 * @since 3.4
      	 */
      	public boolean isExtendedContextRequired() {...}

      	/**
      	 * Sets whether this requestor requires an extended context.
      	 *
      	 * @param require true if this requestor requires an extended context.
      	 *
      	 * @see CompletionContext#isExtended()
      	 *
      	 * @since 3.4
      	 */
      	public void setRequireExtendedContext(boolean require) {...}

      	...
      }

      public class CompletionContext {
      	...

      	/**
      	 * Returns whether this completion context is an extended context.
      	 * Some methods of this context can be used only if this context is an extended context but an extended context consumes more memory.
      	 *
      	 * @return true if this completion context is an extended context.
      	 *
      	 * @since 3.4
      	 */
      	public boolean isExtended() {...}

      	/**
      	 * Returns the innermost enclosing Java element which contains the completion location or null if this element cannot be computed.
      	 * The returned Java element and all Java elements in the same compilation unit which can be navigated to from the returned Java element are special Java elements:
      	 *
      	 * - they are based on the current content of the compilation unit's buffer, they are not the result of a reconcile operation
      	 * - they are not updated if the buffer changes.
      	 * - they do not contain local types which are not visible from the completion location.
      	 * - they do not give information about categories. {@link IMember#getCategories()} will return an empty array
      	 *
      	 * Reasons for returning null include:
      	 *
      	 * - the compilation unit no longer exists
      	 * - the completion occurred in a binary type. However this restriction might be relaxed in the future.
      	 *
      	 * @return the innermost enclosing Java element which contains the completion location or null if this element cannot be computed.
      	 *
      	 * @exception UnsupportedOperationException if the context is not an extended context
      	 *
      	 * @since 3.4
      	 */
      	public IJavaElement getEnclosingElement() {...}

      	/**
      	 * Return the elements which are visible from the completion location and which can be assigned to the given type.
      	 * An element is assignable if its type can be assigned to a variable
      	 * of the given type, as specified in section 5.2 of The Java Language
      	 * Specification, Third Edition (JLS3).
      	 * A visible element is either:
      	 *
      	 * - a {@link ILocalVariable} - the element type is {@link ILocalVariable#getTypeSignature()}
      	 * - a {@link IField} - the element type is {@link IField#getTypeSignature()}
      	 * - a {@link IMethod} - the element type is {@link IMethod#getReturnType()}
      	 *
      	 * Returned elements defined in the completed compilation unit are special Java elements:
      	 *
      	 * - they are based on the current content of the compilation unit's buffer, they are not the result of a reconcile operation
      	 * - they are not updated if the buffer changes.
      	 * - they do not contain local types which are not visible from the completion location.
      	 * - they do not give information about categories. {@link IMember#getCategories()} will return an empty array
      	 *
      	 * Note the array can be empty if:
      	 *
      	 * - the compilation unit no longer exists
      	 * - the completion occurred in a binary type. However this restriction might be relaxed in the future.
      	 *
      	 * @param typeSignature elements which can be assigned to this type are returned.
      	 * 		If null there is no constraint on the type of the returned elements.
      	 *
      	 * @return elements which are visible from the completion location and which can be assigned to the given type.
      	 *
      	 * @exception UnsupportedOperationException if the context is not an extended context
      	 *
      	 * @see #isExtended()
      	 *
      	 * @since 3.4
      	 */
      	public IJavaElement[] getVisibleElements(String typeSignature) {...}

      	...
      }

### Problem Reports Fixed

221266 Bad syntax error report on string literals containing escapes
202470 [assist] provide all elements that are visible

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 5, 2008
Project org.eclipse.jdt.core v_843 (cvs).

## What's new in this drop

- Added new compiler option to control whether Exception and Throwable are considered or not while reporting unused declared thrown exceptions.

       * Compiler option ID: Reporting Unused Declared Thrown Exception Exempts Exception And Throwable.
       *    When enabled, the compiler will issue an error or a warning when a
       *    method or a constructor is declaring a checked exception else than
       *    java.lang.Throwable or java.lang.Exception as thrown,
       *    but its body actually raises neither that exception, nor any other
       *    exception extending it. When disabled, the compiler will issue an
       *    error or a warning when a method or a constructor is declaring a
       *    checked exception (including java.lang.Throwable and
       *    java.lang.Exception) as thrown, but its body actually raises
       *    neither that exception, nor any other exception extending it.
       *    The severity of the unused declared thrown exception problem is
       *    controlled with option COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION.
       *    This diagnostic is further tuned by options
       *    COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_INCLUDE_DOC_COMMENT_REFERENCE
       *    and COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING.
       *
       *    Option id: "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable"
       *    Possible values: { "enabled", "disabled" }
       *    Default: "enabled"

  (note that the specification for unusedDeclaredThrownException has been amended accordingly, and that another option that had been added in 3.4M5 but never surfaced in the IDE has been withdrawn; see bug 219461 for details)

### Problem Reports Fixed

221215 [assist] NPE in problem reporter
219461 [compiler][options] Limit warning for unecessary unchecked exceptions to Throwable and Exception

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - March 4, 2008
Project org.eclipse.jdt.core v_842 (cvs).

## What's new in this drop

- Added one new `IJavaSearchConstants` fine grained search API constant to reduce the search to type references used in the `instanceof` pattern (see bug 221130):

      /**
       * Return only type references used as an instance of.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int INSTANCEOF_TYPE_REFERENCE = 0x100000;

### Problem Reports Fixed

221110 [search] NPE at org.eclipse.jdt.internal.compiler.util.SimpleLookupTable.removeKey
221130 [search] No fine-grain search for instanceof criteria
220565 adapt to new API ICompilationUnit.applyEdits
219937 Javadoc content assist does not propose method inherited from interface
167262 [1.5][compiler] @Override specification
220967 [compiler] Extra secondary error in presence of missing type
220811 NPE trying to update classpath
215841 [search] Opening Type Hierarchy extremely slow
220542 Trailing separator in classpath entry lost

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - February 27, 2008
Project org.eclipse.jdt.core v_841 (cvs).

## What's new in this drop

- New API added on ICompilationUnit to apply text edits to its buffer.

      public interface ICompilationUnit {
      	...

         /**
          * Applies a text edit to the compilation unit's buffer.
          *
          * @param edit the edit to apply
          * @param monitor the progress monitor to use or null if
          *                no progress should be reported
          * @return the undo edit
          * @throws JavaModelException if this edit can not be applied to the
          *                            compilation unit's buffer. Reasons include:
          * This compilation unit does not exist
          * ({@link IJavaModelStatusConstants#ELEMENT_DOES_NOT_EXIST}).
          * The provided edit can not be applied as there is a problem with the
          * text edit locations ({@link IJavaModelStatusConstants#BAD_TEXT_EDIT_LOCATION}).
          *
          * @since 3.4
          */
          public UndoEdit applyTextEdit(TextEdit edit, IProgressMonitor monitor) throws JavaModelException;
          ...
      }

  Implementors of IBuffer can now additionally implement `IBuffer.ITextEditCapability` and provide the implementation for `applyTextEdit`. Calls to `ICompilationUnit.applyTextEdit` will then be forwarded to this API.
- Compiler is now also able to recover missing parameterized types (e.g. `Zork<String>`).

### Problem Reports Fixed

196200 [jsr269] Need annotation bindings even when code contains errors
220361 [1.5][compiler] Compiler incorrectly rejects static raw member type as parameterized
220111 [1.5][compiler] Type mismatch errors on identical types; code compiles with javac
117694 [api] Applying edits to a ICompilationUnit.
220453 Addition of externalFoldersManager inside the java model manager breaks retrieval of JavaCore.getOptions() with no headless eclipse

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - February 26, 2008
Project org.eclipse.jdt.core v_840 (cvs).

## What's new in this drop

- External library folders are now supported. One can use the existing API `JavaCore#newLibraryEntry(...)` with a file system path to an external library folder to add this folder on the build path. Note that one can also use an external source folder as a source attachment using the same API.
- Code Assist: Added API to give information about the completed token location.
  Clients can call `CompletionContext#getTokenLocation()` to know if the completed token is at the start of the member or at the start of a statement. In the future this API could be improved and more locations could be recognized.

      public class CompletionContext {
      	...

      	/**
      	 * The completed token is the first token of a member declaration.
      	 * e.g.
      	 *
      	 * public class X {
      	 *   Foo| // completion occurs at |
      	 * }
      	 *
      	 * @see #getTokenLocation()
      	 *
      	 * @since 3.4
      	 */
      	public static final int TL_MEMBER_START = 1;

      	/**
      	 * The completed token is the first token of a statement.
      	 * e.g.
      	 *
      	 * public class X {
      	 *   public void bar() {
      	 *     Foo| // completion occurs at |
      	 *   }
      	 * }
      	 *
      	 * @see #getTokenLocation()
      	 *
      	 * @since 3.4
      	 */
      	public static final int TL_STATEMENT_START = 2;

      	/**
      	 * Returns the location of completion token being proposed.
      	 * The returned location is a bit mask which can contain some values
      	 * of the constants declared on this class whose name starts with TL,
      	 * or possibly values unknown to the caller.
      	 *
      	 * The set of different location values is expected to change over time.
      	 * It is strongly recommended that clients do not assume that
      	 * the location contains only known value, and code defensively for
      	 * the possibility of unexpected future growth.
      	 *
      	 * @return the location
      	 *
      	 * @since 3.4
      	 */
      	public int getTokenLocation() {...}

      	...
      }

### Problem Reports Fixed

218397 [search] Can't find references of generic local class.
220171 [assist] No suggesting 'hasGenericError' variable
182537 Enhance classpath container to support external class folders
202467 [assist] provide info what is completed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - February 22, 2008
Project org.eclipse.jdt.core v_839 (cvs).

## What's new in this drop

- The compiler is now better resilient to missing types referenced from sources. This will improve secondary errors, and all JDT stack manipulating DOM AST and bindings. Annotation processors are also now able to see such missing types (also see bug 196200). Note that with current support, parameterized types are not fully recovered.

### Problem Reports Fixed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - February 19, 2008
Project org.eclipse.jdt.core v_838 (cvs).

## What's new in this drop

### Problem Reports Fixed

217995 Documentation for JavaCore#COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION [...] fails to make crystal-clear the cases of Exception and Throwable
217910 Parameter annotations should be displayed in front of each parameter in disassembled code
219064 Javadoc of AST#newTypeDeclaration() refers to inexistent setEnumeration(..)
212096 LocalVariable.hashCode throws NPE when this.parent is null

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M6 - February 12, 2008
Project org.eclipse.jdt.core v_837 (cvs).

## What's new in this drop

### Problem Reports Fixed

217907 Compact mode in the disassembler should also work for annotation values

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M5 - February 5, 2008 - 3.4 MILESTONE 5
Project org.eclipse.jdt.core v_836 (cvs).

## What's new in this drop

### Problem Reports Fixed

212100 [dom] Can't create binding to inner class

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M5 - February 3, 2008
Project org.eclipse.jdt.core v_835 (cvs).

## What's new in this drop

- Code formatter: 3 new options were added to better handle the addition of new lines after annotations.

       * FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION_ON_MEMBER
       * FORMATTER / Option to insert a new line after an annotation on a member (package, class, method, field declaration)
       *     - option id:         "org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member"
       *     - possible values:   { INSERT, DO_NOT_INSERT }
       *     - default:           INSERT
       *
       * FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION_ON_PARAMETER
       * FORMATTER / Option to insert a new line after an annotation on a parameter
       *     - option id:         "org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter"
       *     - possible values:   { INSERT, DO_NOT_INSERT }
       *     - default:           DO_NOT_INSERT
       *
       * FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION_ON_LOCAL_VARIABLE
       * FORMATTER / Option to insert a new line after an annotation on a local variable
       *     - option id:         "org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable"
       *     - possible values:   { INSERT, DO_NOT_INSERT }
       *     - default:           INSERT

  The addition of new lines after annotations has been discussed in bug 122247
  Also note that previously available code formatter constant FORMATTER_INSERT_NEW_LINE_AFTER_ANNOTATION has been deprecated.
  All new options must be enabled to activate old strategy.

### Problem Reports Fixed

210425 [1.5][compiler] @SuppressWarnings("unchecked") not considered necessary for unconstrained generic parameters
217059 Regression in Model performance test testProjectFindUnknownType()
212912 Javadoc bugs in IMemberValuePair
122247 [formatter] add support to handle parameter annotations
216686 [1.5][compiler] Failures of inference and overload resolution
216897 [compiler][options] Compile error when disabling 'Ignore Unchecked Exception'
216683 [1.5][compiler] Confusion when homnymous types in local and enclosing scope
202490 Javadoc of JavaCore options hard to use
216291 [1.5][compiler] Compiler messages should use "1.5" instead of "5.0"
216875 [search] Field- and LocalVariableReferenceMatch confuse read/write for field access on LHS
216895 NPE found in .log while running ClasspathTests
216817 JavaCore.getEncoding() fails when there is no workspace.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M5 - January 29, 2008
Project org.eclipse.jdt.core v_834 (cvs).

## What's new in this drop

### Problem Reports Fixed

216692 [1.5][compiler] Protected type not visible in subclass
216565 [1.5][compiler] Cannot convert T to T
216747 Should use AVOID_NATURE_CONFIG when updating project references
208260 [search] Document the pattern syntax for SearchPattern#createPattern(String, ..)
130778 Invalid annotation elements cause no annotation to be in the AST
210524 [batch][compiler][options] -warn:allDeprecation -warn:-deprecation does not behave as documented
216100 [1.5][compiler] Brigdes are not correcly generated
213249 Regression in TypeHierarchy when a super-class can't be resolved
215681 Type Hierarchy crashes in some cases of user input
215333 [batch][compiler][options] the documentation for specialParamHiding needs improvement
100278 [compiler] Add compiler warning for explicitly declared runtime exceptions
191090 [compiler] Preserve annotations for the problem methods
215843 [1.5][compiler] Compiler error with generic covariant

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M5 - January 22, 2008
Project org.eclipse.jdt.core v_833 (cvs).

## What's new in this drop

### Problem Reports Fixed

215976 PublicScanner doesn't contain all the fix of Scanner
215759 DOM AST regression tests should be improved
215858 [AST/DOM] CCE when using ASTParser.setFocalPosition(int) with the position of a field declaration name
127739 IAE in Signature.getReturnType while hovering a method of type having $ in its name
210746 Class folder in build path does not refresh properly
138882 Should surface failure to get CU's contents
214972 [1.5][compiler] Wrong Signature for methods inside InnerTypes with generics .

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M5 - January 15, 2008
Project org.eclipse.jdt.core v_832 (cvs).

## What's new in this drop

### Problem Reports Fixed

215019 [search] JavaSearchBugsTests.testBug181488a is randomly failing
213703 [search] Indexing job progress should be more detailed
186540 [search] engine should allocate progress monitor ticks for reporting package declarations
214731 [batch][compiler] ClasspathJar#getPath does not honor its contract
211588 [batch][compiler][options] undue interactions between enableJavadoc, javadoc and allJavadoc
213427 EFS throws NullPointerException
181981 [model] Linked Source Folders with Parallel package structure do not work with occurrences
213692 [compiler] Wrong unnecessary NON-NLS diagnostic after syntax recovery
214450 annotation is broken
176831 [search] No search results due to malformed search scope
214647 [dom] NPE in MethodBinding.getParameterAnnotations(..)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M5 - January 8, 2008
Project org.eclipse.jdt.core v_831 (cvs).

## What's new in this drop

### Problem Reports Fixed

209936 [javadoc] Missing code implementation in the compiler on inner classes
210681 Code assist fails to propose inner type
211881 [assist] Code assist fails inside an if statement
212153 stack overflow when press ctrl+space
210518 [batch][compiler][options] -warn:unused wrongly behaves as -warn:+unused
214002 [dom] NPE in MethodBinding.getParameterAnnotations()
153765 [search] Reference to package is not found in qualified annotation
213284 [formatter] NPE on formatting region
213283 [formatter] AIOOBE when formatting region
213570 IncrementalTests#testRenameMainType() fails with IBM JRE 6.0
213509 [dom] IMethodBinding.getParameterAnnotations returns annotations for wrong parameter
204749 [1.5][javadoc] NPE in JavadocQualifiedTypeReference
212834 [dom] IMethodBinding.getParameterAnnotations does not return annotations
211718 [1.5][compiler] compiler error with nested enum in class using generics

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M5 - December 18, 2007
Project org.eclipse.jdt.core v_830 (cvs).

## What's new in this drop

### Problem Reports Fixed

212857 [dom] AST has wrong source range after parameter with array-valued annotation
212224 Unresolvable type causes ArrayOutOfBoundsException in IType.resolveType
212769 SetClasspathOperation no longer adds project for refresh
164862 [ast rewrite] ListRewrite.remove(...) does not remove inserted nodes

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M4 - December 12, 2007 - 3.4 MILESTONE 4
Project org.eclipse.jdt.core v_829 (cvs).

## What's new in this drop

### Problem Reports Fixed

212599 [search] fine grained search must not report matches in Javadoc

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M4 - December 8, 2007
Project org.eclipse.jdt.core v_828 (cvs).

## What's new in this drop

### Problem Reports Fixed

209993 [1.5][search] Generic search does not work properly while using BindingKey
211781 [search] clarify 'ALLOCATION_EXPRESSION_TYPE_REFERENCE'
211779 [search] better name for SUPERTYPE_TYPE_REFERENCE?
211872 [search] References to annotations not found in class file without source
210094 Creating type hierarchy does not report progress

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M4 - December 4, 2007
Project org.eclipse.jdt.core v_827 (cvs).

## What's new in this drop

- Added `IJavaSearchConstants` API constants for fine grained search (see bug 155013).
  These constants are additional flags which should be set on `limitTo` parameter while calling `SearchPattern.createPattern(...)` methods.
  They can be combined to get results of multiple fine grain search in one single query.

  Here is the exhaustive list of these fine grain search flags:

      /**
       * Return only type references used as the type of a field declaration.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int FIELD_DECLARATION_TYPE_REFERENCE = 0x40;

      /**
       * Return only type references used as the type of a local variable declaration.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int LOCAL_VARIABLE_DECLARATION_TYPE_REFERENCE = 0x80;

      /**
       * Return only type references used as the type of a method parameter
       * declaration.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int PARAMETER_DECLARATION_TYPE_REFERENCE = 0x100;

      /**
       * Return only type references used as a super type or as a super interface.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int SUPERTYPE_TYPE_REFERENCE = 0x200;

      /**
       * Return only type references used in a throws clause.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int THROWS_CLAUSE_TYPE_REFERENCE = 0x400;

      /**
       * Return only type references used in a cast expression.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int CAST_TYPE_REFERENCE = 0x800;

      /**
       * Return only type references used in a catch header.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int CATCH_TYPE_REFERENCE = 0x1000;

      /**
       * Return only type references used in class instance creation.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * Example:
       * 	public class Test {
       * 		Test() {}
       * 		static Test bar()  {
       * 			return new Test();
       * 		}
       * 	}
       *
       * Searching references to the type Test using this flag in the
       * above snippet will match only the reference in italic.
       *
       * Note that array creations are not returned when using this flag.
       *
       * @since 3.4
       * @category limitTo
       */
      int CLASS_INSTANCE_CREATION_TYPE_REFERENCE = 0x2000;

      /**
       * Return only type references used as a method return type.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int RETURN_TYPE_REFERENCE = 0x4000;

      /**
       * Return only type references used in an import declaration.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int IMPORT_DECLARATION_TYPE_REFERENCE = 0x8000;

      /**
       * Return only type references used as an annotation.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int ANNOTATION_TYPE_REFERENCE = 0x10000;

      /**
       * Return only type references used as a type argument in a parameterized
       * type or a parameterized method.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int TYPE_ARGUMENT_TYPE_REFERENCE = 0x20000;

      /**
       * Return only type references used as a type variable bound.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int TYPE_VARIABLE_BOUND_TYPE_REFERENCE = 0x40000;

      /**
       * Return only type references used as a wildcard bound.
       *
       * When this flag is set, only {@link TypeReferenceMatch} matches will be
       * returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int WILDCARD_BOUND_TYPE_REFERENCE = 0x80000;

      /**
       * Return only super field accesses or super method invocations (e.g. using the
       * super qualifier).
       *
       * When this flag is set, the kind of returned matches will depend on the
       * specified nature of the searched element:
       * 	. for the {@link #FIELD} nature, only {@link FieldReferenceMatch}
       * 		matches will be returned,
       * 	. for the {@link #METHOD} nature, only {@link MethodReferenceMatch}
       * 		matches will be returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int SUPER_REFERENCE = 0x1000000;

      /**
       * Return only qualified field accesses or qualified method invocations.
       *
       * When this flag is set, the kind of returned matches will depend on the
       * specified nature of the searched element:
       * 	. for the {@link #FIELD} nature, only {@link FieldReferenceMatch}
       * 		matches will be returned,
       * 	. for the {@link #METHOD} nature, only {@link MethodReferenceMatch}
       * 		matches will be returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int QUALIFIED_REFERENCE = 0x2000000;

      /**
       * Return only primary field accesses or primary method invocations (e.g. using
       * the this qualifier).
       *
       * When this flag is set, the kind of returned matches will depend on the
       * specified nature of the searched element:
       * 	. for the {@link #FIELD} nature, only {@link FieldReferenceMatch}
       * 		matches will be returned,
       * 	. for the {@link #METHOD} nature, only {@link MethodReferenceMatch}
       * 		matches will be returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int THIS_REFERENCE = 0x4000000;

      /**
       * Return only field accesses or method invocations without any qualification.
       *
       * When this flag is set, the kind of returned matches will depend on the
       * specified nature of the searched element:
       * 	. for the {@link #FIELD} nature, only {@link FieldReferenceMatch}
       * 		matches will be returned,
       * 	. for the {@link #METHOD} nature, only {@link MethodReferenceMatch}
       * 		matches will be returned.
       *
       * @since 3.4
       * @category limitTo
       */
      int IMPLICIT_THIS_REFERENCE = 0x8000000;

- Fix for bug 209642 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- Search Engine is now able to find references to annotations inside class files which do not have any attached sources. (see bug 211366 for more details).

### Problem Reports Fixed

211857 [search] Standard annotations references not found on binary fields and methods when no source is attached
211366 [search] does not return references to types in binary classes
211762 ConcurrentModificationException initializing Java Tools
210498 Extra type in hierarchy when focusing on local class
211609 [compiler][1.5] Unable to resolve annotations defined with a Class attribute
209936 [javadoc] Missing code implementation in the compiler on inner classes
206597 IType#resolveType(String) is not implemented for binary types
207775 incomplete source range for anonymous type
211290 Wrong delta renaming .classpath file
207890 Checking out JFace and then SWT leads to a strange state
209642 [index] Improve search for annotation references by using a specific category
155013 [search] [DCR] More finegrained options for Java search

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M4 - November 27, 2007
Project org.eclipse.jdt.core v_826 (cvs).

## What's new in this drop

- Tuned the compiler diagnosis for unused `@SuppressWarnings` to only complain if the relevant warnings were effectively enabled when compiling. So if you turn off certain warnings, then the compiler is not going to suggest getting rid of existing `@SuppressWarnings` in your code, until you will have enabled these back, and the compiler will have proved that there is no occurrence of them.
- Added API `IMethod#getDefaultValue()` to retrieve the default value of an annotation method.
- Added API `IMemberValuePair#K_SIMPLE_NAME` to indicate that the value kind of the value is a simple name reference.
- Added API `IJavaProject#findElement(String, WorkingCopyOwner)` to retrieve a `IJavaElement` from a binding key.

### Problem Reports Fixed

192670 [api] need api to get from binding key to a IJavaElement
210567 [1.5][search] Parameterized type reference not found when used in type parameter bounds
210922 ArrayStoreException when formatting set of regions
210353 Improve documentation for overridingPackageDefaultMethod option in JavaCore#getDefaultOptions' javadoc
208541 [formatter] Formatter does not format whole region/selection
210638 [Debug] Can't restore Breakpoints view : concurrent access/hashmap
210691 [search] Type references position invalid in import references when using "*" pattern
210689 [search] Type references are not found in import declarations when JUnit tests only use working copies
210565 Null value is obtained from IMemberValuePair, when type is Enum
209958 Support getting default value from IMethod
210310 IJavaElementDelta contains wrong data after APT processor is enabled
210213 [1.5][compiler] Unused SuppressWarnings shouldn't complain if warnings are not even enabled
210070 Type hierarchy unpredictable
210404 Method parameters are not recovered when followed by an annotation with a syntax error
210422 [compiler] Need to have local bindings created in error cases
210273 Content Assist cannot cope with explicit parameter types

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M4 - November 20, 2007
Project org.eclipse.jdt.core v_825 (cvs).

## What's new in this drop

### Problem Reports Fixed

209623 NullPointerexception on List.toArray + F3
209823 IAnnotation#getSourceRange() and #getNameRange() throw JME on annotation of ILocalVariable
209961 [compiler][apt] NPE in apt processing
209475 BindingKey.isRawType() doesn't return the right result
209222 Stack overflow in TypeHierarchyPerfTest
209661 ILocalVariable for method parameter misses annotations
209655 [jsr199] export package should specify x-internal:=true

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M4 - November 13, 2007
Project org.eclipse.jdt.core v_824 (cvs).

## What's new in this drop

- Added new compiler option to find redundant superinterfaces.

      * COMPILER / Reporting Redundant Superinterface
      *    When enabled, the compiler will issue an error or a warning if a type
      *    explicitly implements an interface that is already implemented by any
      *    of its supertypes.
      *     - option id: "org.eclipse.jdt.core.compiler.problem.redundantSuperinterface"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

  (see bug 77918)

### Problem Reports Fixed

200951 [ast rewrite] removing parentheses yields syntax error
209319 [ast rewrite] @SuppressWarning is inserting an extra line break
208383 IProblem.UnusedWarningToken has wrong category
209153 [1.5][compiler] VerifyError due to generic cast to a non visible type
209150 [dom] Recovered type binding for "java.lang.Object" information are not complete
186410 [dom] StackOverflowError due to endless superclass bindings hierarchy
77918 [compiler] Unnecessary implementation of interface in class declaration
208995 Static method hides method from instance when using generics
209054 [search] for references to method finds wrong interface call
208234 Specify that CodeFormatter is not intended to be subclassed
138018 When passed unsupported javac -warn warning options, fail gracefully & ignore
206423 Optimization opportunity in DefaultProblemFactory
208960 Internal Compiler Error on valid code with particular combination of org.eclipse.jdt.core.compiler.codegen.targetPlatform and o.e.j.c.c.source

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M4 - November 6, 2007
Project org.eclipse.jdt.core v_823 (cvs).

## What's new in this drop

### Problem Reports Fixed

208807 JavaCore.getDefaultOptions() throws an exception when there is no workspace
178596 [search] Search for method references does not find references to interface method
207754 [AST][DOM] source range of ParenthesizedExpression does not include the parenthesis
187430 Unresolved types surfacing through DOM AST for annotation default values
207929 No import added to declaring class if static member is 'class'
207572 [select] codeselect not available if unterminated string literal
111093 More problems with IMethodBinding#isSubsignature(..)
206017 [compiler] Type mistmatch on field declaration should be reported against initialization expression
208263 [ast rewrite] performance problems with lots of changes
207758 [1.5][compiler] Unused SupressWarnings detection should consider more error situations
207573 [1.5][compiler] Internal compiler error: ClassCastException / ArrayBinding
208030 [1.7][compiler] Missing unused type argument warning for constructor invocations
208386 Annotation Javadoc glitches

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M3 - October 31, 2007 - 3.4 MILESTONE 3
Project org.eclipse.jdt.core v_822 (cvs).

## What's new in this drop

- Added API `CodeFormatter#format(int, String, IRegion[], int, String)` to allow the formatting of a set of `org.eclipse.jface.text.IRegion`s.

### Problem Reports Fixed

203304 Allow to format set of regions

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M3 - October 27, 2007
Project org.eclipse.jdt.core v_821 (cvs).

## What's new in this drop

- Added new compiler optional warning for diagnosing unnecessary @SuppressWarnings annotation. This is mostly helpful to get rid of `@SupressWarnings(...)` annotations which were necessary a while ago, but are no longer useful. Note that `@SuppressWarnings("all")` is still silencing the warning for unnecessary `@SuppressWarnings`, as it is the master switch to silence ALL warnings. Also added option: `JavaCore.COMPILER_PB_UNUSED_WARNING_TOKEN` and problem ID `IProblem.UnusedWarningToken`.

      * COMPILER / Reporting Unnecessary @SuppressWarnings
      *    When enabled, the compiler will issue an error or a warning when encountering @SuppressWarnings annotation
      *    for which no corresponding warning got detected in the code. This diagnostic is provided to help developers to get
      *    rid of transient @SuppressWarnings no longer needed. Note that @SuppressWarnings("all") is still
      *    silencing the warning for unnecessary @SuppressWarnings, as it is the master switch to silence ALL warnings.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedWarningToken"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

  (see bug 127533)
- Added the following APIs to support annotation in the Java model (see bug 79112 for more details):

  -     public interface IAnnotation extends IJavaElement, ISourceReference {
        	String getElementName();
        	IMemberValuePair[] getMemberValuePairs() throws JavaModelException;
        	ISourceRange getNameRange() throws JavaModelException;
        	int getOccurrenceCount();
        }

  -     public interface IMemberValuePair {
        	int K_INT = 1;
        	int K_BYTE = 2;
        	int K_SHORT = 3;
        	int K_CHAR = 4;
        	int K_FLOAT = 5;
        	int K_DOUBLE = 6;
        	int K_LONG = 7;
        	int K_BOOLEAN = 8;
        	int K_STRING = 9;
        	int K_ANNOTATION = 10;
        	int K_CLASS = 11;
        	int K_QUALIFIED_NAME = 12;
        	int K_UNKNOWN = 13;
        	String getMemberName();
        	Object getValue();
        	int getValueKind();
        }

  -     public interface IAnnotatable {
        	IAnnotation getAnnotation(String name);
        	IAnnotation[] getAnnotations() throws JavaModelException;
        }

    `IField`, `IMethod`, `IType`, `IPackageDeclaration`, and `ILocalVariable` now implement this interface.

  -     public interface IJavaElement extends IAdaptable {
        	...
        	int ANNOTATION = 16;
        	...
        }

  -     public interface IJavaElementDelta {
        	...
        	public int F_ANNOTATIONS = 0x400000;
        	public IJavaElementDelta[] getAnnotationDeltas();
        	...
        }

- Code Assist: Added API `CompletionRequestor#CompletionRequestor(boolean ignoreAll)` to be able to ignore all completion kinds by default instead of propose all completion kinds by default.
- Code Assist: Improved code assist inside an `if` statement with an `instanceof` expression as condition.
  When a member access is completed in this case then the members of the `instanceof` type are proposed and the receiver is casted to this type.

      Object x = ... ;
      if (x instanceof IType) {
         x.get|code assist

  The method `IType#getFullyQualifiedName()` will be proposed and the receiver will be casted to `IType`. The completion string will be '((IType)x).getFullyQualifiedName()'.
  These proposals will be proposed with the new proposal kinds `CompletionProposal#METHOD_REF_WITH_CASTED_RECEIVER` and `CompletionProposal#FIELD_REF_WITH_CASTED_RECEIVER`.
  These new proposals require new API on CompletionProposal to be usable by client.

      public class CompletionProposal {
         ...

         /**
          * Completion is a reference to a method with a casted receiver.
          * This kind of completion might occur in a context like
          * <code>"receiver.fo^();"</code> and complete it to
          * <code>""((X)receiver).foo();"</code>.
          * <p>
          * The following additional context information is available
          * for this kind of completion proposal at little extra cost:
          * <ul>
          * <li>{@link #getDeclarationSignature()} -
          * the type signature of the type that declares the method that is referenced
          * </li>
          * <li>{@link #getFlags()} -
          * the modifiers flags of the method that is referenced
          * </li>
          * <li>{@link #getName()} -
          * the simple name of the method that is referenced
          * </li>
          * <li>{@link #getReceiverSignature()} -
          * the type signature of the receiver type. It's the type of the cast expression.
          * </li>
          * <li>{@link #getSignature()} -
          * the method signature of the method that is referenced
          * </li>
          * </ul>
          * </p>
          *
          * @see #getKind()
          *
          * @since 3.4
          */
          public static final int METHOD_REF_WITH_CASTED_RECEIVER;

         /**
          * Completion is a reference to a field with a casted receiver.
          * This kind of completion might occur in a context like
          * <code>"recevier.ref^ = 0;"</code> and complete it to
          * <code>"((X)receiver).refcount = 0;"</code>.
          * <p>
          * The following additional context information is available
          * for this kind of completion proposal at little extra cost:
          * <ul>
          * <li>{@link #getDeclarationSignature()} -
          * the type signature of the type that declares the field that is referenced
          * </li>
          * <li>{@link #getFlags()} -
          * the modifiers flags (including ACC_ENUM) of the field that is referenced
          * </li>
          * <li>{@link #getName()} -
          * the simple name of the field that is referenced
          * </li>
          * <li>{@link #getReceiverSignature()} -
          * the type signature of the receiver type. It's the type of the cast expression.
          * </li>
          * <li>{@link #getSignature()} -
          * the type signature of the field's type (as opposed to the
          * signature of the type in which the referenced field
          * is declared)
          * </li>
          *
          * </ul>
          * </p>
          *
          * @see #getKind()
          *
          * @since 3.4
          */
         public static final int FIELD_REF_WITH_CASTED_RECEIVER;

         /**
          * Returns the type signature or package name of the relevant
          * receiver in the context, or <code>null</code> if none.
          * <p>
          * This field is available for the following kinds of
          * completion proposals:
          * <ul>
          *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code> - type signature
          * of the type that cast the receiver of the field that is referenced</li>
          *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code> - type signature
          * of the type that cast the receiver of the method that is referenced</li>
          * </ul>
          * For kinds of completion proposals, this method returns
          * <code>null</code>. Clients must not modify the array
          * returned.
          * </p>
          *
          * @return a type signature or a package name (depending
          * on the kind of completion), or <code>null</code> if none
          * @see Signature
          *
          * @since 3.4
          */
         public char[] getReceiverSignature() {}

         /**
          * Returns the character index of the start of the
          * subrange in the source file buffer containing the
          * relevant receiver of the member being completed. This
          * receiver is an expression.
          *
          * <p>
          * This field is available for the following kinds of
          * completion proposals:
          * <ul>
          *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code></li>
          *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code></li>
          * </ul>
          * For kinds of completion proposals, this method returns <code>0</code>.
          * </p>
          *
          * @return character index of receiver start position (inclusive)
          *
          * @since 3.4
          */
         public int getReceiverStart() {}

         /**
          * Returns the character index of the end (exclusive) of the subrange
          * in the source file buffer containing the
          * relevant receiver of the member being completed.
          *
          * * <p>
          * This field is available for the following kinds of
          * completion proposals:
          * <ul>
          *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code></li>
          *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code></li>
          * </ul>
          * For kinds of completion proposals, this method returns <code>0</code>.
          * </p>
          *
          * @return character index of receiver end position (exclusive)
          *
          * @since 3.4
          */
         public int getReceiverEnd() {}

         ...
      }

### Problem Reports Fixed

127533 [1.5][compiler] warning on unused @SuppressWarnings annotations
207445 IMemberValuePair with heterogenous array values should be of kind K_UNKNOWN
207257 [search] SearchEngine returns incorrectly typed SearchMatch when searching for local variable declarations
207441 Wrong delta for files created in folders that are on a java project as classes folder
207465 [assist] CompletionRequestor javadoc doesn't specify if 'isIgnored' has an effect on required proposals
193210 [1.5][compiler] Internal compiler error java.lang.NullPointerException
193909 improve content assist after 'instanceof'
207299 [1.5][compiler] StackOverflow when eliminating type variables
207418 Need API on CompletionRequestor to ignore all proposals
79112 [1.5] [model] accessing annotation on Java elements

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M3 - October 23, 2007
Project org.eclipse.jdt.core v_820 (cvs).

## What's new in this drop

- Added a new compiler participant API to notify participants when a project's build is finished (see bug 180107):

      /**
       * Notifies this participant that a build has finished for the project.
       * This will be sent, even if buildStarting() was not sent when no source files needed to be compiled
       * or the build failed.
       * Only sent to participants interested in the project.
       * @param project the project about to build
       * @since 3.4
        */
      public void buildFinished(IJavaProject project)

- The 'Null pointer access' potential programming problem is now reported as a warning by default, whereas it was previously ignored. See details in bug 192875.

### Problem Reports Fixed

157541 [organize imports] organize imports does not work in package-info.java
200724 [compiler] Assignment with no effect undetected
192875 [compiler][options][null] Set "Null pointer access" to warning by default
180107 [PERF] need CompilationParticipant.buildComplete() API
205860 ASTParser.createBindings() returns [null]
206027 JavaCore#initializeAfterLoad - Util.setSourceAttachmentProperty performance
206522 Chkpii error in N20071016-0010
206483 [compiler][1.7] 1.7 VMs cannot read .class files generated with target 1.7

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M3 - October 16, 2007
Project org.eclipse.jdt.core v_819 (cvs).

## What's new in this drop

- Added new compiler optional warning for diagnosing generic invocations of non-generic methods. Basically, from Java7 compliance on, a non-generic method may be invoked with explicit type arguments syntax, which though unused are to be silently ignored. With this warning, the compiler will still flag such situations. The warning is on by default, and is suppressable with `@SuppressWarnings("unused")`. Also added option: `JavaCore.COMPILER_PB_UNUSED_TYPE_ARGUMENTS_FOR_METHOD_INVOCATION` and problem ID `IProblem.UnusedTypeArgumentsForMethodInvocation`.

      * COMPILER / Reporting Presence of Type Arguments for a Non-Generic Method Invocation
      *    When enabled, the compiler will issue an error or a warning whenever type arguments are encountered for a
      *    non-generic method invocation. Note that prior to compliance level is "1.7", this situation would automatically result
      *    in an error. From Java7 on, unused type arguments are being tolerated, and optionally warned against.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedTypeArgumentsForMethodInvocation"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

- Fix for bug 122885 required the build state format to change. As a consequence, a full rebuild is expected when reusing existing workspaces.

### Problem Reports Fixed

168230 [1.5][compiler] Non-generic methods can be called with type arguments
206336 [assist] CompletionProposal#getTokenStart() return always 0
122885 [builder] Project build states should not store the access restrictions templates
205235 [1.5][compiler] Eclipse syntax highlighting flag correct syntax as a hierarchy cycle
200026 [1.5][compiler] compiler message on incomplete enum declarations
200016 [1.5][compiler] better error message when enum constants must implement methods
121024 [1.5][compiler] Call of parametrized method reported ambiguous by eclipse not by javac
206021 Improve progress reporting in "Initializing Java Tooling" job
204845 BatchCompilerTest tests fail when the runtime JRE points to a path containing white spaces
195823 ClassFormatException during class file indexing
120088 [1.5][compiler] Incomparable types - object.getClass() == Some.class
148046 [compiler][1.5] should raise an incompatible types error when a given type variable cannot fulfill its bounds
158870 [1.5][compiler] javac inconvertible types on cast allowed by Eclipse
89940 [1.5][compiler] wrong cast allowed
90437 [1.5][compiler] Casting with Erasure generates warning in Eclipse but ERROR with JDK
165352 [1.5][compiler] Cast should be rejected

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M3 - October 9, 2007
Project org.eclipse.jdt.core v_818 (cvs).

## What's new in this drop

### Problem Reports Fixed

205847 [compiler] Compiler referencing Java model code

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M3 - October 8, 2007
Project org.eclipse.jdt.core v_817 (cvs).

## What's new in this drop

- Added API `SearchPattern#R_CAMELCASE_SAME_PART_COUNT_MATCH`.
  This constant tells Search Engine to report matches which have exactly the same count of parts (i.e. uppercase characters) than the Camel Case pattern (see bug 201426):

      /**
       * Match rule: The search pattern contains a Camel Case expression with
       * a strict expected number of parts.
       *
       * Examples:
       * 	. 'HM' type string pattern will match 'HashMap' and 'HtmlMapper' types,
       * 	  but not 'HashMapEntry'
       * 	. 'HMap' type string pattern will still match previous 'HashMap' and
       * 	  'HtmlMapper' types, but not 'HighMagnitude'
       *
       * This rule is not intended to be combined with any other match rule. In case
       * of other match rule flags are combined with this one, then match rule validation
       * will return a modified rule in order to perform a better appropriate search request
       * (see {@link #validateMatchRule(String, int)} for more details).
       *
       * @see CharOperation#camelCaseMatch(char[], char[], boolean) for a detailed
       * explanation of Camel Case matching.
       *
       * @since 3.4
       */
      public static final int R_CAMELCASE_SAME_PART_COUNT_MATCH = 0x0100;

  Note that this constant replace previous one `R_CAMEL_CASE_MATCH` added while fixing bug 124624.
  Also note that `R_CAMELCASE_MATCH` is no longer deprecated as, finally, Camel Case match rule flags are not supposed to be combined with other ones (e.g. `R_PREFIX_MATCH` or `R_PATTERN_MATCH`).
- Existing API method `SearchPattern#validateMatchRule(String, int)` has been modified to include the new `#R_CAMELCASE_SAME_PART_COUNT_MATCH` constant:

      /**
       * Validate compatibility between given string pattern and match rule.
       *
       * In certain circumstances described in the table below, the returned match rule is
       * modified in order to provide a more efficient search pattern:
       * 	1.	when the {@link #R_REGEXP_MATCH} flag is set, then the pattern is
       * 		rejected as this kind of match is not supported yet and -1
       * 		s returned).
       * 	2.	when the string pattern has no pattern characters (e.g. '*' or '?')
       * 		and the pattern match flag is set (i.e. the match rule has the {@link #R_PATTERN_MATCH}
       * 		flag), then the pattern match flag is reset.
       * 		Reversely, when the string pattern has pattern characters and the pattern
       * 		match flag is not set, then the pattern match flag is set.
       * 	3.	when the {@link #R_PATTERN_MATCH} flag is set then, other
       * 		{@link #R_PREFIX_MATCH}, {@link #R_CAMELCASE_MATCH} or
       * 		{@link #R_CAMELCASE_SAME_PART_COUNT_MATCH} flags are reset
       * 		if they are tentatively combined.
       * 	4.	when the {@link #R_CAMELCASE_MATCH} flag is set, then other
       * 		{@link #R_PREFIX_MATCH} or {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}
       * 		flags are reset if they are tentatively combined.
       * 		Reversely, if the string pattern cannot be a camel case pattern (i.e. contains
       * 		invalid Java identifier characters or does not have at least two uppercase
       * 		characters - one for method camel case patterns), then the CamelCase
       * 		match flag is replaced with a prefix match flag.
       * 	5.	when the {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH} flag is set,
       * 		then ({@link #R_PREFIX_MATCH} flag is reset if it's tentatively
       * 		combined.
       * 		Reversely, if the string pattern cannot be a camel case pattern (i.e. contains
       * 		invalid Java identifier characters or does not have at least two uppercase
       * 		characters - one for method camel case patterns), then the CamelCase
       * 		part count match flag is reset.
       * Note: the rules are validated in the documented order. For example, it means
       * 	that as soon as the string pattern contains one pattern character, the pattern
       * 	match flag will be set and all other match flags reset: validation of rule 2)
       * 	followed by rule 3)...
       *
       * @param stringPattern The string pattern
       * @param matchRule The match rule
       * @return Optimized valid match rule or -1 if an incompatibility was detected.
       * @since 3.2
       */
      public static int validateMatchRule(String stringPattern, int matchRule) {
      ...
      }

- `CharOperation` and `SearchPattern` Camel Case API methods added while fixing bug 124624) have been modified to clarify the behavior of the additional boolean parameter.
  This parameter now indicates whether the pattern and the name should have the same count of parts (i.e. uppercase characters) or not:

      /**
       *...
       * CamelCase can be restricted to match only the same count of parts. When this
       * restriction is specified the given pattern and the given name must have exactly
       * the same number of parts (i.e. the same number of uppercase characters).
       * For instance, 'HM' , 'HaMa' and  'HMap' patterns will match 'HashMap' and
       * 'HatMapper' but not 'HashMapEntry'.
       *...
       * . pattern = "HM".toCharArray()
       * name = "HashMapEntry".toCharArray()
       * result => (samePartCount == false)
       *...
       * @param samePartCount flag telling whether the pattern and the name should
       * 	have the same count of parts or not.
       * 	  For example:
       * 		. 'HM' type string pattern will match 'HashMap' and 'HtmlMapper' types,
       * 				but not 'HashMapEntry'
       * 		. 'HMap' type string pattern will still match previous 'HashMap' and
       * 				'HtmlMapper' types, but not 'HighMagnitude'
       * @return true if the pattern matches the given name, false otherwise
       * @since 3.4
       */
      public static final boolean camelCaseMatch(char[] pattern, char[] name, boolean samePartCount) {
      ...
      }

      /**
       *...
       * CamelCase can be restricted to match only the same count of parts. When this
       * restriction is specified the given pattern and the given name must have exactly
       * the same number of parts (i.e. the same number of uppercase characters).
       * For instance, 'HM' , 'HaMa' and  'HMap' patterns will match 'HashMap' and
       * 'HatMapper' but not 'HashMapEntry'.
       *...
       * . pattern = "HM".toCharArray()
       * patternStart = 0
       * patternEnd = 2
       * name = "HashMapEntry".toCharArray()
       * nameStart = 0
       * nameEnd = 12
       * result => (samePartCount == false)
       *...
       * @param samePartCount flag telling whether the pattern and the name should
       * 	have the same count of parts or not.
       * 	  For example:
       * 		. 'HM' type string pattern will match 'HashMap' and 'HtmlMapper' types,
       * 				but not 'HashMapEntry'
       * 		. 'HMap' type string pattern will still match previous 'HashMap' and
       * 				'HtmlMapper' types, but not 'HighMagnitude'
       * @return true if a sub-pattern matches the sub-part of the given name, false otherwise
       * @since 3.4
       */
      public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd, boolean prefixMatch) {
      ...
      }

  Note that similar modifications have been done on `SearchPattern` corresponding methods:

      public static final boolean camelCaseMatch(String pattern, String name, boolean samePartCount) {
      ...
      }
      public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean samePartCount) {
      ...
      }

- Modified API `CompletionProposal#getRequiredProposals()`.
  `TYPE_REF` proposals can now have a TYPE_REF proposal as required proposal
- CodeAssist: Member types and static members are proposed when the receiver is a not yet imported type.

      package p;
      public class X {
         public static void bar() {}
      }

      package q;
      public class Y {
         public void foo() {
            X.bar
         }
      }

  When the completion occurs after X.bar the method `X#bar()` is proposed with a required proposal to complete the not yet imported type.

### Problem Reports Fixed

44627 [assist] improve content assist for static members when import missing
125518 [javadoc] Embedding html in a link placed in a @see JavaDoc tag causes a warning
86769 [javadoc] Warn/Error for 'Missing javadoc comments' doesn't recognize private inner classes
168849 [javadoc] Javadoc warning on @see reference in class level docs.
190970 [javadoc] "field never read locally" analysis should not consider javadoc
195374 [javadoc] Missing Javadoc warning for required qualification for inner types at 1.4 level
192449 [javadoc][assist] SelectionJavadocParser should not report problems
73352 [Javadoc] Missing description should be warned for all tags
191931 BatchImageBuilder sometimes marks resources as derived before deleting them
201426 [search] New SearchPattern constant R_CAMEL_CASE_MATCH name may be misleading for users

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M3 - October 2, 2007
Project org.eclipse.jdt.core v_816 (cvs).

## What's new in this drop

- Added API `IJavaElementDelta#F_RESOLVED_CLASSPATH_CHANGED`. This flag is set when the resolved classpath of a Java project changes. This is independent from `IJavaElementDelta#F_CLASSPATH_CHANGED` which indicates that the raw classpath has changed.

### Problem Reports Fixed

204624 [1.5][compiler] No error on abstract method implementation with missing parameter generics
204339 [compiler] Invalid length for missing package declaration in empty package-info.java file
203587 Improve messages consistency in case of generic methods having same erasure
204662 org.eclipse.jdt.internal.compiler.parser.Parser.endParse throws NullPointerException
203662 Perf: Unnecessary compilation when package added to second source root
204805 ICompilationUnit.commitWorkingCopy doesn't send typeHierarchyChanged
204652 "Open Type": ClassCastException in conjunction with a class folder
204534 [1.5][compiler] Annoying consequence of method verification problem
204417 NullPointerException in SelectionOnQualifiedAllocationExpression.resolveType
204536 [1.5][compiler] Type variables insufficiently connected in presence of errors
154071 No notification of change if a project is added or removed from a container

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M3 - September 25, 2007
Project org.eclipse.jdt.core v_815 (cvs).

## What's new in this drop

### Problem Reports Fixed

199668 IAE in ASTNode.setSourceRange while editing a class
204283 [compiler] synthetic field for class literal access should not be created for int.class
190094 Java Outline Causes Eclipse Lock-up.
203609 [1.6][compiler] AccSynthetic should be set for package-info type if target >= 1.6
203579 [dom] Length of VariableDeclarationFragment is not the same inside a 'for' initialisation
204040 Class literal code generation must be improved for cldc target
204108 unused import in jdt.internal.compiler.lookup.TypeBinding
169049 [1.5][compiler] Bogus bound mismatch errors
203905 [1.5][compiler] shows wrong error with generics
203721 [compiler] "Parameter is never read" not reported if unnecessary declared checked exception
200158 [compiler] inconsistent handling of unreachable code

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - September 19, 2007 - 3.4 MILESTONE 2
Project org.eclipse.jdt.core v_814 (cvs).

## What's new in this drop

### Problem Reports Fixed

204002 AIOB when enabling CLDC 1.1

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - September 17, 2007
Project org.eclipse.jdt.core v_813 (cvs).

## What's new in this drop

- The `SearchPattern#R_CAMELCASE_MATCH` constant is no longer deprecated and
  the new constant `SearchPattern#R_CAMEL_CASE_MATCH` will surely be renamed in next milestone.
  (see bug 201426 to follow-up work in progress in this area...)

### Problem Reports Fixed

203577 ClassFormatException viewing annotation with empty target annotation

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - September 15, 2007
Project org.eclipse.jdt.core v_812 (cvs).

## What's new in this drop

- Added new API `org.eclipse.jdt.core.JavaCore#VERSION_CLDC_1_1` in order to support the cldc1.1 target inside the IDE.

### Problem Reports Fixed

120223 [compiler] Support for "-target cldc1.1"
203241 [compiler] Missing warning when a serializable class without serialVersionUID is also abstract
203454 NPE in compiler when processing annotations
203342 AST of a NumberLiteral has wrong source code range
203089 getDefaultOptions misses option
159214 [1.5] [compiler] Eclipse compiler wildcard bug
202404 [1.5][compiler] Incorrect handling of type variable bounds issued by capture conversion
203318 [1.5][compiler] Improper capture of wildcard with lesser bound than parameter
202936 [compiler] Compiler error for Java switch expression provides inaccurate list of allowed data types
203061 [compiler] Uninitialized member variables used in nonstatic initializers of peer members don't trigger compilation error
203058 Building workspace hangs in endless loop
202830 [compiler][1.5] eclipse fails to compile subclass when superclass has two generic methods of the same name
203020 formatter may change code semantics on unary operators
201182 [compiler][null] Null pointer access compiler warning fails when "throw null"

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - September 11, 2007
Project org.eclipse.jdt.core v_811 (cvs).

## What's new in this drop

- Added an option that allows @throws javadoc entries to defuse the unused declared thrown exception check.

      COMPILER / Consider Reference in Doc Comment for Unused Declared Thrown Exception Check
         When enabled, the compiler will consider doc comment references to exceptions
         (i.e. @throws clauses) for the unused declared thrown exception check. Thus,
         documented exceptions will be considered as mandated as per doc contract.
         The severity of the unused declared thrown exception problem is controlled
         with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
         Note: this option has no effect until the doc comment support is enabled
         according to the option "org.eclipse.jdt.core.compiler.doc.comment.support".
          - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocReference"
          - possible values:   { "enabled", "disabled" }
          - default:           "enabled"

  See bug 73244 for details.

### Problem Reports Fixed

73244 [options] Improve "Unnecessary declaration of thrown checked exceptions"
89301 Any user operation that would trigger an autobuild should cancel a running autobuild
184298 [compiler][null] Spurious "Variable can only be null" warning in case of an infinite loop
201929 Member of local type should not have a fully qualified name
202134 [1.6][compiler] org.eclipse.jdt.tests.compiler.regression.ConformTest#test003 never ends in .16 mode

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - September 4, 2007
Project org.eclipse.jdt.core v_810 (cvs).

## What's new in this drop

### Problem Reports Fixed

202076 NPE in DeltaProcessor
182359 [compiler] optimize line number generation using the new getLineNumber method
185350 [1.6][compiler] Code generation seems to be much slower than in 1.5 mode
196253 [1.5][compiler] Failure to compile generics with wildcard and inner classes
189158 [1.5][compiler] Malformed generic signature for nested classes (. vs $)
201062 Missing library in project classpath even library exists

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - August 28, 2007
Project org.eclipse.jdt.core v_809 (cvs).

## What's new in this drop

- Prefix matching can be disabled while using Camel Case API methods. (see bug 124624).
  Following API methods have been added on `org.eclipse.jdt.core.compiler.CharOperation`:

      /**
       * Answers true if the pattern matches the given name using CamelCase rules, or
       * false otherwise. char[] CamelCase matching does NOT accept explicit wild-cards
       * '*' and '?' and is inherently case sensitive.
       *
       * CamelCase denotes the convention of writing compound names without spaces,
       * and capitalizing every term. This function recognizes both upper and lower
       * CamelCase, depending whether the leading character is capitalized or not.
       * The leading part of an upper CamelCase pattern is assumed to contain a
       * sequence of capitals which are appearing in the matching name; e.g. 'NPE' will
       * match 'NullPointerException', but not 'NewPerfData'. A lower CamelCase pattern
       * uses a lowercase first character. In Java, type names follow the upper
       * CamelCase convention, whereas method or field names follow the lower
       * CamelCase convention.
       *
       * The pattern may contain lowercase characters, which will be match in a case
       * sensitive way. These characters must appear in sequence in the name.
       * For instance, 'NPExcep' will match 'NullPointerException', but not
       * 'NullPointerExCEPTION' or 'NuPoEx' will match 'NullPointerException', but not
       * 'NoPointerException'.
       *
       * Digit characters are treated in a special way. They can be used in the pattern
       * but are not always considered as leading character. For instance, both
       * 'UTF16DSS' and 'UTFDSS' patterns will match 'UTF16DocumentScannerSupport'.
       *
       * CamelCase may or may not match prefixes depending on the given parameter.
       * When the prefix match parameter is true, the given pattern can
       * match only a prefix of the given name. For instance, 'HM' , 'HaMa' and  'HMap'
       * patterns will all match 'HashMap', 'HatMapper' and 'HashMapEntry'.
       * Reversely, if the prefix match parameter is false, then pattern
       * and name must have exactly the same number of parts, and their last
       * parts must be identical if they contain lowercase characters.
       * For instance, 'HMap' and 'HaMap' patterns will match 'HashMap' but neither
       * 'HashMapEntry' nor 'HatMapper'. Note that when the last part does not contain
       * lowercase characters, then the name may end with lowercase characters.
       * So, 'HM' pattern will match both 'HashMap' and 'HatMapper' but will not
       * match 'HashMapEntry'.
       *
       * Examples:
       *  1.	pattern = { 'N', 'P', 'E' }
       *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	result => true
       *  2.	pattern = { 'N', 'P', 'E' }
       *  	name = { 'N', 'o', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	result => true
       *  3.	pattern = { 'N', 'u', 'P', 'o', 'E', 'x' }
       *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	result => true
       *  4.	pattern = { 'N', 'u', 'P', 'o', 'E', 'x' }
       *  	name = { 'N', 'o', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	result => false
       *  5.	pattern = { 'n', p', 'e' }
       *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	result => false
       *  6.	pattern = { 'I', 'P', 'L', '3' }
       *  	name = { 'I', 'P', 'e', 'r', 's', 'p', 'e', 'c', 't', 'i', 'v', 'e', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '3' }
       *  	result => true
       *  7.	pattern = { 'H', M' }
       *  	name = { 'H', 'a', 's', 'h', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y' }
       *  	result => (prefixMatch == true)
       *  8.	pattern = { 'H', M', 'a', 'p' }
       *  	name = { 'H', 'a', 't', 'M', 'a', 'p', 'p', 'e', 'r' }
       *  	result => (prefixMatch == true)
       *
       * @param pattern the given pattern
       * @param name the given name
       * @param prefixMatch flag telling whether the pattern can match name prefix or not.
       * 		. For example, when it's true:
       * 			- 'HM' type string pattern will match  'HashMap' and 'HtmlMapper' types,
       * 			  but not 'HashMapEntry'
       * 			- 'HMap' type string pattern will match  'HashMap' type but not 'HtmlMapper'.
       * 		. and, when it's false:
       * 			- 'HM' type string pattern will match both   'HashMap' and 'HtmlMapper'
       * 			  and 'HashMapEntry'
       * 			- 'HMap' type string pattern will match both 'HashMap' and 'HtmlMapper'
       * 			  types.
       *
       * @return true if the pattern matches the given name, false otherwise
       * @since 3.4
       */
      public static final boolean camelCaseMatch(char[] pattern, char[] name, boolean prefixMatch) {
      ...
      }

      /**
       * Answers true if a sub-pattern matches the sub-part of the given name using
       * CamelCase rules, or false otherwise.  char[] CamelCase matching does NOT
       * accept explicit wild-cards '*' and '?' and is inherently case sensitive.
       * Can match only subset of name/pattern, considering end positions as
       * non-inclusive. The sub-pattern is defined by the patternStart and patternEnd
       * positions.
       *
       * CamelCase denotes the convention of writing compound names without spaces,
       * and capitalizing every term. This function recognizes both upper and lower
       * CamelCase, depending whether the leading character is capitalized or not.
       * The leading part of an upper CamelCase pattern is assumed to contain
       * a sequence of capitals which are appearing in the matching name; e.g. 'NPE' will
       * match 'NullPointerException', but not 'NewPerfData'. A lower CamelCase pattern
       * uses a lowercase first character. In Java, type names follow the upper
       * CamelCase convention, whereas method or field names follow the lower
       * CamelCase convention.
       *
       * The pattern may contain lowercase characters, which will be match in a case
       * sensitive way. These characters must appear in sequence in the name.
       * For instance, 'NPExcep' will match 'NullPointerException', but not
       * 'NullPointerExCEPTION' or 'NuPoEx' will match 'NullPointerException', but not
       * 'NoPointerException'.
       *
       * Digit characters are treated in a special way. They can be used in the pattern
       * but are not always considered as leading character. For instance, both
       * 'UTF16DSS' and 'UTFDSS' patterns will match 'UTF16DocumentScannerSupport'.
       *
       * CamelCase may or may not match prefixes depending on the given parameter.
       * When the prefix match parameter is true, the given pattern can
       * match only a prefix of the given name. For instance, 'HM' , 'HaMa' and  'HMap'
       * patterns will all match 'HashMap', 'HatMapper' and 'HashMapEntry'.
       * Reversely, if the prefix match parameter is false, then pattern
       * and name must have exactly the same number of parts, and their last
       * parts must be identical if they contain lowercase characters.
       * For instance, 'HMap' and 'HaMap' patterns will match 'HashMap' but neither
       * 'HashMapEntry' nor 'HatMapper'. Note that when the last part does not contain
       * lowercase characters, then the name may end with lowercase characters.
       * So, 'HM' pattern will match both 'HashMap' and 'HatMapper' but will not
       * match 'HashMapEntry'.
       *
       * Examples:
       *  1.	pattern = { 'N', 'P', 'E' }
       *  	patternStart = 0
       *  	patternEnd = 3
       *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	nameStart = 0
       *  	nameEnd = 20
       *  	result => true
       *  2.	pattern = { 'N', 'P', 'E' }
       *  	patternStart = 0
       *  	patternEnd = 3
       *  	name = { 'N', 'o', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	nameStart = 0
       *  	nameEnd = 21
       *  	result => true
       *  3.	pattern = { 'N', 'u', 'P', 'o', 'E', 'x' }
       *  	patternStart = 0
       *  	patternEnd = 6
       *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	nameStart = 0
       *  	nameEnd = 20
       *  	result => true
       *  4.	pattern = { 'N', 'u', 'P', 'o', 'E', 'x' }
       *  	patternStart = 0
       *  	patternEnd = 6
       *  	name = { 'N', 'o', 'P', 'e', 'r', 'm', 'i', 's', 's', 'i', 'o', 'n', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	nameStart = 0
       *  	nameEnd = 21
       *  	result => false
       *  5.	pattern = { 'n', p', 'e' }
       *  	patternStart = 0
       *  	patternEnd = 3
       *  	name = { 'N', 'u','l', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'x', 'c', 'e', 'p', 't', 'i', 'o', 'n' }
       *  	nameStart = 20
       *  	nameEnd = 9
       *  	result => false
       *  6.	pattern = { 'I', 'P', 'L', '3' }
       *  	patternStart = 0
       *  	patternEnd = 4
       *  	name = { 'I', 'P', 'e', 'r', 's', 'p', 'e', 'c', 't', 'i', 'v', 'e', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '3' }
       *  	nameStart = 0
       *  	nameEnd = 21
       *  	result => true
       *  7.	pattern = { 'H', M' }
       *  	patternStart = 0
       *  	patternEnd = 2
       *  	name = { 'H', 'a', 's', 'h', 'M', 'a', 'p', 'E', 'n', 't', 'r', 'y' }
       *  	nameStart = 0
       *  	nameEnd = 12
       *  	result => (prefixMatch == true)
       *  8.	pattern = { 'H', M', 'a', 'p' }
       *  	patternStart = 0
       *  	patternEnd = 4
       *  	name = { 'H', 'a', 't', 'M', 'a', 'p', 'p', 'e', 'r' }
       *  	nameStart = 0
       *  	nameEnd = 9
       *  	result => (prefixMatch == true)
       *
       * @param pattern the given pattern
       * @param patternStart the start index of the pattern, inclusive
       * @param patternEnd the end index of the pattern, exclusive
       * @param name the given name
       * @param nameStart the start index of the name, inclusive
       * @param nameEnd the end index of the name, exclusive
       * @param prefixMatch flag telling whether the pattern can match name prefix or not.
       * 		. For example, when it's true:
       * 			- 'HM' type string pattern will match  'HashMap' and 'HtmlMapper' types,
       * 			  but not 'HashMapEntry'
       * 			- 'HMap' type string pattern will match  'HashMap' type but not 'HtmlMapper'.
       * 		. and, when it's false:
       * 			- 'HM' type string pattern will match both   'HashMap' and 'HtmlMapper'
       * 			  and 'HashMapEntry'
       * 			- 'HMap' type string pattern will match both 'HashMap' and 'HtmlMapper'
       * 			  types.
       *
       * @return true if a sub-pattern matches the sub-part of the given name, false otherwise
       * @since 3.4
       */
      public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd, boolean prefixMatch) {
      ...
      }

  Note that same methods have been added on `SearchPattern` but with `String` parameters instead of `char[]` ones (javadoc comments are identical):

      public static final boolean camelCaseMatch(String pattern, String name, boolean prefixMatch) {
      ...
      }
      public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean prefixMatch) {
      ...
      }

  Note also that methods `camelCaseMatch(String, int, int, String, int, int)` of `CharOperation` and `SearchPattern` classes have been deprecated to avoid too many 'camelCaseMatch*' methods on these classes.
- Search Engine has been modified to better handle additional `SearchPattern` constants while using Camel Case one (see bug 200400).
  Existing `SearchPattern#R_CAMELCASE_MATCH` constant has been deprecated and
  is now replaced by `SearchPattern#R_CAMEL_CASE_MATCH`:

      	/**
      	 * Match rule: The search pattern contains a Camel Case expression with
      	 * a strict number of parts and preventing automatic prefix matching for the last
      	 * part (if it consists of multiple letters).
      	 *
      	 * Examples:
      	 * 	. 'HM' type string pattern will match 'HashMap' and 'HtmlMapper' types,
      	 * 		but not 'HashMapEntry'
      	 * 	. 'HMap' type string pattern will match 'HashMap' type but not 'HtmlMapper'.
      	 *
      	 * This Camel Case match rule does not allow prefix match but accept insensitive
      	 * case. For instance, 'HashMap' or 'HASHMAP' patterns using this Camel Case
      	 * rule will match both 'HashMap' but not 'HashMapEntry'.
      	 *
      	 * This rule still can be combined to prefix match to accept prefix matches
      	 * ('HashMap' pattern matching 'HashMapEntry' name). It can also be combined
      	 * to case sensitive match to reject case insensitive matches ('HAMA' pattern
      	 * will not match 'HashMap' name).
      	 *
      	 * If {@link #R_PATTERN_MATCH} rule is also combined, then the real used
      	 * match rule will depend on whether string pattern contains specific pattern
      	 * characters (e.g. '*' or '?') or not. If it does, then only Pattern match rule will
      	 * be used, otherwise only Camel Case match will be used.
      	 * For example, with 'NPE' string pattern, search will only use
      	 * Camel Case match rule, but with 'N*P*E*' string pattern, it will
      	 * use only Pattern match rule.
      	 *
      	 * @see CharOperation#camelCaseMatch(char[], char[], boolean) for a detailed
      	 * explanation of Camel Case matching.
      	 *
      	 * @since 3.4
      	 */
      	public static final int R_CAMEL_CASE_MATCH = 0x0100;

  This change was necessary has the obsolete `R_CAMELCASE_MATCH` could not support correctly additional constants as `R_PREFIX_MATCH` or `R_CASE_SENSITIVE`.
  However, this deprecated constant is still accepted for backward compatibility but user is advised to replace it with `R_CAMEL_CASE_MATCH | R_PREFIX_MATCH`

### Problem Reports Fixed

201066 [prefs] Preferences listeners are not removed while shutting down JavaModelManager
152841 [model] IJavaProject.findType(name, monitor) doesn't find secondary type
108456 IPackageFragmentRoot#getPackageFragment() should not accept invalid package names
201104 JavaElement of a recovered type binding should not return a compilation unit with no parent
190622 type binding marked as recovered but all is compiling
201064 [search] SearchEngine.searchAllTypeNames(..) does not find CamelCase match
183117 User Library Lost
200400 [search] Camel Case match prefix insensitive although spec says prefix sensitive
124624 [search] Camelcase matching routines should support end character
191739 "Duplicate nested type" bogus error on static class of abstract class or interface
200931 GENERATED_BY references still exist in some javadoc comments
200547 [1.5][compiler] Invalid ambiguous error when calling an overriden generic method with MULTIPLE bounds
198120 [1.5][compiler] Cannot directly invoke the abstract method huch(I1) for the type I1
196254 Overrides wrong for wildcard parameterized methods
193265 [1.5][compiler] Incorrect ambiguous method error involving abstract classes and enums
198253 unversioned downloads of ecj.jar and ecjsrc.zip

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - August 21, 2007
Project org.eclipse.jdt.core v_808 (cvs).

## What's new in this drop

- New fix for bug 186781 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- API method `JavaProject.setOption(String, String)` behavior has been slightly changed consequent upon following bugs fixing:
  - bug 152562: `null` is now accepted for the option value and remove the corresponding preference from the project,
  - bug 152578: the preference is not removed from project when the value is equals to the workspace preference value.

### Problem Reports Fixed

183923 [prefs] NPE in JavaProject#setOptions
152578 [prefs] IJavaProject.setOption(Object,Object) wrongly removes key when value is equals to JavaCore one
152562 [prefs] IJavaProject.setOption(..., null) does not work
200449 [model] Classpath variable deprecation message is not flushed from cache when variable is removed
186113 [model] classpath variable deprecation messages not initialized when called
109695 [search] Numbers should be treated as upper-case letters in CamelCase matching
186781 StackOverflowError while computing launch button tooltip

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - August 15, 2007
Project org.eclipse.jdt.core v_807 (cvs).

## What's new in this drop

- New fix for bug 200064 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).

### Problem Reports Fixed

200064 [search] ResourceException while searching for method reference
198051 [1.5][compiler] Improper Polymorphic Exception Handling
194399 IJavaProject.findType(String, String, WorkingCopyOwner) doesn't return the same element with different VMs.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M2 - August 14, 2007
Project org.eclipse.jdt.core v_806 (cvs).

## What's new in this drop

- New fix for bug 138184 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).

### Problem Reports Fixed

169970 [model] code assist favorites must honour build path of project in context
135493 [search] Clarify TypeNameRequestor#acceptType(...)
138184 [search] Type Dialog (Could not uniquely map the name to a type)
199004 [search] Java Search in 'JRE libraries' finds matches in Application Libraries

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M1 - August 2, 2007 - 3.4 MILESTONE 1
Project org.eclipse.jdt.core v_805 (cvs).

## What's new in this drop

### Problem Reports Fixed

198483 BuilderTests: need expectingUniqueCompiledClasses method

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M1 - August 1, 2007
Project org.eclipse.jdt.core v_804 (cvs).

## What's new in this drop

- All tests projects and org.eclipse.jdt.compiler.tool project's versions have been incremented.

### Problem Reports Fixed

198362 Formatter stops working when source code contains following line

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M1 - July 30, 2007
Project org.eclipse.jdt.core v_803 (cvs).

## What's new in this drop

### Problem Reports Fixed

109636 Comment formatter doesn't support "&#42;/"
197169 Formatter expands &#64; in annotation in javadoc, creating invalid tag
198153 [formatter] adds extra space before expanded numerical entity
197400 NPE for completion engine in class static block
53727 [Tasks] longest tags should match

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M1 - July 23, 2007
Project org.eclipse.jdt.core v_802 (cvs).

## What's new in this drop

### Problem Reports Fixed

166093 [search] NPE searching for references to private static method in class file
196514 Bunch of exception during code typing in JDT editor
186333 [search] Should better locate fields and methods matches on binary super types with unresolved references
167357 non-empty init block in local member type has no children
186114 IMethodBinding.overrides(..) should consider static

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M1 - July 17, 2007
Project org.eclipse.jdt.core v_801 (cvs).

## What's new in this drop

- Incremented JDT/Core plug-in id to "3.4.0" as fix for 186822 adds new constants in `org.eclipse.jdt.core.compiler.IProblem`.

### Problem Reports Fixed

196339 [search] SearchEngine not returning correct result
196354 ClassCastException in package binding
196249 problem in parsing
195802 Name clash compile error generated if superclass is abstract
195468 [1.5][compiler] Eclipse compiler differs from javac with generics (name clash)
196653 [compiler] More resilience with unbound caught exceptions
192387 Wrong warning location for a non static reference to an enum value.
195228 [search] Invalid path in open type dialog
186822 [1.5][compiler] Add more resilience on annotation and enum type declaration with type parameters
97998 [builder] improve the error handling in case the build encounters a locked file within the the output folder
188876 [assist] Proposals inside an import statement shouldn't be fully qualified

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.4M1 - July 9, 2007
Project org.eclipse.jdt.core v_800 (cvs).

## What's new in this drop

- Incremented JDT/Core plug-in id to "3.3.100". Will go to "3.4.0" as soon as an API/feature gets added.

### Problem Reports Fixed

190960 [batch][compiler] help message for annotations processing should be improved
103654 BindingKey.getTypeArguments bug with qualified types
191125 [1.5] [assist] NPE in CompletionEngine.proposeType()
195489 [search] Javadoc reference not found while using SearchEngine.searchDeclarationsOfReferencedTypes
195317 [compiler] java.lang.ClassFormatError: Invalid pc in LineNumberTable
195509 Need to improve classpath resolution for Apache Harmony in org/eclipse/jdt/core/tests/util/Util.java
195526 org.eclipse.jdt.core.tests.compiler.regression.GenericTypeTest.test0744 depends on non-specified package-private class HashMap.Entry implementation
191082 AnnotationMirror.getPosition() returns wrong value
189799 [jsr269] Make getDocComment() behave more like javac
192774 Annotation AST nodes should have unique IAnnotationBindings
171703 Eclipse cannot find source for *.class files
193979 AST parser generates wrong AST
95288 [model] CreatePackageFragmentOperation runs with wrong ISchedulingRule
142044 [search] "And" Pattern fails with NullPointerException
111882 [assist] Invalid relevance while completing in case of a switch
195263 Update exportplugins.xml to 3.3.100 and 3.4
181488 [index] Lots of unbuffered sequential reads in DiskIndex
18311 api: ISourceReference::getSource can return undocumented result
129560 [spec] Questionable javadoc for IJavaElement#isStructureKnown()
178226 Clarify spec for IJarEntryResource
163229 [model] IAccessRule does not say it cannot be implemented by clients
149590 [model] bindings for duplicate local variables share same key
195091 Index is rebuilt on each startup
170889 [5.0][content assist] strange label for 'class' proposal
190965 [compiler] useless assignment to local variable parameters in Scope line 431
153125 [getter setter] Getters/setters for variables starting with non-Latin letter are generated incorrectly
186760 Two cases of switch in DeltaProcessor#fire could be merged
170954 void should not be proposed inside method
120766 problems when using classes of the same name
137452 Autocomplete adds "Void" instead of doing nothing
194420 Misleading error message when build fails due to out of sync workspace
132139 [assist] Duplicate names while completing in local variable declaration
99631 [assist][5.0] Unnecessary proposals on annotation completion
171037 [codeassist] if 1.4 or higher code assist after 'import' should not suggest types from default package
139446 [build path] bug in the Edit Library dialog box, when changing the default JRE, and switching from alternate JRE to workspace default
192497 Cannot always find method definition, depending on cursor position
151967 [1.5][assist] Code completion with enumerations implementing an interface
150632 [assist] Content Assist and Parameter Hints sometimes don't work for constructor call
194435 JDT Core manifest contains invalid prereqed version
185318 [assist] No proposals when completing inside a method import
102031 Content assist proposes same type twice after "call(new |"
157069 [assist] Content Assist introduces compile error
119434 [code select] Code select returns doubled java element
194034 [1.5][Compiler] Inconsistency with javac: subclass does not properly inherit generic method
185037 Optimization opportunity in MethodVerifier
191928 Use Util.log instead of printStackTrace at AbstractImageBuilder#612
194185 [search] for package declarations finds also subpackages
191908 [1.5][compiler] Missing strike through for deprecated declaration fragment
192285 [formatter] Java source formatter not working if class has annotation on single line multiple fields declaration.

For earlier build notes, also see build notes up to Release 3.3.