JDT/Core Release Notes 3.5

jdt core - build notes 3.5 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.5 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.4 (also see a summary of API changes).
Maintenance of previous releases of JDT/Core is performed in parallel branches: R3.4.x, 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.5RC3 - May 27, 2009 - 3.5 RC3
Project org.eclipse.jdt.core v_963 (cvs).

## What's new in this drop

Reverting change for bug 236818.

### Problem Reports Fixed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5RC3 - May 26, 2009
Project org.eclipse.jdt.core v_962 (cvs).

## What's new in this drop

### Problem Reports Fixed

234194 Run copyright tool
277669 IBinding.getJavaElement() returns 'null' where it should not

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5RC2 - May 21, 2009 - 3.5 RC2
Project org.eclipse.jdt.core v_961 (cvs).

## What's new in this drop

### Problem Reports Fixed

277372 [1.5][compiler] Signature attribute should not be generated with target jsr14

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5RC2 - May 20, 2009
Project org.eclipse.jdt.core v_960 (cvs).

## What's new in this drop

### Problem Reports Fixed

273991 [assist] Wrong relevance for some proposals which are not compatible with the expected type
276890 [content assist] proposes nothing for generic type with non-trivial constructor

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5RC1 - May 14, 2009 - 3.5 RC1
Project org.eclipse.jdt.core v_959 (cvs).

## What's new in this drop

### Problem Reports Fixed

275471 Eclipse Compiler needs a compile dependency to a plug-in, but javac does not need that dependency
170197 [model] JavaCore.newLibraryEntry(.., IClasspathAttribute[], ..) should check for null

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5RC1 - May 12, 2009
Project org.eclipse.jdt.core v_958 (cvs).

## What's new in this drop

### Problem Reports Fixed

275381 [1.5][compiler] Missing innerClass attribute for inner types used as type arguments
255752 [javadoc][assist] Inappropriate completion proposals for javadoc at compilation unit level
275467 Batch compiler writes log using default encoding instead of UTF-8

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5RC1 - May 7, 2009
Project org.eclipse.jdt.core v_957 (cvs).

## What's new in this drop

### Problem Reports Fixed

273157 [performance] ManifestAnalyzer is causing a 2x performance drop in the updating of classpath of JavaProjects in comparison with 3.4
268879 External folders project not cleaned up
275215 org.eclipse.jdt.internal.core.util.KeyToSignature#consumeType() uses a method not available in J2SE-1.4 EE
275244 org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ZipEntry, ZipFile) should use BufferedInputStream
132679 [assist] Completion fails within non-static anonymous inner class

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5RC1 - May 6, 2009
Project org.eclipse.jdt.core v_956 (cvs).

## What's new in this drop

### Problem Reports Fixed

274114 org.eclipse.jdt.internal.compiler.tool.Options must be updated with latest compiler options
185422 [1.5][compiler] Incorrectly allows generic use of private inner classes
274917 Incorrect "empty block" warning underlining on annotations
274557 CompletionContext problem with annotation value element
274332 jdt.core.model tests take 2 hours to finish on the mac

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - April 29, 2009 - 3.5 MILESTONE 7
Project org.eclipse.jdt.core v_955 (cvs).

## What's new in this drop

### Problem Reports Fixed

274397 tag projects changed since I20090421-0930 build

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - April 28, 2009
Project org.eclipse.jdt.core v_954 (cvs).

## What's new in this drop

### Problem Reports Fixed

269934 [apt] APT-generated classes that contain annotations causes NPE
259950 Update copyright for 2009

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - April 27, 2009
Project org.eclipse.jdt.core v_953 (cvs).

## What's new in this drop

### Problem Reports Fixed

272204 null should never be part of a type hierarchy
260031 Wrong type for class constants in stackmap frames

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - April 27, 2009
Project org.eclipse.jdt.core v_952 (cvs).

## What's new in this drop

### Problem Reports Fixed

273862 [1.7][compiler] Return type should be used to decide method duplicates
84720 [1.5][assist] proposal ranking by return value should consider auto(un)boxing
272711 Exceptions in ASTRewrite

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - April 24, 2009
Project org.eclipse.jdt.core v_951 (cvs).

## What's new in this drop

### Problem Reports Fixed

273308 [perfs] Save very slow because DeltaProcessor#resourceChanged(..) resolves classpath
154823 [getter setter] Getters Setters generation doesn't follow naming convention
263786 NamingConventions#suggestVariableNames(..) should not modify all caps parts
263769 Javadoc glitches in JavaCore#setComplianceOptions(String, Map)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - April 21, 2009
Project org.eclipse.jdt.core v_950 (cvs).

## What's new in this drop

### Problem Reports Fixed

266771 NameLookup.findPackageFragment returns very incorrect package fragments
271102 Java model corrupt after switching target platform
270784 [perfs] Big regression on FullSourceWorkspaceModelTests#testCloseProjects() test
272450 DBCS3.5: Classpath resolution fails to honor the 'Class-Path' header of JAR manifest file in DBCS
272706 [Model] Generics lost on IField when coming from .class files
246832 [1.5][assist] Camel case completion not working with statically imported methods
267833 [javadoc] Custom tags should not be allowed for inline tags
271680 [compiler] Stack overflow pasting in Java editor
251827 [search] Search for type reference with wildcards finds references in package
271284 [search] AIOOBE in StringOperation.getCamelCaseMatchingRegions
272148 [assist] Constructors with an array as parameter type are not proposed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - April 14, 2009
Project org.eclipse.jdt.core v_949 (cvs).

## What's new in this drop

### Problem Reports Fixed

271561 JavaModelException when accessing an array of nested annotations

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - April 7, 2009
Project org.eclipse.jdt.core v_948 (cvs).

## What's new in this drop

### Problem Reports Fixed

271303 [1.5][compiler] Override and package visibility issue
270367 [DOM] NullPointerException in ParenthesizedExpression.resolveTypeBinding()
253008 [assist] Boolean expressions should be proposed with higher relevence in if(), while() etc
270983 [formatter] Enum with field declarations but no constants confuses formatter
159851 [1.5] [compiler] Eclipse compiler fails to report type parameter bounds errors when generic instance is a type argument
270446 "Compute launch button tooltip" error
270148 ASTParser cannot parse K_CLASS_BODY_DECLARATIONS with syntax errors

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - March 31, 2009
Project org.eclipse.jdt.core v_947 (cvs).

## What's new in this drop

### Problem Reports Fixed

270409 [perfs] No JDT/Core tests results in last baseline run
267670 Private enum constant incorrectly marked as never read locally
269493 [assist] Keywords are not proposed in a for statement without block
270194 [1.5][compiler] Java error in 3.5M6 that was not present in 3.4
270257 [perfs] Small regression on 'JDT/Core plugin initialization' test
270113 [code assist] Missing ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION proposal
269985 Full Build triggered when using class folder on classpath and custom builder
207935 [1.5][compiler] inconsistency with javac 1.5&1.6 involving parameterized invocation of non-generic method
269964 [perfs] Regression on 'Search all type names' test

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - March 24, 2009
Project org.eclipse.jdt.core v_946 (cvs).

## What's new in this drop

### Problem Reports Fixed

247037 [javadoc] compiler should issue warning for {@inheritDoc} at illegal location
244406 [buildpath] Internal jars refered with OS path are shown as non-Java resources
269476 testInitJDTPlugin() seems to leak several DeltaProcessor and JavaModelManager
269336 [prefs] JavaProject preferences listeners are not removed
203060 [codeassist] assert keyword should not be proposed when compliance level is set to 1.3
251539 [1.6][compiler] java.lang.IllegalArgumentException: info cannot be null (StackMapFrame.java)
268837 [1.6][compiler] Incorrectly report ambiguity of methods with generics
265104 Reconciler cannot handle annotation with reference to missing type

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M7 - March 17, 2009
Project org.eclipse.jdt.core v_945 (cvs).

## What's new in this drop

### Problem Reports Fixed

267789 eclipse-Automated-Tests-3.4.zip produces compile errors (build path?) with IBM JDK
268802 Useless call to getSource() in SourceTypeConverter

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M6 - March 10, 2009 - 3.5 MILESTONE 6
Project org.eclipse.jdt.core v_944 (cvs).

## What's new in this drop

### Problem Reports Fixed

267941 [perfs] Possible regression on 'Code assist in expression' test
267773 [open type] Use of ? results in error
267658 [formatter] Javadoc comments may be still formatted as block comments

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M6 - March 9, 2009
Project org.eclipse.jdt.core v_943 (cvs).

## What's new in this drop

### Problem Reports Fixed

124646 Connecting type parameter fails for local types

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M6 - March 7, 2009
Project org.eclipse.jdt.core v_942 (cvs).

## What's new in this drop

- Added the following APIs to allow clients to provide the source of a compilation unit or a package that is neither on the classpath nor in a working copy.
  - `org.eclipse.jdt.core.WorkingCopyOwner.findSource(String, String)`
  - `org.eclipse.jdt.core.WorkingCopyOwner.isPackage(String[])`
  See bug 257528 for details.

### Problem Reports Fixed

267088 [1.5][compiler] Misleading error message in case of inherited methods
260840 NamingConventions creates wrong plural for name ending in <vowel>y
243406 [code assist] Content assist gives "assertion failed" for import Foo|.Bar
237241 Content assist does not scale with javadoc on type with many members
265962 [compiler] Internal compiler error on while with return clause
236520 [search] AIOOBE in PatternLocator.updateMatch
265103 Manifest Class-Path is not read correctly with ECJ
99399 [1.5][assist] Code assist propose final classes in methods type parameter extends clause
257528 An API to incrementaly generate compilation units for binding resolution environment
266582 [1.5][compiler] AbortCompilation while decoding the type variable of an anonymous type
266837 [model] SourceField.getConstant does not supply a value if type is fully qualified

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M6 - March 3, 2009
Project org.eclipse.jdt.core v_941 (cvs).

## What's new in this drop

### Problem Reports Fixed

252442 [Search] NPE after move followed by undo
261722 [search] NPE after removing a project
266421 [1.5][compiler] code compiles correctly in 3.4.1 but gives compilation errors in 3.5M5
260011 [formatter] Formatting of html in javadoc comments doesn't work with style attributes
217108 [formatter] deletes blank lines between comments
198963 [formatter] 3.3 Code Formatter repeatedly indents block comment
265571 Abstract method that is not directly used is flagged as unused

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M6 - February 24, 2009
Project org.eclipse.jdt.core v_940 (cvs).

## What's new in this drop

- Fixed odd API in `ReferenceMatch`
  (see more details in bug 248878).

### Problem Reports Fixed

265820 Unused methods inside org.eclipse.jdt.internal.core.dom.rewrite.ImportRewriteAnalyzer
233356 [search] NPE in org.eclipse.jdt.internal.compiler.util.SimpleLookupTable.get()
265630 [search][perfs] Regression in testSearchPackageDeclarationsWorkspace
248878 [search] Odd API in ReferenceMatch
206930 [1.5][compiler] Mismatch between javac and Eclipse compiler
265142 Compiler fails to warn on unused constructors of private classes
264950 [scanner] IScanner does not return whitespace token
264843 [1.5][compiler] Eclipse compiler fails to reject invalid code with primitives autoboxed to generics
265065 [search] java.lang.ClassCastException while running "Refactor...Extract Class"

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M6 - February 17, 2009
Project org.eclipse.jdt.core v_939 (cvs).

## What's new in this drop

- Added a new API method on `SearchPattern` to provide matching regions between a pattern and a name when they are compared using a given match rule
  (see more details in bug 218605).

      /**
       * Answers all the regions in a given name matching a given pattern using
       * a specified match rule.
       *
       * Each of these regions is made of its starting index and its length in the given
       * name. They are all concatenated in a single array of int
       * which therefore always has an even length.
       *
       * All returned regions are disjointed from each other. That means that the end
       * of a region is always different than the start of the following one.
       * For example, if two regions are returned:
       * { start1, length1, start2, length2 }
       * then start1+length1 will always be smaller than
       * start2.
       *
       * The possible comparison rules between the name and the pattern are:
       *     . {@link #R_EXACT_MATCH exact matching}
       *     . {@link #R_PREFIX_MATCH prefix matching}
       *     . {@link #R_PATTERN_MATCH pattern matching}
       *     . {@link #R_CAMELCASE_MATCH camel case matching}
       *     . {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH camel case matching with same parts count}
       *
       * Each of these rules may be combined with the
       * {@link #R_CASE_SENSITIVE case sensitive flag} if the match comparison
       * should respect the case.
       *
       * Examples:
       *    .   pattern = "NPE"
       *        name = NullPointerException / NoPermissionException
       *        matchRule = {@link #R_CAMELCASE_MATCH}
       *        result:  { 0, 1, 4, 1, 11, 1 } / { 0, 1, 2, 1, 12, 1 }
       *     .  pattern = "NuPoEx"
       *        name = NullPointerException
       *        matchRule = {@link #R_CAMELCASE_MATCH}
       *        result:  { 0, 2, 4, 2, 11, 2 }
       *     .  pattern = "IPL3"
       *        name = "IPerspectiveListener3"
       *        matchRule = {@link #R_CAMELCASE_MATCH}
       *        result:  { 0, 2, 12, 1, 20, 1 }
       *     .  pattern = "HashME"
       *        name = "HashMapEntry"
       *        matchRule = {@link #R_CAMELCASE_MATCH}
       *        result:  { 0, 5, 7, 1 }
       *     .  pattern = "N???Po*Ex?eption"
       *        name = NullPointerException
       *        matchRule = {@link #R_PATTERN_MATCH} | {@link #R_CASE_SENSITIVE}
       *        result:  { 0, 1, 4, 2, 11, 2, 14, 6 }
       *     .  pattern = "Ha*M*ent*"
       *        name = "HashMapEntry"
       *        matchRule = {@link #R_PATTERN_MATCH}
       *        result:  { 0, 2, 4, 1, 7, 3 }
       *
       * @see #camelCaseMatch(String, String, boolean) for more details on the
       * 	camel case behavior
       * @see CharOperation#match(char[], char[], boolean) for more details on the
       * 	pattern match behavior
       *
       * @param pattern the given pattern. If null,
       *     then an empty region (new int[0]) will be returned
       *     showing that the name matches the pattern but no common
       *     character has been found.
       * @param name the given name
       * @param matchRule the rule to apply for the comparison.
       *     The following values are accepted:
       *         . {@link #R_EXACT_MATCH}
       *         . {@link #R_PREFIX_MATCH}
       *         . {@link #R_PATTERN_MATCH}
       *         . {@link #R_CAMELCASE_MATCH}
       *         . {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}
       *
       *     Each of these valid values may be also combined with
       *     the {@link #R_CASE_SENSITIVE} flag.
       *
       *     Some examples:
       *         . {@link #R_EXACT_MATCH} | {@link #R_CASE_SENSITIVE}:
       *           if an exact case sensitive match is expected,
       *         . {@link #R_PREFIX_MATCH}:
       *           if a case insensitive prefix match is expected,
       *         . {@link #R_CAMELCASE_MATCH}:
       *           if a case insensitive camel case match is expected,
       *         . {@link #R_CAMELCASE_SAME_PART_COUNT_MATCH}
       *            | {@link #R_CASE_SENSITIVE}:
       *           if a case sensitive camel case with same parts count match
       *           is expected,
       *         . etc.
       *
       * @return an array of int having two slots per returned
       *     regions (the first one is the region starting index and the second one
       *     is the region length or null if the given name does not
       *     match the given pattern).
       *
       *     The returned regions may be empty (new int[0]) if the
       *     pattern is null (whatever the match rule is). The returned
       *     regions will also be empty if the pattern is only made of '?'
       *     and/or '*' character(s) (e.g. '*',
       *     '?*', '???', etc.) when using a pattern
       *     match rule.
       *
       * @since 3.5
       */

### Problem Reports Fixed

264991 Wrong 'unused' problem reported
237742 [javadoc] Javadoc tag name validation is incorrect
264843 [1.5][compiler] Eclipse compiler fails to reject invalid code with primitives autoboxed to generics
264881 [1.5][compiler]Incorrect unchecked conversion warnings for return types
201912 [compiler] Unused public members of private classes not flagged
264817 [search] <char> + * returns 'null' from SearchPattern.getMatchingRegions(String, String, int)
264816 [search] AIOOBE in StringOperation.getPatternMatchingRegions(..) with pattern "?*"
250454 [search] Cannot find method references between projects
218605 [search] SearchPattern: provide way to get the matching regions
263558 Can't compile package-info.java from FindBugs with 3.5 Eclipse
264443 [parser] ASTParser.createASTs and IVariableBinding

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M6 - February 10, 2009
Project org.eclipse.jdt.core v_938 (cvs).

## What's new in this drop

### Problem Reports Fixed

261594 Adjust code to new PRE_REFRESH semantics
263877 [1.5][compiler] forward reference error flagged within enum
263633 [1.5][compiler] Invalid type mismatch for after generic method inference
262932 [assist] Constructor completion makes array allocation difficult
263653 patch for jdt.core.model.tests to accommodate icu 4.0.1
246627 [ast rewrite] Wrong indentation for statement inserted before SwitchCase

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M6 - February 3, 2009
Project org.eclipse.jdt.core v_937 (cvs).

## What's new in this drop

### Problem Reports Fixed

202393 [compiler] Incomplete code coverage or useless statement within ThrowStatement#resolve
263215 [1.5][compiler] I20090129-1200 generates suddenly an generics compile error that 3.5M4 didnt do
261510 [compiler] Deadlock in static initializer of JDT classes
262517 [ast rewrite] Whitespace settings in formatter ignored when adding annotation
260848 [perfs] Regression on JDT/Core plugin initialization performance test
257716 [compiler] Erroneous blank field may not have been initialized
262408 remove deprecated NamingConventions.VK_CONSTANT_FIELD
262717 Wrong line numbers in classfile
262568 improve Javadoc for ICompilationUnit.applyTextEdit(TextEdit, IProgressMonitor)
262389 Internal code must not use ICompilationUnit.applyTextEdit

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M5 - January 27, 2009 - 3.5 MILESTONE 5
Project org.eclipse.jdt.core v_936 (cvs).

## What's new in this drop

### Problem Reports Fixed

262304 [1.5][compiler] Enum constant in annotation value: javac vs Eclipse differ

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M5 - January 25, 2009
Project org.eclipse.jdt.core v_935 (cvs).

## What's new in this drop

- Added APIs to take into account the generic type and the rank of a wildcard type binding: `ITypeBinding#getGenericTypeOfWildcardType()`, `ITypeBinding#getRank()`, and `BindingKey#createWildcardTypeBindingKey(String genericTypeKey, char boundKind, String boundTypeKey, int rank)`.

### Problem Reports Fixed

262208 [1.5][compiler]Incorrect @Override and name clash errors
262209 [1.5][compiler]Incorrect ambiguous method calls
234609 [dom] BindingKey#toSignature() fails with key from createWilcardTypeBindingKey(..)
261973 [assist] Constructor completion should be improved (bug 6930)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M5 - January 20, 2009
Project org.eclipse.jdt.core v_934 (cvs).

## What's new in this drop

- Added new API to propose constructor completion
  When "new ArrayLis" is completed now constructors are proposed instead of type references. This new completion kind is `CONSTRUCTOR_INVOCATION` and this proposal has always a `TYPE_REF` required proposal to describe the type of the constructor. The `CONSTRUCTOR_INVOCATION` has "()" as completion string and `TYPE_REF` has "java.util.ArrayList" as completion string.
  There is also a similar new API to complete anonymous type constructor: `ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION`

      	/**
      	 * Completion is a reference to a constructor.
      	 * This kind of completion might occur in a context like
      	 * <code>"new Lis"</code> and complete it to
      	 * <code>"new List();"</code> if List is a class that is not abstract.
      	 * <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 constructor that is referenced
      	 * </li>
      	 * <li>{@link #getFlags()} -
      	 * the modifiers flags of the constructor that is referenced
      	 * </li>
      	 * <li>{@link #getName()} -
      	 * the simple name of the constructor that is referenced
      	 * </li>
      	 * <li>{@link #getSignature()} -
      	 * the method signature of the constructor that is referenced
      	 * </li>
      	 * </ul>
      	 * </p>
      	 * <p>
      	 * This kind of proposal could require a long computation, so they are computed only if completion operation is called with a {@link IProgressMonitor}
      	 * (e.g. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)}).<br>
      	 * This kind of proposal is always is only proposals with a {@link #TYPE_REF} required proposal, so this kind of required proposal must be allowed:
      	 * <code>requestor.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true)</code>.
      	 * </p>
      	 *
      	 * @see #getKind()
      	 * @see CompletionRequestor#setAllowsRequiredProposals(int, int, boolean)
      	 *
      	 * @since 3.5
      	 */
      	public static final int CONSTRUCTOR_INVOCATION = 26;

      	/**
      	 * Completion is a reference of a constructor of an anonymous class.
      	 * This kind of completion might occur in a context like
      	 * <code>"new Lis^;"</code> and complete it to
      	 * <code>"new List() {}"</code> if List is an interface or abstract class.
      	 * <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 being implemented or subclassed
      	 * </li>
      	 * <li>{@link #getDeclarationKey()} -
      	 * the type unique key of the type being implemented or subclassed
      	 * </li>
      	 * <li>{@link #getSignature()} -
      	 * the method signature of the constructor that is referenced
      	 * </li>
      	 * <li>{@link #getKey()} -
      	 * the method unique key of the constructor that is referenced
      	 * if the declaring type is not an interface
      	 * </li>
      	 * <li>{@link #getFlags()} -
      	 * the modifiers flags of the constructor that is referenced
      	 * </li>
      	 * </ul>
      	 * </p>
      	 * <p>
      	 * This kind of proposal could require a long computation, so they are computed only if completion operation is called with a {@link IProgressMonitor}
      	 * (e.g. {@link ICodeAssist#codeComplete(int, CompletionRequestor, IProgressMonitor)})<br>
      	 * This kind of proposal is always is only proposals with a {@link #TYPE_REF} required proposal, so this kind of required proposal must be allowed:
      	 * <code>requestor.setAllowsRequiredProposals(CONSTRUCTOR_INVOCATION, TYPE_REF, true)</code>.
      	 * </p>
      	 *
      	 * @see #getKind()
      	 * @see CompletionRequestor#setAllowsRequiredProposals(int, int, boolean)
      	 *
      	 * @since 3.5
      	 */
      	public static final int ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION = 27;

  These new proposals can require a long computation so they are proposed only if code assist was called with a progress monitor. To avoid that the code assist operation takes too much time a `IProgressMonitor` which automatically cancel the code assist operation when a specified amount of time is reached could be used.

      new IProgressMonitor() {
          private final static int TIMEOUT = 500; //ms
          private long endTime;
          public void beginTask(String name, int totalWork) {
              fEndTime= System.currentTimeMillis() + TIMEOUT;
          }
          public boolean isCanceled() {
              return endTime <= System.currentTimeMillis();
          }
          ...
       };

- Fix for bug 6930 required the index version to be incremented. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs) and the size of the new indexes will be bigger.

### Problem Reports Fixed

260717 [assist] Constructors should be proposed even when the declaring type is not imported
6930 [assist] Constructor completion
220311 [1.5][compiler] package-info.java does not recognise duplicate annotations as a problem
259685 Bogus build error "Cannot nest" xyz "inside library"
260798 [formatter] Strange behavior of never join lines

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M5 - January 13, 2009
Project org.eclipse.jdt.core v_933 (cvs).

## What's new in this drop

- Improved generic method inference to better match JLS 15.12.2.6. The compiler now infers better in presence of unchecked conversion in argument types (raw types).

### Problem Reports Fixed

214948 Incorrect deprecation warning on annotation instances
260276 [formatter] Inconsistent formatting of one-line block comment
239607 [formatter] Incorrect removal of asterisk (*) within a block comment when formatting
254998 [formatter] wrong type comment format during code generation
258798 [1.5][compiler] Return type should be erased after unchecked conversion during inference
258906 [jsr269] Package annotations not visible to Java 6 APT processors
259633 [1.5][compiler] Bound of type parameter of class in method not checked
149768 Annotations should be a compilation dependency
260257 Reduce space taken by SourceRefElementInfos
259607 Deadlock opening launch configuration dialog

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M5 - January 6, 2009
Project org.eclipse.jdt.core v_932 (cvs).

## What's new in this drop

### Problem Reports Fixed

258145 Fup of bug 252555, JME is thrown when package-info.java exists twice in the same project
259129 [compiler] Fup of bug 258950, wrong line number attribute for cascading method invocations

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M5 - December 16, 2008
Project org.eclipse.jdt.core v_931 (cvs).

## What's new in this drop

### Problem Reports Fixed

171136 [buildpath] Illegal type of archive for required library is an incorrect message.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M4 - December 10, 2008 - 3.5 MILESTONE 4
Project org.eclipse.jdt.core v_930 (cvs).

## What's new in this drop

### Problem Reports Fixed

255008 [compiler] Assert statement discrepancy with javac caused by an uninitialized variable
258039 [1.5][compiler] Misleading error message for "instanceof List<Object>"

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M4 - December 8, 2008
Project org.eclipse.jdt.core v_929 (cvs).

## What's new in this drop

- Added property to adjust the size of the openable cache: "org.eclipse.jdt.core.javamodelcache.ratio". For example, starting Eclipse as follows will increase the size of the openable cache by 50%:

      eclipse.exe -vmArgs -Dorg.eclipse.jdt.core.javamodelcache.ratio=1.5

- As users may want to have different behavior in comments, the new formatter preference to preserve line breaks is now controlled by two different options:
  - for the already wrapped code lines:
    `DefaultCodeFormatterConstants.FORMATTER_JOIN_WRAPPED_LINES`

        /**
         * FORMATTER / Option to specify whether the formatter can join wrapped lines or not
         *
         * 		For example, the wrapped lines of method foo return statement in following test case:
         * 			class X {
         * 			String foo() {
         * 			return "select x "
         * 			       + "from y "
         * 			       + "where z=a";
         * 			}
         * 			}
         *
         * 		will be preserved by the formatter when the new preference is used
         * 		even if the maximum line width would give it enough space to join the lines.
         * 		Hence produces the following output:
         * 			class X {
         * 			    String foo() {
         * 			        return "select x "
         * 			                + "from y "
         * 			                + "where z=a";
         * 			    }
         * 			}
         *
         *     - option id:         "org.eclipse.jdt.core.formatter.join_wrapped_lines"
         *     - possible values:   { TRUE, FALSE }
         *     - default:           TRUE
         *
         * @since 3.5
         */

  - for the lines in comments:
    `DefaultCodeFormatterConstants.FORMATTER_JOIN_LINES_IN_COMMENTS`

        /**
         * FORMATTER / Option to specify whether the formatter can join text lines in comments or not
         *
         * 		For example, the following comment:
         * 			/**
         * 			 * The foo method.
         * 			 * foo is a substitute for bar.
         * 			 */
         * 			public class X {
         * 			}
         *
         * 		will be unchanged by the formatter when this new preference is used,
         * 		even if the maximum line width would give it enough space to join the lines.
         *
         *     - option id:         "org.eclipse.jdt.core.formatter.join_lines_in_comments"
         *     - possible values:   { TRUE, FALSE }
         *     - default:           TRUE
         *
         * @since 3.5
         */

### Problem Reports Fixed

257907 [Formatter] FORMATTER_PRESERVE_EXISTING_LINE_BREAKS needs clarification
257906 [Formatter] should have separate 'preserve existing line breaks' for code and comment formatting
232816 [buildpath] Misleading problem text for missing jar in user library
257849 [1.5][compiler] Internal compiler error using generics w/ abstract classes & interfaces
257869 Adjust Java model cache size using a property

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M4 - December 7, 2008
Project org.eclipse.jdt.core v_928 (cvs).

## What's new in this drop

- Added a new formatter preference to preserve existing breaks in already wrapped and comments lines.

  For example, the wrapped lines of method foo return statement in following test case:

      class X {
      String foo() {
      return "select x "
             + "from y "
             + "where z=a";
      }
      }

  will be preserved by the formatter when the new preference is used, hence produces now the following output:

      class X {
          String foo() {
              return "select x "
                      + "from y "
                      + "where z=a";
          }
      }

  Similarly, following comment:

      /**
       * The foo method.
       * foo is a substitute for bar.
       */
      public class X {
      }

  is now unchanged by the formatter when this new preference is used...

  This diagnosis is controlled by the option:
  `DefaultCodeFormatterConstants.FORMATTER_PRESERVE_EXISTING_LINE_BREAKS`:

      /**
       * FORMATTER / Option to specify whether the formatter should preserve existing line breaks or not
       *     - option id:         "org.eclipse.jdt.core.formatter.preserve_existing_line_breaks"
       *     - possible values:   { TRUE, FALSE }
       *     - default:           FALSE
       * @since 3.5
       */

### Problem Reports Fixed

257434 [1.5][compiler] Should detect type mismatch after capture
257384 AIOOBE during problem reporting
239130 [formatter] Comment formatter does not keep blank lines after @see references
198074 [formatter] the code formatter doesn't respect my new lines
256799 [formatter] Formatter wrongly adds space to //$FALL-THROUGH$ is

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M4 - December 2, 2008
Project org.eclipse.jdt.core v_927 (cvs).

## What's new in this drop

- Improved dead code detection by having it (optionally) tolerate trivial IF statement, such as `if (DEBUG) ...`. This extra option is defined by `JavaCore.COMPILER_PB_DEAD_CODE_IN_TRIVIAL_IF_STATEMENT`.

      * Compiler option ID: Reporting Dead Code Inside Trivial If Statement.
      * When enabled, the compiler will signal presence of dead code inside trivial IF statement, e.g. if (DEBUG)...
      * The severity of the problem is controlled with option {@link #COMPILER_PB_DEAD_CODE}.
      *
      * Option id:"org.eclipse.jdt.core.compiler.problem.deadCodeInTrivialIfStatement"
      * Possible values:{ "enabled", "disabled" }
      * Default:"warning"

- Dead code detection warning also got enabled by default.

      * Compiler option ID: Reporting Dead Code.
      * When enabled, the compiler will issue an error or a warning if some non fatal dead code is detected. For instance, if (false) foo();
      * is not reported as truly unreachable code by the Java Language Specification. If this diagnostic is enabled, then the invocation of foo() is
      * going to be signaled as being dead code.
      * Option id:"org.eclipse.jdt.core.compiler.problem.deadCode"
      * Possible values:{ "error", "warning", "ignore" }
      * Default:"warning"

### Problem Reports Fixed

256329 Impossible NPE in JavaModelManager.getOptions
256882 [compiler] Enable DeadCode detection by default
255970 test tear down failed causing cascade of failures
207093 Perf: adding a new top-level package is slow if many source files exist
252948 Unncessary compilation when adding packages with an existing path segment at the beginning
256735 Marker property value is too long for internal compiler error (java.lang.StackOverflowError)
227986 Avoid duplicated strings in Java model
256463 [compiler] Support common debug pattern in unreachable code detection
256679 [perfs] SearchAllTypeNames performance tests are slower on eplnx2
228845 [hierarchy] Type hierarchy should include subtypes in primary working copies
252571 [buildpath] External folder appears empty after workspace move
256404 Wrong handle identifier for external library folder

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M4 - November 25, 2008
Project org.eclipse.jdt.core v_926 (cvs).

## What's new in this drop

- Added a new compiler warning to signal presence of dead code, e.g. `if (false) deadCode();` . This diagnosis is controlled by option: `JavaCore.COMPILER_PB_DEAD_CODE` and produces a problem marker which ID is `IProblem.DeadCode` problem ID.

      * Compiler option ID: Reporting Dead Code.
      * When enabled, the compiler will issue an error or a warning if some non fatal dead code is detected. For instance, if (false) foo();
      * is not reported as truly unreachable code by the Java Language Specification. If this diagnostic is enabled, then the invocation of foo() is
      * going to be signaled as being dead code.
      * Option id:"org.eclipse.jdt.core.compiler.problem.deadCode"
      * Possible values:{ "error", "warning", "ignore" }
      * Default:"ignore"

### Problem Reports Fixed

251504 [index] Wrong indexes may be used while performing a search request
48399 [compiler] Enhance unreachable code detection
254825 [javadoc] compile error when referencing outer param from inner class javadoc
252555 [javadoc] NPE on duplicate package-info
251690 [compiler] NPE if type collides with a package
249134 [compiler] error message (implement abstract method) not as intended
154162 [1.5][compiler] Uninformative error message for qualified enum constants in switch statement
255974 Abusive usage of InvalidInputException in the compiler
251693 NamingConventions.suggestXXXNames should call suggestVariableNames()
255345 Problems in new NamingConventions APIs
255452 [1.5][compiler] Eclipse allows forward reference in enum constructor

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M4 - November 18, 2008
Project org.eclipse.jdt.core v_925 (cvs).

## What's new in this drop

### Problem Reports Fixed

255501 EncodingTests failing when run by itself
255035 [compiler] Internal compile error gets reported (NPE)
250297 [compiler] NPE in org.eclipse.jdt.internal.compiler.problem.ProblemReporter.missingTypeInMethod(ProblemReporter.java:4925)
232558 [compiler] += is not allowed between Object and String

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M4 - November 10, 2008
Project org.eclipse.jdt.core v_924 (cvs).

## What's new in this drop

### Problem Reports Fixed

252868 [batch][compiler] ConcurrentModificationException in org.eclipse.jdt.internal.compiler.batch.ClasspathJar.fetchLinkedJars
236242 [compiler][1.7] compiler difference to javac 7 involving parameterized uses of raw methods
211256 [ast rewrite] whitespace missing between return and expression
253891 Incorrect tag closure in JavaModel javadoc
252120 [1.5][compiler] raw type diagnostic not coherent with javac one

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M4 - November 4, 2008
Project org.eclipse.jdt.core v_923 (cvs).

## What's new in this drop

### Problem Reports Fixed

250211 [search] Organize Imports Hangs
241821 [compiler] Multiple interfaces and incompatible return types
251279 [1.5][compiler] Covariant generics interfaces causes compile error

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - October 29, 2008 - 3.5 MILESTONE 3
Project org.eclipse.jdt.core v_922 (cvs).

## What's new in this drop

### Problem Reports Fixed

252481 [code assist] NPE in findAllTypes

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - October 28, 2008
Project org.eclipse.jdt.core v_921 (cvs).

## What's new in this drop

### Problem Reports Fixed

252264 Invalid classpath header messages should be logged in verbose mode only
252392 Missing jars referenced in the Class-Path: clause of a MANIFEST.MF file should not be reported as errors
247845 [misc] Errors in log from fetching Javadoc when working disconnected

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - October 25, 2008
Project org.eclipse.jdt.core v_920 (cvs).

## What's new in this drop

- NamingConventions has now a more flexible API to suggest variable name: `NamingConventions.suggestVariableNames()`.
  The same method can be used to suggest local, instance field, static field and constant field name. This method use a new specific heuristic to generate constant name with upper case and underscore (e.g. `CONSTANT_FIELD_NAME`).

      public static String[] suggestVariableNames(
      			int variableKind,
      			int baseNameKind,
      			String baseName,
      			IJavaProject javaProject,
      			int dim,
      			String[] excluded,
      			boolean evaluateDefault)

- NamingConventions has now an API to compute the name used to generate a variable name: `NamingConventions.getBaseName()`.

      public static String getBaseName(
      			int variableKind,
      			String variableName,
      			IJavaProject javaProject)

- New options are added to specify the prefixes and suffixes of a constant field: `JavaCore.CODEASSIST_STATIC_FIELD_PREFIXES` and `JavaCore.CODEASSIST_STATIC_FIELD_SUFFIXES`.

### Problem Reports Fixed

250975 [1.5][compiler] Stack overflow on static import.
249785 [javadoc][assist] Javadoc content assist after "@see #" does not work with deprecated member before
249692 The ImportRewriteAnalyzer does not honor a formatter setting
251814 [1.5][compiler] Dup Enum#valueOf(...) should keep the synthetic one
248309 [model] IAnnotatable#getAnnotations() does not work for standard annotations on binary members
251518 Tons of invalid API tooling errors when checking out jdt.core
251356 Fix for bug 146768 breaks JDT Refactoring and its test
249027 NPE in Engine if type collides with a package
85946 NamingConventions.suggestFieldNames(..) does not consider 'final' modifier for constants
38111 [DCR] Make NamingConventions more flexible

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - October 21, 2008
Project org.eclipse.jdt.core v_919 (cvs).

## What's new in this drop

- The compiler is now better resilient with duplicate field/method definitions and will avoid secondary errors detected when subsenquently using the offending field/method.

### Problem Reports Fixed

251523 [1.5][compiler] Should still flag Enum#valueOf override
246276 NPE during code completion
249844 IBinding#getJavaElement() always returns null for IAnnotationBindings declared in annotation or enum types
146768 [compiler] Should be more resilient with duplicate fields/methods
251091 Covariant return types not honored for combined extension and implementation
251079 Got error dialog after switching default JRE

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - October 16, 2008
Project org.eclipse.jdt.core v_918 (cvs).

## What's new in this drop

- New API for the ASTVisitor class: `org.eclipse.jdt.core.dom.ASTVisitor.preVisit2(ASTNode)`.
  New API type: `org.eclipse.jdt.core.dom.NodeFinder`.
  All details are available in bug 53024.
  These new APIs are still under discussion and are released for JDT/UI adoption.

### Problem Reports Fixed

250946 Bogus jar file is added to the project build path
250022 Java Model Exception: Java Model Status when getting code assist in debug detail formatter dialog
53024 [DOM] Move NodeFinder to a non-internal package
250753 [formatter] Insert space between empty braces in array initializers ignored without "Keep empty array initializer on one line"
248319 [compiler][1.5] Valid Java source produces class file that doesn't verify (VerifyError, javac compiles correctly)
249567 Incorrect behavior of Util.getUnresolvedJavaElement(...) method

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - October 14, 2008
Project org.eclipse.jdt.core v_917 (cvs).

## What's new in this drop

- Duplicate classpath entries are no longer reported if they are duplicate because of the classpath resolution (e.g. if two classpath containers add the same entry to the resolved classpath). Duplicate classpath entries at the raw classpath level are still reported. See bug 175226 for details.
- Added a new compiler warning to report a missing hashCode() method when overriding the equals() method from Object. This diagnosis is controlled by option: `JavaCore.COMPILER_PB_MISSING_HASHCODE_METHOD` and produces a problem marker which ID is `IProblem.MissingHashCodeMethod` problem ID.

        Compiler option ID: Reporting Missing HashCode Method.
        When enabled, the compiler will issue an error or a warning if a type
        overrides Object.equals(Object) but does not override hashCode().
        Option id: "org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod"
        Possible values: { "error", "warning", "ignore" }
        Default: "ignore"

- The "Class-Path:" clause of a jar manifest is now honored in the Java model. Jars referenced by "Class-Path:" are now automatically added to the build path. See bug 198572 for details.
- Code Select search types outside the current project scope if no types are found in this scope
- Code Assist operation can be called with a progress monitor:

      public interface ICodeAssist {
      	/**
      	 * Performs code completion at the given offset position in this compilation unit,
      	 * reporting results to the given completion requestor. The <code>offset</code>
      	 * is the 0-based index of the character, after which code assist is desired.
      	 * An <code>offset</code> of -1 indicates to code assist at the beginning of this
      	 * compilation unit.
      	 * It considers types in the working copies with the given owner first. In other words,
      	 * the owner's working copies will take precedence over their original compilation units
      	 * in the workspace.
      	 * <p>
      	 * Note that if a working copy is empty, it will be as if the original compilation
      	 * unit had been deleted.
      	 * </p>
      	 *
      	 * @param offset the given offset position
      	 * @param requestor the given completion requestor
      	 * @param owner the owner of working copies that take precedence over their original compilation units
      	 * @exception JavaModelException if code assist could not be performed. Reasons include:<ul>
      	 *  <li>This Java element does not exist (ELEMENT_DOES_NOT_EXIST)</li>
      	 *  <li> The position specified is < -1 or is greater than this compilation unit's
      	 *      source length (INDEX_OUT_OF_BOUNDS)
      	 * </ul>
      	 *
      	 * @exception IllegalArgumentException if <code>requestor</code> is <code>null</code>
      	 * @since 3.0
      	 * @deprecated Use {@link #codeComplete(int, CompletionRequestor, WorkingCopyOwner)} instead.
      	 */
      	void codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner owner)
      		throws JavaModelException;

      	/**
      	 * Performs code completion at the given offset position in this compilation unit,
      	 * reporting results to the given completion requestor. The <code>offset</code>
      	 * is the 0-based index of the character, after which code assist is desired.
      	 * An <code>offset</code> of -1 indicates to code assist at the beginning of this
      	 * compilation unit.
      	 * <p>
      	 *
      	 * @param offset the given offset position
      	 * @param requestor the given completion requestor
      	 * @exception JavaModelException if code assist could not be performed. Reasons include:<ul>
      	 *  <li>This Java element does not exist (ELEMENT_DOES_NOT_EXIST)</li>
      	 *  <li> The position specified is < -1 or is greater than this compilation unit's
      	 *      source length (INDEX_OUT_OF_BOUNDS)
      	 * </ul>
      	 *
      	 * @exception IllegalArgumentException if <code>requestor</code> is <code>null</code>
      	 * @since 3.0
       	 */
      	void codeComplete(int offset, CompletionRequestor requestor)
      		throws JavaModelException;
      }

      public interface IType {
      	/**
      	 * Do code completion inside a code snippet in the context of the current type.
      	 *
      	 * If the type can access to his source code and the insertion position is valid,
      	 * then completion is performed against source. Otherwise the completion is performed
      	 * against type structure and given locals variables.
      	 *
      	 * @param snippet the code snippet
      	 * @param insertion the position with in source where the snippet
      	 * is inserted. This position must not be in comments.
      	 * A possible value is -1, if the position is not known.
      	 * @param position the position within snippet where the user
      	 * is performing code assist.
      	 * @param localVariableTypeNames an array (possibly empty) of fully qualified
      	 * type names of local variables visible at the current scope
      	 * @param localVariableNames an array (possibly empty) of local variable names
      	 * that are visible at the current scope
      	 * @param localVariableModifiers an array (possible empty) of modifiers for
      	 * local variables
      	 * @param isStatic whether the current scope is in a static context
      	 * @param requestor the completion requestor
      	 * @param monitor the progress monitor used to report progress
      	 * @exception JavaModelException if this element does not exist or if an
      	 *		exception occurs while accessing its corresponding resource.
      	 * @since 3.5
      	 */
      	void codeComplete(
      		char[] snippet,
      		int insertion,
      		int position,
      		char[][] localVariableTypeNames,
      		char[][] localVariableNames,
      		int[] localVariableModifiers,
      		boolean isStatic,
      		CompletionRequestor requestor,
      		IProgressMonitor monitor)
      		throws JavaModelException;

      	/**
      	 * Do code completion inside a code snippet in the context of the current type.
      	 * It considers types in the working copies with the given owner first. In other words,
      	 * the owner's working copies will take precedence over their original compilation units
      	 * in the workspace.
      	 * <p>
      	 * Note that if a working copy is empty, it will be as if the original compilation
      	 * unit had been deleted.
      	 * </p><p>
      	 * If the type can access to his source code and the insertion position is valid,
      	 * then completion is performed against source. Otherwise the completion is performed
      	 * against type structure and given locals variables.
      	 * </p>
      	 *
      	 * @param snippet the code snippet
      	 * @param insertion the position with in source where the snippet
      	 * is inserted. This position must not be in comments.
      	 * A possible value is -1, if the position is not known.
      	 * @param position the position with in snippet where the user
      	 * is performing code assist.
      	 * @param localVariableTypeNames an array (possibly empty) of fully qualified
      	 * type names of local variables visible at the current scope
      	 * @param localVariableNames an array (possibly empty) of local variable names
      	 * that are visible at the current scope
      	 * @param localVariableModifiers an array (possible empty) of modifiers for
      	 * local variables
      	 * @param isStatic whether the current scope is in a static context
      	 * @param requestor the completion requestor
      	 * @param owner the owner of working copies that take precedence over their original compilation units
      	 * @param monitor the progress monitor used to report progress
      	 * @exception JavaModelException if this element does not exist or if an
      	 *		exception occurs while accessing its corresponding resource.
      	 * @since 3.5
      	 */
      	void codeComplete(
      		char[] snippet,
      		int insertion,
      		int position,
      		char[][] localVariableTypeNames,
      		char[][] localVariableNames,
      		int[] localVariableModifiers,
      		boolean isStatic,
      		CompletionRequestor requestor,
      		WorkingCopyOwner owner,
      		IProgressMonitor monitor)
      		throws JavaModelException;
      }

      public interface IEvaluationContext {
      	/**
      	 * Performs a code completion at the given position in the given code snippet,
      	 * reporting results to the given completion requestor.
      	 * <p>
      	 * Note that code completion does not involve evaluation.
      	 * <p>
      	 *
      	 * @param codeSnippet the code snippet to complete in
      	 * @param position the character position in the code snippet to complete at,
      	 *   or -1 indicating the beginning of the snippet
      	 * @param requestor the code completion requestor capable of accepting all
      	 *    possible types of completions
      	 * @param monitor the progress monitor used to report progress
      	 * @exception JavaModelException if code completion could not be performed. Reasons include:
      	 *  <ul>
      	 *	  <li>The position specified is less than -1 or is greater than the snippet's
      	 *	    length (INDEX_OUT_OF_BOUNDS)</li>
      	 *  </ul>
      	 * @since 3.5
      	 */
      	public void codeComplete(
      		String codeSnippet,
      		int position,
      		CompletionRequestor requestor,
      		IProgressMonitor monitor)
      		throws JavaModelException;

      	/**
      	 * Performs a code completion at the given position in the given code snippet,
      	 * reporting results to the given completion requestor.
      	 * It considers types in the working copies with the given owner first. In other words,
      	 * the owner's working copies will take precedence over their original compilation units
      	 * in the workspace.
      	 * <p>
      	 * Note that if a working copy is empty, it will be as if the original compilation
      	 * unit had been deleted.
      	 * </p>
      	 * <p>
      	 * Note that code completion does not involve evaluation.
      	 * <p>
      	 *
      	 * @param codeSnippet the code snippet to complete in
      	 * @param position the character position in the code snippet to complete at,
      	 *   or -1 indicating the beginning of the snippet
      	 * @param requestor the code completion requestor capable of accepting all
      	 *    possible types of completions
      	 * @param owner the owner of working copies that take precedence over their original compilation units
      	 * @param monitor the progress monitor used to report progress
      	 * @exception JavaModelException if code completion could not be performed. Reasons include:
      	 *  <ul>
      	 *	  <li>The position specified is less than -1 or is greater than the snippet's
      	 *	    length (INDEX_OUT_OF_BOUNDS)</li>
      	 *  </ul>
      	 * @since 3.5
      	 */
      	public void codeComplete(
      		String codeSnippet,
      		int position,
      		CompletionRequestor requestor,
      		WorkingCopyOwner owner,
      		IProgressMonitor monitor)
      		throws JavaModelException;
      }

### Problem Reports Fixed

250685 [assist] Code assist can bot be canceled when search indexes are not ready
250083 [model] Search indexes are not correctly updated
175226 [buildpath] Build path contains duplicate entry
38751 Optionally show compiler warning when equals() is overriden but hashCode() is not
249930 Deadlock with JavaModelManager$PerProjectInfo
250398 [assist] Faults in javadoc of IType#codeComplete
247941 [assist] Add progress monitor to code completion
243820 [1.5][compiler] Method has same erasure as an interface method but is not considered to implement it
232880 [select] Navigate to classes in workspace even if not on classpath
198572 eclipse does not respect class-path manifest of external jars

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - October 7, 2008
Project org.eclipse.jdt.core v_916 (cvs).

## What's new in this drop

- The new compiler warning (added during 3.5M1) to signal absence of `synchronized` modifier when overriding a synchronized method got disabled by default.

        Compiler option ID: Reporting Missing Synchronized Modifier On Inherited Method.
        When enabled, the compiler will issue an error or a warning if a method
        overrides a synchronized method without having a synchronized modifier.
        Option id: "org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod"
        Possible values: { "error", "warning", "ignore" }
        Default: "ignore"

### Problem Reports Fixed

249140 [1.5][compiler] asymmetric errors with covariant inherited methods
244762 [1.5][compiler] Internal compiler error java.lang.NullPointerException after importing file
227527 [1.5][compiler] Useless error message for local enum
227530 [1.5][compiler] Incomplete error message for annotation inside a member type
247981 save on a single file (any type - java source, text file
249584 CompilerParticipant constants should be marked as such
161977 [compiler] Identical branches in org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding#syntheticMethods
249535 [compiler] Consider disabling the syncOverride warning/error by default
247666 [1.5][compiler] AIOOBE inside missing type reporting
249321 IPackagerFragmentRoot#getRawClasspathEntry() returns resolved ".." path
249107 [compiler] IllegalAccessError in presence of synthetic field access
247953 [1.5][compiler] IllegalAccessError: tried to access class p.IA from class X

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - September 30, 2008
Project org.eclipse.jdt.core v_915 (cvs).

## What's new in this drop

- Added support for ".." in classpath for library, variable and container entries. See bug 57732 for details.

### Problem Reports Fixed

248680 Error when create a new element (class, interface,...)
57732 [buildpath] relative build classpath leading outside of eclipse workspace
247612 [compiler] Compiler could avoid allocating field bindings for receiver type change
247757 [model] Move a class to root package, lose block comment at the top
241400 [LinkedResources] Random errors when changing project settings
248313 [DOM] Javadoc bug in StringLiteral#setLiteralValue(String)
248308 Typo in Javadoc of IBinding#getAnnotations()
248243 Add apt.pluggable.core as x-friend for jdt.core

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M3 - September 23, 2008
Project org.eclipse.jdt.core v_914 (cvs).

## What's new in this drop

### Problem Reports Fixed

247835 SearchPattern extends non-API type InternalSearchPattern
245858 CompletionProposal extends non-API type InternalCompletionProposal
247688 SearchDocument extends non-API type InternalSearchDocument
245860 BuildContext extends non-API type CompilationParticipantResult
247292 [compiler] Compiler should avoid allocating method bindings for receiver type change
245835 CompletionContext extends non-API type InternalCompletionContext
247618 *ReferenceMatch extends non-API type InternalReferenceMatch
247307 [1.5][compiler] Array clone return type should be governed by source level instead of compliance
128563 [compiler] Inner class compiles but IllegalAccessError if splitted with two output folders

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M2 - September 13, 2008 - 3.5 MILESTONE 2
Project org.eclipse.jdt.core v_913 (cvs).

## What's new in this drop

### Problem Reports Fixed

246955 Add API compatibility filter for ITypeRoot
211054 [javadoc] @see package reference should raise a warning except for the package declaration
243692 [buildpath] Cannot set Attached Source from Class File Editor
207765 [javadoc] Javadoc warning on @see reference could be improved
247118 Endless loop in Signature.encodeQualifiedName
244164 [1.5][compiler] Missing implementation error when referencing a generic field with error
233187 [javadoc] partially qualified inner types should be warned
170637 [javadoc] incorrect warning about missing parameter javadoc when using many links
142990 [model] Rename operation should not use workspace root rule
246712 [javadoc] Unexpected warning about missing parameter doc in case of @inheritDoc
246682 Inconsistent parser/scanner encoding for commentStart position

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M2 - September 9, 2008
Project org.eclipse.jdt.core v_912 (cvs).

## What's new in this drop

- Introduced a marker comment (`$FALL-THROUGH$`) for silencing compiler diagnosis for switch case falling through next case. This allows to document intended fall through situations in the code. Note: The marker comment can also be a block comment, i.e. `/* $FALL-THROUGH$ */`.
  e.g.

          switch(val) {
              case 0 :
                  doit(0);
                  // $FALL-THROUGH$ - also fall into next case
             case 1:
                  doit(1);
                  break;
          }

### Problem Reports Fixed

245257 [compiler] Allow to suppress fall-through warning
240034 [buildpath] Eclipse ignores .classpath file if it is encoded in UTF8 with BOM
245963 deprecate unused JavaCore.COMPILER_PB_BOOLEAN_METHOD_THROWING_EXCEPTION
237772 [implementation] Deadlock in JDT causing UI freeze
114116 [assist] name suggestion for collections
246066 [batch] Redundant superinterface warning cannot be activated
245973 [compiler] Problem irritant cannot exceed 64bit limit
244849 [implementation] Memory leak in DeltaProcessingState#externalTimeStamps ?
207657 [search] Exception when refactoring member type to top-level.
243023 [content assist] RuntimeException thrown by JavaTypeCompletionProposalComputer

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M2 - September 2, 2008
Project org.eclipse.jdt.core v_911 (cvs).

## What's new in this drop

- Added a new compiler warning to signal absence of `synchronized` modifier when overriding a synchronized method. This diagnosis is controlled by option: `JavaCore.COMPILER_PB_MISSING_SYNCHRONIZED_ON_INHERITED_METHOD` and produces a problem marker which ID is `IProblem.MissingSynchronizedModifierInInheritedMethod` problem ID; it may be suppressed using `@SuppressWarnings("super")`.

        Compiler option ID: Reporting Missing Synchronized Modifier On Inherited Method.
        When enabled, the compiler will issue an error or a warning if a method
        overrides a synchronized method without having a synchronized modifier.
        Option id: "org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod"
        Possible values: { "error", "warning", "ignore" }
        Default: "warning"

### Problem Reports Fixed

222900 [Javadoc] Missing description is warned if valid description is on a new line
186858 Intermittent failure of org.eclipse.jdt.core.tests.model.ExclusionPatternsTests#testCreateExcludedPackage2
237453 [formatter] Save actions fails to remove excess new lines when set to "format edited lines"
245830 ClasspathEntry illegally instantiates AssertionFailedException
242029 Multiple source attachment paths don't work when source attachment path points to a folder
234583 [formatter] Code formatter should adapt edits instead of regions
245576 No error message for updating read-only .classpath file
245563 npe in reconciler
245518 ICompilationUnit.createType failing with unexpected exception
245435 [1.5][compiler] "Value for annotation attribute must be a constant expression" error on valid constant expression
245348 [DOM] Annotations are recognized by ASTParser even in COMPILER_SOURCE is set < 1.5
241751 Using a ClasspathContainerInitializer requires the use of workspace lock
242448 [1.5][compiler] Sun's javac compiles the following but jdt does not
239066 [compiler] Overriding a Synchronized Method with a Non-synchronized Method

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M2 - August 26, 2008
Project org.eclipse.jdt.core v_910 (cvs).

## What's new in this drop

### Problem Reports Fixed

239096 Implementation oddness in TypeHierarchy#getAllSuper*(IType)
244549 JavaCore.create(String handleIdentifier) fails for local variable with parameterized type
241687 [formatter] problem formatting block comments
240686 [formatter] Formatter do unexpected things
242933 [1.5] NullPointerException for @Range(min=1, max=9999999999999999)
241345 [formatter] Didn't Format HTML tags is unavailable
242646 deadlock on org.eclipse.jdt.internal.core.ExternalFoldersManager

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M2 - August 19, 2008
Project org.eclipse.jdt.core v_909 (cvs).

## What's new in this drop

### Problem Reports Fixed

244477 [formatter] Formatter fails on special Java array construct

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M2 - August 11, 2008
Project org.eclipse.jdt.core v_908 (cvs).

## What's new in this drop

### Problem Reports Fixed

239833 [compiler] Odd compiler error message "Illegal modifier for the method ..."
243715 [DOM] Parser.createASTs() throws exception on 'illogical' JavaDoc
243653 ASTRewrite is incorrectly documented

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M1 - August 6, 2008 - 3.5 MILESTONE 1
Project org.eclipse.jdt.core v_907 (cvs).

## What's new in this drop

### Problem Reports Fixed

242961 [DOM] ITypeBinding.getDeclaredFields returns empty results if any field has undefined type

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M1 - July 31, 2008
Project org.eclipse.jdt.core v_906 (cvs).

## What's new in this drop

### Problem Reports Fixed

242292 call to createAST(..) throws IllegalStateException when parser source is not char[]
218500 [dom] bug in ITypeBinding.getQualifiedName for member of local type

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M1 - July 28, 2008
Project org.eclipse.jdt.core v_905 (cvs).

## What's new in this drop

### Problem Reports Fixed

236096 Incorrectly allow raw return type in overridden method
238014 [1.5][compiler] Missing "name clash" error?
238817 [1.5][compiler] Unexpected nameclash reported
237418 deadlock between auto-build/refresh right after startup
241841 [compiler] Compilation error 'incompatible types' should use full qualified class names
239439 [1.5][compiler] Behavior change for binding for parameterized type
106821 [assist] Code assist: Deprecated elements not marked
209639 codeSelect does not resolve correct key for implicit method type arguments
239117 AST overlapping source ranges in recovered AST
230830 [select] Search doesn't find annotated local variable declaration with error
229092 [batch compiler] error reporting is non-deterministic

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M1 - July 21, 2008
Project org.eclipse.jdt.core v_904 (cvs).

## What's new in this drop

### Problem Reports Fixed

169682 In class that compiles and runs when ctrl+space is pressed I get "No completions available"
240815 [DOM] CCE in AST#resolveWellKnownType(..) for java.lang.Boolean without rt.jar
235727 misspelling in syntax error message
236193 DiagnoseParser has unreachable code

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M1 - July 15, 2008
Project org.eclipse.jdt.core v_903 (cvs).

## What's new in this drop

### Problem Reports Fixed

237469 [assist] AbortCompilation in log during normal editing
240214 [compiler] final bit should be cleared from class file access flag for anonymous class
240349 Improve disassembler output
240206 ITypeRoot should have @noimplement tag
237937 [javadoc] Wrong "Javadoc: Malformed link reference" if href label contains //
237931 [1.6][compiler] wrong signature of String[][] in class file
101610 Code assist not offered without transitive dependency
239229 [compiler] Regression bug against Eclipse 3.3: cannot resolve correct import

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M1 - July 8, 2008
Project org.eclipse.jdt.core v_902 (cvs).

## What's new in this drop

### Problem Reports Fixed

236336 [1.6][compiler] Stack map generation error with 10,000-line method in Java
239941 [formatter] Unclosed html tags make the formatter to produce incorrect outputs
239719 [formatter] Code formatter destroys pre formatted javadoc comments
238923 [1.6][compiler] Internal compiler error caused by a for loop in an initializer block
239758 [1.5][compiler] Generic interface inheritance and overriding error
239305 [compiler] VerifyError caused by casting long to long to int
239198 [compiler] NegativeArraySizeException thrown for triple quotes
238920 [formatter] Code Formatter removes javadoc status if @category present
238853 [formatter] Code Formatter does not properly format valid xhtml (<br /> & <p />) in javadoc.
160217 [ast rewrite] ASTRewrite#getListRewrite does not fullfill spec
232565 [1.5][compiler] wrong autoboxing code generation leads to VerifyError at runtime

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M1 - July 1, 2008
Project org.eclipse.jdt.core v_901 (cvs).

## What's new in this drop

### Problem Reports Fixed

232478 [buildpath] Classpath failed to bind to installed JRE
238210 [formatter] CodeFormatter wraps line comments without whitespaces
238484 [1.5][compiler] Eclipse generates bad code (major regression)
235370 Add performance test for bug 234718
135906 CompilationUnitStructureRequestor.resolveDuplicates has bad performance
169678 [hierarchy] Type Hierarchy on static nested class includes unrelated types
95480 [model] Missing INVALID_SIBLING exception when creating a type in an enum type that contains constants
235369 DeltaProcessor.resetProjectCaches() should clear the list of projects to reset
190840 SourceMapper#computeAllRootPaths(IType) factorisation suggestion
148664 [spec] IJavaModel#getJavaProject(String) throws IAE for invalid name
231130 [spec] IClassFile.getPath() not specified for external class folders
209425 [spec] Ambiguous JavaDoc in ASTParser#setUnitName regarding source folders
235272 javadoc of JavaCore#COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION needs improvement
235778 Potential race condition computing resolved classpath
154865 [hierarchy] Focus on Package only shows classes with missing superclasses
236445 NPE in content assist
237123 [search] And/OrPatterns miss to override one overload
226357 [dom] NPE in MethodBinding.getParameterAnnotations() if some, but not all parameters are annotated
120082 Signature is missing capture
235882 [compiler] constructor-scoped inner classes unable to recognize final member variable initialization
238090 [formatter] New lines wrongly added while formatting too long @see references
237942 [formatter] String references are put on next line when over the max line length
233259 [formatter] html tag should not be split by formatter

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.5M1 - June 24, 2008
Project org.eclipse.jdt.core v_900 (cvs).

## What's new in this drop

- Incremented JDT/Core plug-in id to "3.5.0", since added new API/feature.
- Added a new compiler warning to detect comparisons between identical expressions. This diagnosis is controlled by option: `JavaCore.COMPILER_PB_COMPARING_IDENTICAL` and produces a problem marker which ID is `IProblem.ComparingIdentical` problem ID.

      Compiler option ID: Reporting Comparison of Identical Expressions.
      When enabled, the compiler will issue an error or a warning if a comparison
      is involving identical operands (e.g 'x == x').
        - Option id:"org.eclipse.jdt.core.compiler.problem.comparingIdentical"
        - Possible values: { "error", "warning", "ignore" }
        - Default: "warning"

### Problem Reports Fixed

234172 [1.5][select] no hover in qualified name with generics
233568 Type in Server Runtime is not resolved in editor
217287 [dom]IVariableBinding#getJavaElement() return null for variable inside an initializer
235921 [1.5][compiler] Incorrect generic signature attribute created for inner anonymous type
234619 [1.5][compiler] Object#getClass() has wrong expression type binding with JRE from 1.6
115814 [compiler] warning on comparing same to same
235004 [compiler] Misleading compiler warning
232944 IMember#getJavadocRange() should end with "*/"
222665 Error opening workbench
216772 IJavaModel#refreshExternalArchives fails to refresh ExternalJavaProject jar cache
205917 JavaCore#create(String, WorkingCopyOwner) should deal with null owner
237051 [formatter] Formatter insert blank lines after javadoc if javadoc contains Commons Attributes @@ annotations
236230 [formatter] SIOOBE while formatting a compilation unit.

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