update jdt.core to S4_16_0_M1

+ try to integrate our changes in CodeStream with the big refactoring
  - instead of adding "recordTypeBinding()" we now integrate with
    pushTypeBinding()
diff --git a/org.eclipse.jdt.core.tests.compiler/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.jdt.core.tests.compiler/.settings/org.eclipse.jdt.ui.prefs
index ffa0104..cc05ab3 100644
--- a/org.eclipse.jdt.core.tests.compiler/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.jdt.core.tests.compiler/.settings/org.eclipse.jdt.ui.prefs
@@ -33,7 +33,7 @@
 sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
 sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
 sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces=true
 sp_cleanup.remove_trailing_whitespaces_all=true
 sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
 sp_cleanup.remove_unnecessary_casts=false
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationCompletionParserTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationCompletionParserTest.java
index 2c6421b..4e03124 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationCompletionParserTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationCompletionParserTest.java
@@ -35,6 +35,7 @@
 	return buildAllCompliancesTestSuite(AnnotationCompletionParserTest.class);
 }
 
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationDietRecoveryTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationDietRecoveryTest.java
index d00432e..40589f6 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationDietRecoveryTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationDietRecoveryTest.java
@@ -54,6 +54,7 @@
 /*
  * Toggle compiler in mode -1.5
  */
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumCompletionParserTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumCompletionParserTest.java
index d4d5ca2..7eb6be2 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumCompletionParserTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumCompletionParserTest.java
@@ -31,6 +31,7 @@
 	return buildAllCompliancesTestSuite(EnumCompletionParserTest.class);
 }
 
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumDietRecoveryTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumDietRecoveryTest.java
index 1b0f773..827e172 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumDietRecoveryTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumDietRecoveryTest.java
@@ -43,6 +43,7 @@
 /*
  * Toggle compiler in mode -1.5
  */
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericDietRecoveryTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericDietRecoveryTest.java
index 5563e72..8db3031 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericDietRecoveryTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericDietRecoveryTest.java
@@ -48,6 +48,7 @@
 /*
  * Toggle compiler in mode -1.5
  */
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java
index fee3bda..107f6bc 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java
@@ -27,6 +27,7 @@
 public static Test suite() {
 	return buildAllCompliancesTestSuite(GenericsCompletionParserTest.class);
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/JavadocCompletionParserTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/JavadocCompletionParserTest.java
index f28fb42..4e65e7f 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/JavadocCompletionParserTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/JavadocCompletionParserTest.java
@@ -68,6 +68,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.test.performance.PerformanceTestCase#setUp()
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	this.sourceLevel = null;
@@ -92,6 +93,7 @@
 		actual
 	);
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	if (this.sourceLevel == null) {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/LambdaExpressionSyntaxTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/LambdaExpressionSyntaxTest.java
index 38dabe7..1b4e8d3 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/LambdaExpressionSyntaxTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/LambdaExpressionSyntaxTest.java
@@ -28,6 +28,7 @@
 	public static Class testClass() {
 		return LambdaExpressionSyntaxTest.class;
 	}
+	@Override
 	public void initialize(CompilerTestSetup setUp) {
 		super.initialize(setUp);
 	}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ModuleDeclarationSyntaxTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ModuleDeclarationSyntaxTest.java
index 791cca4..6ddb6bd 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ModuleDeclarationSyntaxTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ModuleDeclarationSyntaxTest.java
@@ -30,6 +30,7 @@
 	public static Class<?> testClass() {
 		return ModuleDeclarationSyntaxTest.class;
 	}
+	@Override
 	public void initialize(CompilerTestSetup setUp) {
 		super.initialize(setUp);
 	}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ParserTest1_7.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ParserTest1_7.java
index 9efe7e1..2afedae 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ParserTest1_7.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ParserTest1_7.java
@@ -233,6 +233,7 @@
 	}
 }
 
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_7);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ReferenceExpressionSyntaxTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ReferenceExpressionSyntaxTest.java
index 36e736c..dc50fe3 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ReferenceExpressionSyntaxTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ReferenceExpressionSyntaxTest.java
@@ -28,6 +28,7 @@
 	public static Class testClass() {
 		return ReferenceExpressionSyntaxTest.class;
 	}
+	@Override
 	public void initialize(CompilerTestSetup setUp) {
 		super.initialize(setUp);
 	}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SelectionJavadocTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SelectionJavadocTest.java
index 5e5cea9..2ba06df 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SelectionJavadocTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SelectionJavadocTest.java
@@ -126,6 +126,7 @@
 			assertEquals("Invalid selection node", expected, actual);
 		}
 	}
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.unit = null;
@@ -176,6 +177,7 @@
 		return unitDecl.compilationResult();
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 	    Map optionsMap = super.getCompilerOptions();
 		optionsMap.put(CompilerOptions.OPTION_DocCommentSupport, CompilerOptions.ENABLED);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SelectionTest2.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SelectionTest2.java
index e34e1f5..9fc0192 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SelectionTest2.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SelectionTest2.java
@@ -159,6 +159,7 @@
 	final SpecialSelectionParser parser = createParser();
 	Thread query = new Thread(
 		new Runnable(){
+			@Override
 			public void run(){
 				String str =
 					"public class A {\n" +
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceField.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceField.java
index c424c91..53e4988 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceField.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceField.java
@@ -105,6 +105,7 @@
 		s = s + "\t";
 	return s;
 }
+@Override
 public String toString() {
 	return toString(0);
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceImport.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceImport.java
index 8f0ec9e..7d7710d 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceImport.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceImport.java
@@ -45,6 +45,7 @@
  *
  * @return java.lang.String
  */
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceInitializer.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceInitializer.java
index 7afd022..df4cc46 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceInitializer.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceInitializer.java
@@ -22,10 +22,12 @@
 	super(declarationStart, modifiers, null, null, -1, -1, null);
 }
 
+@Override
 public void setDeclarationSourceEnd(int declarationSourceEnd) {
 	this.declarationEnd = declarationSourceEnd;
 }
 
+@Override
 public String toString(int tab) {
 	if (this.modifiers == ClassFileConstants.AccStatic) {
 		return tabString(tab) + "static {}";
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceMethod.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceMethod.java
index 35dfe32..fff00be 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceMethod.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceMethod.java
@@ -138,6 +138,7 @@
 		s = s + "\t";
 	return s;
 }
+@Override
 public String toString() {
 	return toString(0);
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourcePackage.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourcePackage.java
index 2027dbc..c685747 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourcePackage.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourcePackage.java
@@ -39,6 +39,7 @@
  *
  * @return java.lang.String
  */
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceType.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceType.java
index 0880c8b..0979287 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceType.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceType.java
@@ -242,6 +242,7 @@
 		s = s + "\t";
 	return s;
 }
+@Override
 public String toString() {
 	return toString(0);
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/StatementRecoveryTest_1_5.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/StatementRecoveryTest_1_5.java
index 729c826..333be59 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/StatementRecoveryTest_1_5.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/StatementRecoveryTest_1_5.java
@@ -231,6 +231,7 @@
 	}
 }
 
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TypeAnnotationSyntaxTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TypeAnnotationSyntaxTest.java
index fb7494d..c90d246 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TypeAnnotationSyntaxTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TypeAnnotationSyntaxTest.java
@@ -53,6 +53,7 @@
 	public static Class testClass() {
 		return TypeAnnotationSyntaxTest.class;
 	}
+	@Override
 	public void initialize(CompilerTestSetup setUp) {
 		super.initialize(setUp);
 	}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ASTImplTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ASTImplTests.java
index 827e552..9f2119e 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ASTImplTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ASTImplTests.java
@@ -171,6 +171,7 @@
 		"}\n",
 		defaultParser,
 		new ASTBinaryExpressionCollector() {
+			@Override
 			public void endVisit(BinaryExpression binaryExpression, BlockScope scope) {
 				if (binaryExpression instanceof CombinedBinaryExpression &&
 						((CombinedBinaryExpression) binaryExpression).
@@ -245,6 +246,7 @@
 		"}\n",
 		parser,
 		new ASTBinaryExpressionCollector() {
+			@Override
 			public void endVisit(BinaryExpression binaryExpression, BlockScope scope) {
 				if (binaryExpression instanceof CombinedBinaryExpression &&
 						((CombinedBinaryExpression) binaryExpression).
@@ -379,6 +381,7 @@
 		"}\n",
 		defaultParser,
 		new ASTBinaryExpressionCollector() {
+			@Override
 			public boolean visit(BinaryExpression binaryExpression, BlockScope scope) {
 				super.visit(binaryExpression, scope);
 				if (binaryExpression.right instanceof StringLiteral) {
@@ -432,6 +435,7 @@
 		"}\n",
 		defaultParser,
 		new ASTBinaryExpressionCollector() {
+			@Override
 			public boolean visit(BinaryExpression binaryExpression, BlockScope scope) {
 				super.visit(binaryExpression, scope);
 				return false;
@@ -467,6 +471,7 @@
 		"}\n",
 		defaultParser,
 		new ASTBinaryExpressionCollector() {
+			@Override
 			public void endVisit(BinaryExpression binaryExpression, BlockScope scope) {
 				if (binaryExpression instanceof CombinedBinaryExpression) {
 					this.collector.append("[ev CBE " +
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractBatchCompilerTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractBatchCompilerTest.java
index d69c859..98b1813 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractBatchCompilerTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractBatchCompilerTest.java
@@ -71,6 +71,7 @@
 			this.matchLength = match.length();
 			this.placeholder = placeholder;
 		}
+		@Override
 		String normalized(String originalValue) {
 			String result;
 			StringBuffer normalizedValueBuffer = new StringBuffer(originalValue);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractComparableTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractComparableTest.java
index 6d7ad92..4cc0ae2 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractComparableTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractComparableTest.java
@@ -98,6 +98,7 @@
 	/*
 	 * Toggle compiler in mode -1.5
 	 */
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_ReportFinalParameterBound, CompilerOptions.WARNING);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractNullAnnotationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractNullAnnotationTest.java
index 180186d..b4cb3e7 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractNullAnnotationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractNullAnnotationTest.java
@@ -75,6 +75,7 @@
 		super(name);
 	}
 
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		setUpAnnotationLib();
@@ -102,6 +103,7 @@
 	// Conditionally augment problem detection settings
 	static boolean setNullRelatedOptions = true;
 
+	@Override
 	protected Map getCompilerOptions() {
 	    Map defaultOptions = super.getCompilerOptions();
 	    if (setNullRelatedOptions) {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java
index fbc4931..a76df3a 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java
@@ -111,10 +111,10 @@
 		.map(e -> e.getKey() + "=" + e.getValue())
 		.toArray(String[]::new);
 
-	public class Runner {
+	protected class Runner {
 		boolean shouldFlushOutputDirectory = true;
 		// input:
-		public String[] testFiles;
+		String[] testFiles;
 		String[] dependantFiles;
 		String[] classLibraries;
 		boolean  libsOnModulePath;
@@ -134,14 +134,14 @@
 		JavacTestOptions javacTestOptions;
 		// execution:
 		boolean forceExecution;
-		public String[] vmArguments;
-		public String expectedOutputString;
+		String[] vmArguments;
+		String expectedOutputString;
 		String expectedErrorString;
 
 		ASTVisitor visitor;
-		public Runner() {}
+
 		@SuppressWarnings("synthetic-access")
-		public void runConformTest() {
+		protected void runConformTest() {
 			runTest(this.shouldFlushOutputDirectory,
 					this.testFiles,
 					this.dependantFiles != null ? this.dependantFiles : new String[] {},
@@ -587,6 +587,7 @@
 	public
 // SH}
 	static final JavacTestOptions SKIP = new JavacTestOptions() {
+		@Override
 		boolean skip(JavacCompiler compiler) {
 			return true;
 		}
@@ -601,6 +602,15 @@
 		return options;
 	}
 	@java.lang.SuppressWarnings("synthetic-access")
+	static JavacTestOptions forRelease(String release, String additionalOptions) {
+		JavacTestOptions options = new JavacTestOptions(Long.parseLong(release));
+		String result = isJRE9Plus ? "-release "+release : "-source 1."+release+" -target 1."+release;
+		if (additionalOptions != null)
+			result = result + " " + additionalOptions;
+		options.setCompilerOptions(result);
+		return options;
+	}
+	@java.lang.SuppressWarnings("synthetic-access")
 	static JavacTestOptions forReleaseWithPreview(String release) {
 		JavacTestOptions options = new JavacTestOptions(Long.parseLong(release));
 		if (isJRE9Plus)
@@ -634,6 +644,7 @@
 	// however, these manipulations are not reflected in the javac output
 	// directory (yet); skipping until we fix this
 	static final JavacTestOptions SKIP_UNTIL_FRAMEWORK_FIX = new JavacTestOptions() {
+		@Override
 		boolean skip(JavacCompiler compiler) {
 			return true;
 		}
@@ -680,6 +691,7 @@
 		Excuse(int mismatchType) {
 			this.mismatchType = mismatchType;
 		}
+		@Override
 		Excuse excuseFor(JavacCompiler compiler) {
 			return this;
 		}
@@ -720,12 +732,14 @@
 		public static EclipseHasABug
 			EclipseBug159851 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=159851
 				new EclipseHasABug(MismatchType.JavacErrorsEclipseNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance < ClassFileConstants.JDK1_7 ? this : null;
 					}
 				} : null,
 			EclipseBug177715 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=177715
 				new EclipseHasABug(MismatchType.JavacErrorsEclipseNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance < ClassFileConstants.JDK1_8 ? this : null; // in 1.8 rejected by both compilers
 					}
@@ -740,30 +754,35 @@
 				new EclipseHasABug(MismatchType.StandardOutputMismatch) : null,
 			EclipseBug236217 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=236217
 				new EclipseHasABug(MismatchType.JavacErrorsEclipseNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance < ClassFileConstants.JDK1_8 ? this : null; // in 1.8 accepted by both compilers
 					}
 				} : null,
 			EclipseBug236236 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=236236
 				new EclipseHasABug(MismatchType.EclipseErrorsJavacNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance > ClassFileConstants.JDK1_5 ? this : null;
 					}
 				}: null,
 			EclipseBug236242 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=236242
 				new EclipseHasABug(MismatchType.EclipseErrorsJavacWarnings) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance == ClassFileConstants.JDK1_7 ? this : null;
 					}
 				}: null,
 			EclipseBug236243 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=236243
 				new EclipseHasABug(MismatchType.EclipseErrorsJavacNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance > ClassFileConstants.JDK1_6 ? this : null;
 					}
 				}: null,
 			EclipseBug236379 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=236379
 				new EclipseHasABug(MismatchType.EclipseWarningsJavacNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance > ClassFileConstants.JDK1_5 ? null : this;
 					}
@@ -800,6 +819,7 @@
 				new EclipseJustification(MismatchType.EclipseErrorsJavacNone) : null,
 			EclipseBug83902 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=83902
 				new EclipseJustification(MismatchType.EclipseWarningsJavacNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance > ClassFileConstants.JDK1_5 ? this : null;
 					}
@@ -808,6 +828,7 @@
 				new EclipseJustification(MismatchType.JavacErrorsEclipseWarnings) : null,
 			EclipseBug95021 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=95021
 				new EclipseJustification(MismatchType.JavacErrorsEclipseNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance == ClassFileConstants.JDK1_7 ? this : null;
 					}
@@ -815,6 +836,7 @@
 				} : null,
 			EclipseBug126712 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=126712 & http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342411
 				new EclipseJustification(MismatchType.StandardOutputMismatch) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance > ClassFileConstants.JDK1_5 ? this : null;
 					}
@@ -824,12 +846,14 @@
 				new EclipseJustification(MismatchType.JavacErrorsEclipseNone) : null,
 			EclipseBug151275 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=151275
 				new EclipseJustification(MismatchType.JavacErrorsEclipseNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance < ClassFileConstants.JDK1_7 ? this : null;
 					}
 				} : null,
 			EclipseBug159214 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=159214
 				new EclipseJustification(MismatchType.EclipseErrorsJavacNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance == ClassFileConstants.JDK1_6 ? this : null;
 					}
@@ -837,6 +861,7 @@
 				} : null,
 			EclipseBug169017 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017
 				new EclipseJustification(MismatchType.JavacErrorsEclipseNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance > ClassFileConstants.JDK1_5 ? this : null;
 					}
@@ -846,6 +871,7 @@
 				new EclipseJustification(MismatchType.EclipseErrorsJavacWarnings) : null,
 			EclipseBug218677 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=218677
 				new EclipseJustification(MismatchType.EclipseErrorsJavacNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance > ClassFileConstants.JDK1_6 ? this : null;
 					}
@@ -853,6 +879,7 @@
 				} : null,
 			EclipseBug234815 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=234815
 				new EclipseJustification(MismatchType.JavacErrorsEclipseNone) {
+					@Override
 					Excuse excuseFor(JavacCompiler compiler) {
 						return compiler.compliance < ClassFileConstants.JDK1_7 ? this : null;
 					}
@@ -862,10 +889,18 @@
 			EclipseBug235546 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=235546
 				new EclipseJustification(MismatchType.JavacErrorsEclipseNone) : null,
 			EclipseBug449063 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=449063
-					 new EclipseJustification(MismatchType.StandardOutputMismatch) : null;
+					 new EclipseJustification(MismatchType.StandardOutputMismatch) : null,
+			EclipseBug561549 = RUN_JAVAC ? // https://bugs.eclipse.org/bugs/show_bug.cgi?id=561549
+					 new EclipseJustification(MismatchType.EclipseErrorsJavacNone) {
+						@Override
+						Excuse excuseFor(JavacCompiler compiler) {
+							return compiler.compliance > ClassFileConstants.JDK9 ? this : null;
+						}
+					 } : null;
 		public static final EclipseJustification
 			EclipseJustification0001 = RUN_JAVAC ?
 					new EclipseJustification(MismatchType.EclipseErrorsJavacNone) {
+						@Override
 						Excuse excuseFor(JavacCompiler compiler) {
 							return compiler.compliance < ClassFileConstants.JDK1_7 ? this : null;
 						}
@@ -898,6 +933,7 @@
 			this(mismatchType, pivotCompliance, pivotMinor);
 			this.isIntermittent = intermittent;
 		}
+		@Override
 		Excuse excuseFor(JavacCompiler compiler) {
 			if (this.minorsFixed != null) {
 				if (compiler.compliance == ClassFileConstants.JDK1_8) {
@@ -960,6 +996,7 @@
 			JavacBug6400189 = RUN_JAVAC ? // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6400189 & https://bugs.eclipse.org/bugs/show_bug.cgi?id=106744 & https://bugs.eclipse.org/bugs/show_bug.cgi?id=167952
 				new JavacHasABug(
 					MismatchType.EclipseErrorsJavacNone) {
+						@Override
 						Excuse excuseFor(JavacCompiler compiler) {
 							return compiler.compliance == ClassFileConstants.JDK1_6 ? this : null;
 						}
@@ -975,6 +1012,7 @@
 			JavacBug6569404 = RUN_JAVAC ? // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6569404
 				new JavacHasABug(
 					MismatchType.JavacErrorsEclipseNone) {
+						@Override
 						Excuse excuseFor(JavacCompiler compiler) {
 							// present only in javac6 between 1.6.0_10_b08 and EOL
 							return (compiler.compliance == ClassFileConstants.JDK1_6 && compiler.minor >= 10) ? this : null;
@@ -1009,7 +1047,11 @@
 			JavacBug8221413_switchExpression = RUN_JAVAC ? // https://bugs.openjdk.java.net/browse/JDK-8221413
 					new JavacBug8221413(" --release 12 --enable-preview -Xlint:-preview") : null,
 			JavacBug8226510_switchExpression = RUN_JAVAC ? // https://bugs.openjdk.java.net/browse/JDK-8226510
-					new JavacBug8226510(" --release 12 --enable-preview -Xlint:-preview") : null;
+					new JavacBug8226510(" --release 12 --enable-preview -Xlint:-preview") : null,
+			JavacBug8231436 = RUN_JAVAC ? // https://bugs.openjdk.java.net/browse/JDK-8231436 to implement https://bugs.openjdk.java.net/browse/JDK-8231435
+				    new JavacHasABug(MismatchType.JavacErrorsEclipseNone) : null,
+			JavacBug8231436_EclipseWarns = RUN_JAVAC ? // https://bugs.openjdk.java.net/browse/JDK-8231436 to implement https://bugs.openjdk.java.net/browse/JDK-8231435
+				    new JavacHasABug(MismatchType.JavacErrorsEclipseWarnings) : null;
 
 		// bugs that have been fixed but that we've not identified
 		public static JavacHasABug
@@ -1037,10 +1079,19 @@
 			JavacThrowsAnExceptionForJava_1_5_0_16 = RUN_JAVAC ?
 					new JavacHasABug(
 						MismatchType.JavacErrorsEclipseNone) {
+							@Override
 							Excuse excuseFor(JavacCompiler compiler) {
 								return compiler.compliance != ClassFileConstants.JDK1_5 ||
 										compiler.minor != 1600 ? null : this;
 							}
+					}: null,
+			JavacThrowsAnExceptionForJava_since9_EclipseWarns = RUN_JAVAC ?
+					new JavacHasABug(
+						MismatchType.JavacErrorsEclipseWarnings) {
+							@Override
+							Excuse excuseFor(JavacCompiler compiler) {
+								return compiler.compliance < ClassFileConstants.JDK9 ? null : this;
+							}
 					}: null;
 	}
 	public static class JavacBug8179483 extends JavacHasABug {
@@ -1098,6 +1149,7 @@
 			this.buffer = buffer;
 		}
 
+		@Override
 		public void run() {
 			try {
 				BufferedReader reader = new BufferedReader(new InputStreamReader(this.inputStream));
@@ -1557,6 +1609,7 @@
 		);
 		return classLibs;
 	}
+	@Override
 	protected Map<String, String> getCompilerOptions() {
 		Map<String, String> defaultOptions = super.getCompilerOptions();
 		defaultOptions.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.GENERATE);
@@ -1649,6 +1702,7 @@
 		return Util.compilationUnits(testFiles);
 	}
 
+	@Override
 	public void initialize(CompilerTestSetup setUp) {
 		super.initialize(setUp);
 		if (setUp instanceof RegressionTestSetup) {
@@ -1872,11 +1926,6 @@
 				JavacTestOptions.DEFAULT /* default javac test options */,
 				charset);
 	}
-	protected void runConformTest(String[] testFiles, String expectedOutput, Map<String, String> customOptions, String[] vmArguments) {
-		runConformTest(testFiles, expectedOutput, customOptions, vmArguments, RUN_JAVAC ? /* javac test options */
-				new JavacTestOptions("-source 1.4") :
-					JavacTestOptions.DEFAULT);
-	}
 	protected void runConformTest(String[] testFiles, String expectedOutput, Map<String, String> customOptions, String[] vmArguments, JavacTestOptions javacOptions) {
 		runTest(
 			// test directory preparation
@@ -1899,6 +1948,28 @@
 			// javac options
 			javacOptions);
 	}
+	protected void runConformTest(String[] testFiles, String expectedOutput, Map<String, String> customOptions, String[] vmArguments) {
+		runTest(
+			// test directory preparation
+			true /* flush output directory */,
+			testFiles /* test files */,
+			// compiler options
+			null /* no class libraries */,
+			customOptions /* no custom options */,
+			false /* do not perform statements recovery */,
+			null /* no custom requestor */,
+			// compiler results
+			false /* expecting no compiler errors */,
+			null /* do not check compiler log */,
+			// runtime options
+			false /* do not force execution */,
+			vmArguments /* no vm arguments */,
+			// runtime results
+			expectedOutput /* expected output string */,
+			null /* do not check error string */,
+			// javac options
+			JavacTestOptions.DEFAULT /* default javac test options */);
+	}
 	protected void runConformTest(
 			String[] testFiles,
 			String[] dependantFiles,
@@ -2733,16 +2804,7 @@
 			String[] classLibraries,
 			boolean shouldFlushOutputDirectory,
 			Map customOptions) {
-		runNegativeTest(testFiles, expectedCompilerLog, classLibraries, shouldFlushOutputDirectory, null, customOptions, JavacTestOptions.DEFAULT);
-	}
-	protected void runNegativeTest(
-			String[] testFiles,
-			String expectedCompilerLog,
-			String[] classLibraries,
-			boolean shouldFlushOutputDirectory,
-			String[] vmArguments,
-			Map customOptions) {
-		runNegativeTest(testFiles, expectedCompilerLog, classLibraries, shouldFlushOutputDirectory, vmArguments, customOptions, JavacTestOptions.DEFAULT);
+		runNegativeTest(testFiles, expectedCompilerLog, classLibraries, shouldFlushOutputDirectory, null, customOptions);
 	}
 	protected void runNegativeTest(
 		String[] testFiles,
@@ -2750,8 +2812,7 @@
 		String[] classLibraries,
 		boolean shouldFlushOutputDirectory,
 		String[] vmArguments,
-		Map customOptions,
-		JavacTestOptions javacOptions) {
+		Map customOptions) {
 		runTest(
 	 		// test directory preparation
 			shouldFlushOutputDirectory /* should flush output directory */,
@@ -2776,7 +2837,7 @@
 			null /* do not check output string */,
 			null /* do not check error string */,
 			// javac options
-			javacOptions);
+			JavacTestOptions.DEFAULT /* default javac test options */);
 	}
 	protected void runNegativeTest(
 			boolean skipJavac,
@@ -3468,7 +3529,7 @@
 			}
 		}
 		// javac part
-		if (RUN_JAVAC) {
+		if (RUN_JAVAC && javacTestOptions != JavacTestOptions.SKIP) {
 			runJavac(testFiles, expectingCompilerErrors, expectedCompilerLog,
 					expectedJavacOutputString, expectedErrorString, shouldFlushOutputDirectory,
 					javacTestOptions, vmArguments, classLibraries, libsOnModulePath);
@@ -3884,6 +3945,7 @@
 		// javac options
 		javacTestOptions /* javac test options */);
 }
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		if (this.verifier == null) {
@@ -3958,10 +4020,12 @@
 		}
 	}
 
+	@Override
 	public void stop() {
 		this.verifier.shutDown();
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		if (this.createdVerifier) {
 			stop();
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest9.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest9.java
index 2e5b327..c2761d8 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest9.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest9.java
@@ -93,6 +93,7 @@
 	 * javac cannot leverage our internal map  {@code file2module}, so we better
 	 * neatly place each file into a sub directory matching the module name.
 	 */
+	@Override
 	protected String expandFileNameForJavac(String fileName) {
 		String fileNameAsKey = fileName.replace(File.separator, "/");
 		if (this.file2module != null && this.file2module.containsKey(fileNameAsKey)) {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java
index aee35e0..de53111 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java
@@ -45,6 +45,7 @@
 		return AmbiguousMethodTest.class;
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map compilerOptions = super.getCompilerOptions();
 		compilerOptions.put(CompilerOptions.OPTION_ReportMissingOverrideAnnotationForInterfaceMethodImplementation, CompilerOptions.DISABLED);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java
index d808322..d57e47c 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java
@@ -93,6 +93,7 @@
 		return AnnotationTest.class;
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_DocCommentSupport, CompilerOptions.ENABLED);
@@ -116,6 +117,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.reportMissingJavadocComments = null;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest.java
index 7b7593e..dd55df2 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest.java
@@ -30,6 +30,7 @@
 public AssignmentTest(String name) {
 	super(name);
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_ReportDeadCode, CompilerOptions.IGNORE);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_5.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_5.java
index b253620..fb8a221 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_5.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_5.java
@@ -25,6 +25,7 @@
 public AssignmentTest_1_5(String name) {
 	super(name);
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_ReportNullReference, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_7.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_7.java
index c552714..a49aa3f 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_7.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_7.java
@@ -25,6 +25,7 @@
 public AssignmentTest_1_7(String name) {
 	super(name);
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_ReportNullReference, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java
index b7f1167..909cc99 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AutoBoxingTest.java
@@ -31,6 +31,7 @@
 		super(name);
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map defaultOptions = super.getCompilerOptions();
 		defaultOptions.put(CompilerOptions.OPTION_ReportAutoboxing, CompilerOptions.WARNING);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
index 2ea65d7..86d05bd 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java
@@ -95,6 +95,7 @@
 			this.expected = expected;
 			this.normalizer = normalizer;
 		}
+		@Override
 		boolean match(String effective) {
 			if (this.expected == null) {
 				return effective == null;
@@ -104,6 +105,7 @@
 			}
 			return this.expected.equals(this.normalizer.normalized(effective));
 		}
+		@Override
 		String expected() {
 			return this.expected;
 		}
@@ -113,18 +115,22 @@
 		SubstringMatcher(String substring) {
 			this.substring = substring;
 		}
+		@Override
 		boolean match(String effective) {
 			effective = outputDirNormalizer.normalized(effective);
 			return effective.indexOf(this.substring) != -1;
 		}
+		@Override
 		String expected() {
 			return "*" + this.substring + "*";
 		}
 	}
 	static final Matcher EMPTY_STRING_MATCHER = new Matcher() {
+		@Override
 		String expected() {
 			return org.eclipse.jdt.internal.compiler.util.Util.EMPTY_STRING;
 		}
+		@Override
 		boolean match(String effective) {
 			return effective != null && effective.length() == 0;
 		}
@@ -143,6 +149,7 @@
 		XMLClasspathsSectionNormalizer(Normalizer nextInChain) {
 			super(nextInChain);
 		}
+		@Override
 		String normalized(String originalValue) {
 			String result;
 			StringBuffer normalizedValueBuffer = new StringBuffer(originalValue);
@@ -195,6 +202,7 @@
 			this.number = linesNumber >= 0 ? linesNumber : 0;
 		}
 
+		@Override
 		String normalized(String originalValue) {
 			String result;
 			if (this.number == 0 || originalValue.length() == 0)
@@ -9479,6 +9487,7 @@
 // compiler progress test (cancellation)
 public void test255_progress() {
 	TestCompilationProgress progress = new TestCompilationProgress() {
+		@Override
 		public void worked(int workIncrement, int remainingWork) {
 			if (remainingWork == 1)
 				this.isCanceled = true;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CastTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CastTest.java
index 43400dd..45f4e9e 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CastTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CastTest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2019 IBM Corporation and others.
+ * Copyright (c) 2003, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -33,6 +33,7 @@
 public CastTest(String name) {
 	super(name);
 }
+@Override
 protected Map getCompilerOptions() {
 	Map defaultOptions = super.getCompilerOptions();
 	defaultOptions.put(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, CompilerOptions.WARNING);
@@ -1796,6 +1797,79 @@
 		"----------\n"
 	);
 }
+public void testBug418795() {
+	if (this.complianceLevel < ClassFileConstants.JDK1_5) return; // uses autoboxing
+	Map options = getCompilerOptions();
+	options.put(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, CompilerOptions.ERROR);
+	runConformTest(
+		new String[] {
+			"X.java",
+			"public class X {\n" +
+			"	void foo() {\n" +
+			"		 Integer smallNumber = 42;\n" +
+			"        Integer largeNumber = 500;\n" +
+			"\n" +
+			"        // this prints:\n" +
+			"        if (smallNumber == 42)\n" +
+			"            System.out.println(\"42\");\n" +
+			"\n" +
+			"        // this prints:\n" +
+			"        if (largeNumber == 500)\n" +
+			"            System.out.println(\"500\");\n" +
+			"\n" +
+			"        // this prints:\n" +
+			"        if (smallNumber == (Object) 42)\n" +
+			"            System.out.println(\"42\");\n" +
+			"\n" +
+			"        // this doesn't print:\n" +
+			"        if (largeNumber == (Object) 500)\n" +
+			"            System.out.println(\"500\");\n" +
+			"" +
+			"	}\n" +
+			"}\n"
+		},
+		options);
+}
+public void testBug329437() {
+	if (this.complianceLevel < ClassFileConstants.JDK1_5) return; // uses autoboxing
+	Map options = getCompilerOptions();
+	options.put(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, CompilerOptions.ERROR);
+	runConformTest(
+		new String[] {
+			"X.java",
+			"public class X {\n" +
+			"	public static void main(String... args) {\n" +
+			"		Integer a = Integer.valueOf(10);\n" +
+			"		Integer b = Integer.valueOf(10);\n" +
+			"		boolean abEqual = (int)a == (int)b;\n" +
+			"		System.out.println(abEqual);\n" +
+			"	}\n" +
+			"}\n"
+		},
+		options);
+}
+public void testBug521778() {
+	Map options = getCompilerOptions();
+	options.put(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, CompilerOptions.ERROR);
+	runConformTest(
+		new String[] {
+			"X.java",
+			"public class X {\n" +
+			"	static int intThruFloat(int x) { return (int)(float)x; }\n" +
+			"	static long longThruFloat(long x) { return (long)(float)x; }\n" +
+			"	static long longThruDouble(long x) { return (long)(double)x; }\n" +
+			"	public static void main(String[] args) {\n" +
+			"		System.out.println(intThruFloat(2147483646));\n" +
+			"		System.out.println(longThruFloat(-9223372036854775806L));\n" +
+			"		System.out.print(longThruDouble(-9223372036854775807L));\n" +
+			"	}\n" +
+			"}\n"
+		},
+		"2147483647\n" + 			// not the
+		"-9223372036854775808\n" +  // same as
+		"-9223372036854775808",		// the input
+		options);
+}
 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=302919
 public void test048() {
 	CompilerOptions options = new CompilerOptions(getCompilerOptions());
@@ -3421,6 +3495,42 @@
 			"----------\n";
 	runner.runWarningTest();
 }
+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=472466 [compiler] bogus warning "unnecessary cast"
+public void test472466() {
+	if (this.complianceLevel < ClassFileConstants.JDK1_5)
+		return;
+	Runner runner = new Runner();
+	runner.customOptions = getCompilerOptions();
+	runner.customOptions.put(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, CompilerOptions.WARNING);
+	runner.testFiles =
+		new String[] {
+			"X.java",
+			"public class X {\n" +
+			"	public int foo() {\n" +
+			"		Object x = 4;\n" +
+			"		Integer y = 5;\n" +
+			"		if (x == (Object)50) return -1;\n" +
+			"		if (x == (Integer)50) return -2;\n" +
+			"		if ((Integer)x == (Integer)50) return -3;\n" +
+			"		if (y == 7) return -4;\n" +
+			"		if ((Integer)y == 9) return -5;\n" +
+			"		if ((Object)50 == x) return -6;\n" +
+			"		if ((Integer)50 == x) return -7;\n" +
+			"		if ((Integer)50 == (Integer)x) return -8;\n" +
+			"		if (7 == y) return -9;\n" +
+			"		return 0;\n" +
+			"	}\n" +
+			"}\n"
+		};
+	runner.expectedCompilerLog =
+			"----------\n" +
+			"1. WARNING in X.java (at line 9)\n" +
+			"	if ((Integer)y == 9) return -5;\n" +
+			"	    ^^^^^^^^^^\n" +
+			"Unnecessary cast from Integer to Integer\n" +
+			"----------\n";
+	runner.runWarningTest();
+}
 
 public static Class testClass() {
 	return CastTest.class;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClassFileReaderTest_1_8.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClassFileReaderTest_1_8.java
index 7f3a61e..d70e3db 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClassFileReaderTest_1_8.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClassFileReaderTest_1_8.java
@@ -45,6 +45,7 @@
 	}
 
 	// Needed to run tests individually from JUnit
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.complianceLevel = ClassFileConstants.JDK1_8;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClasspathJmodTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClasspathJmodTests.java
index 9a66768..fff7b4b 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClasspathJmodTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ClasspathJmodTests.java
@@ -32,11 +32,13 @@
 	public ClasspathJmodTests(String name) {
 		super(name);
 	}
+	@Override
 	public void setUp() throws Exception {
 		super.setUp();
 		System.setProperty("modules.to.load", "java.base");
 	}
 
+	@Override
 	public void tearDown() throws Exception {
 		super.tearDown();
 		System.setProperty("modules.to.load", "");
@@ -53,6 +55,7 @@
 		String home = Util.getJREDirectory();
 		return home + File.separator + "jmods" + File.separator + "java.sql.jmod" + File.pathSeparator;
 	}
+	@Override
 	public void test001() {
 		File outputDirectory = new File(OUTPUT_DIR);
 		Util.flushDirectoryContent(outputDirectory);
@@ -85,6 +88,7 @@
 				false,
 				"p.X");
 	}
+	@Override
 	public void test002() {
 		File outputDirectory = new File(OUTPUT_DIR);
 		Util.flushDirectoryContent(outputDirectory);
@@ -128,6 +132,7 @@
 				false,
 				"p.X");
 	}
+	@Override
 	public void test003() {
 		File outputDirectory = new File(OUTPUT_DIR);
 		Util.flushDirectoryContent(outputDirectory);
@@ -172,6 +177,7 @@
 				false,
 				"p.X");
 	}
+	@Override
 	public void test004() {
 		File outputDirectory = new File(OUTPUT_DIR);
 		Util.flushDirectoryContent(outputDirectory);
@@ -209,6 +215,7 @@
 				false,
 				"p.X");
 	}
+	@Override
 	public void test005() {
 		File outputDirectory = new File(OUTPUT_DIR);
 		Util.flushDirectoryContent(outputDirectory);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java
index ec1c1d9..a993e10 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java
@@ -1342,6 +1342,7 @@
 		StringBuffer correctResult = new StringBuffer(70000);
 		Field[] fields = (iProblemClass = IProblem.class).getFields();
 		Arrays.sort(fields, new Comparator() {
+			@Override
 			public int compare(Object o1, Object o2) {
 				Field field1 = (Field) o1;
 				Field field2 = (Field) o2;
@@ -2991,6 +2992,7 @@
 			StringBuffer failures = new StringBuffer();
 			StringBuffer correctResult = new StringBuffer(70000);
 			Arrays.sort(fields, new Comparator() {
+				@Override
 				public int compare(Object o1, Object o2) {
 					Field field1 = (Field) o1;
 					Field field2 = (Field) o2;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_3.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_3.java
index f34c533..387d9c6 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_3.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_3.java
@@ -35,6 +35,7 @@
 /*
  * Toggle compiler in mode -1.3
  */
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	if (this.docSupport) {
@@ -64,6 +65,7 @@
 /* (non-Javadoc)
  * @see junit.framework.TestCase#setUp()
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	// Javadoc disabled by default
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_4.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_4.java
index 1f54df0..654645f 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_4.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_4.java
@@ -36,6 +36,7 @@
 /*
  * Toggle compiler in mode -1.4
  */
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	if (this.docSupport) {
@@ -61,6 +62,7 @@
 /* (non-Javadoc)
  * @see junit.framework.TestCase#setUp()
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	// Javadoc disabled by default
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_5.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_5.java
index 3b02c95..1626778 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_5.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_1_5.java
@@ -36,6 +36,7 @@
 /*
  * Toggle compiler in mode -1.5
  */
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, CompilerOptions.IGNORE);
@@ -67,6 +68,7 @@
 /* (non-Javadoc)
  * @see junit.framework.TestCase#setUp()
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	// Javadoc disabled by default
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_CLDC.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_CLDC.java
index 948277d..56f06b6 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_CLDC.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Compliance_CLDC.java
@@ -31,6 +31,7 @@
 /*
  * Toggle compiler in mode -1.3
  */
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_3);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ConcurrentBatchCompilerTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ConcurrentBatchCompilerTest.java
index 621ac9f..208df2c 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ConcurrentBatchCompilerTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ConcurrentBatchCompilerTest.java
@@ -42,6 +42,7 @@
 	static int COUNT = 100;
 
 	/* Invoke the compiler COUNT times to increase bug probabililty. */
+	@Override
 	protected boolean invokeCompiler(PrintWriter out, PrintWriter err, Object extraArguments, TestCompilationProgress compilationProgress) {
 		boolean success = true;
 		for (int j=0; j<COUNT; j++) {
@@ -51,6 +52,7 @@
 	}
 
 	/* Disambiguate file names for concurrent tests in the same directory. */
+	@Override
 	protected String testName() {
 		Thread current = Thread.currentThread();
 		String baseName = super.testName();
@@ -80,6 +82,7 @@
 			final Throwable[] thrown = new Throwable[2];
 
 			this.runner1 = new Thread(new Runnable() {
+					@Override
 					public void run() {
 						try {
 							runConformTest(new String[] {
@@ -155,6 +158,7 @@
 					}
 			});
 			this.runner2 = new Thread(new Runnable() {
+				@Override
 				public void run() {
 					try {
 						// from ResourceLeakTests.test056e():
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java
index c1d1144..0547ae5 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java
@@ -55,6 +55,7 @@
 		return EnumTest.class;
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_DocCommentSupport, CompilerOptions.ENABLED);
@@ -74,6 +75,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.reportMissingJavadocComments = null;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ExpressionContextTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ExpressionContextTests.java
index 80fdccc..0af58e6 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ExpressionContextTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ExpressionContextTests.java
@@ -37,6 +37,7 @@
 	return buildMinimalComplianceTestSuite(testClass(), F_1_8);
 }
 
+@Override
 protected Map getCompilerOptions() {
 	Map defaultOptions = super.getCompilerOptions();
 	defaultOptions.put(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, CompilerOptions.WARNING);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FieldAccessTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FieldAccessTest.java
index e977f6a..2a09e1b 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FieldAccessTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FieldAccessTest.java
@@ -34,6 +34,7 @@
 public static Test suite() {
 	return buildAllCompliancesTestSuite(testClass());
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_ReportIndirectStaticAccess, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ForStatementTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ForStatementTest.java
index 2c15827..fb65b32 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ForStatementTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ForStatementTest.java
@@ -30,6 +30,7 @@
 	super(name);
 }
 
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_PreserveUnusedLocal, CompilerOptions.OPTIMIZE_OUT);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ForeachStatementTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ForeachStatementTest.java
index 01bd9dc..3950e29 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ForeachStatementTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ForeachStatementTest.java
@@ -38,6 +38,7 @@
 /*
  * Toggle compiler in mode -1.5
  */
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_PreserveUnusedLocal, CompilerOptions.OPTIMIZE_OUT);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeSignatureTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeSignatureTest.java
index a1cec6c..e41893f 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeSignatureTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeSignatureTest.java
@@ -51,6 +51,7 @@
 			this.buffer = new StringBuffer();
 		}
 
+		@Override
 		public void run() {
 			try {
 				BufferedReader reader = new BufferedReader(new InputStreamReader(this.inputStream));
@@ -928,6 +929,7 @@
 	 * Write given source test files in current output sub-directory.
 	 * Use test name for this sub-directory name (ie. test001, test002, etc...)
 	 */
+	@Override
 	protected void writeFiles(String[] testFiles) {
 		// Compute and create specific dir
 		IPath dirFilePath = (IPath) this.dirPath.clone();
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java
index 1ce1b6e..65a91b3 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java
@@ -69,6 +69,7 @@
 		return GenericTypeTest.class;
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_ReportMissingOverrideAnnotationForInterfaceMethodImplementation, CompilerOptions.DISABLED);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java
index 93d3ff6..d5ce778 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java
@@ -69,6 +69,7 @@
 		return GenericsRegressionTest.class;
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map compilerOptions = super.getCompilerOptions();
 		compilerOptions.put(CompilerOptions.OPTION_ReportMissingOverrideAnnotationForInterfaceMethodImplementation, CompilerOptions.DISABLED);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InMemoryNameEnvironment9.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InMemoryNameEnvironment9.java
index 99e0833..e5eb6f3 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InMemoryNameEnvironment9.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InMemoryNameEnvironment9.java
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.jdt.core.tests.compiler.regression;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -52,8 +53,7 @@
 			if (env instanceof IModuleAwareNameEnvironment) {
 				T[] someMods = function.apply((IModuleAwareNameEnvironment) env);
 				if (someMods != null) {
-					for (int j = 0; j < someMods.length; j++)
-						mods.add(someMods[j]);
+					mods.addAll(Arrays.asList(someMods));
 				}
 			}
 		}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InnerClass15Test.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InnerClass15Test.java
index 1864a35..fca62f6 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InnerClass15Test.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InnerClass15Test.java
@@ -31,6 +31,7 @@
 public static Test suite() {
 	return buildMinimalComplianceTestSuite(testClass(), F_1_5);
 }
+@Override
 protected Map<String, String> getCompilerOptions() {
 	Map<String, String> options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_ReportRawTypeReference, CompilerOptions.IGNORE);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InnerEmulationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InnerEmulationTest.java
index cdfcb8b..9a72c73 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InnerEmulationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/InnerEmulationTest.java
@@ -39,6 +39,7 @@
 public InnerEmulationTest(String name) {
 	super(name);
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_ReportRawTypeReference, CompilerOptions.IGNORE);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP181NestTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP181NestTest.java
index 7d717cc..00ed73b 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP181NestTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP181NestTest.java
@@ -35,6 +35,7 @@
 	super(name);
 }
 // No need for a tearDown()
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	this.versionString = AbstractCompilerTest.getVersionString(this.complianceLevel);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286ReservedWordTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286ReservedWordTest.java
index 0a38ba3..bbdc19e 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286ReservedWordTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286ReservedWordTest.java
@@ -26,6 +26,7 @@
 public static Class testClass() {
 	return JEP286ReservedWordTest.class;
 }
+@Override
 public void initialize(CompilerTestSetup setUp) {
 	super.initialize(setUp);
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286Test.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286Test.java
index 995589e..57f0a61 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286Test.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286Test.java
@@ -35,6 +35,7 @@
 public static Class testClass() {
 	return JEP286Test.class;
 }
+@Override
 public void initialize(CompilerTestSetup setUp) {
 	super.initialize(setUp);
 }
@@ -48,6 +49,7 @@
 static {
 //	TESTS_NAMES = new String[] { "test0018_project_variable_types" };
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_10);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP323VarLambdaParamsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP323VarLambdaParamsTest.java
index 75c8d1b..7cc99e3 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP323VarLambdaParamsTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP323VarLambdaParamsTest.java
@@ -26,6 +26,7 @@
 public static Class testClass() {
 	return JEP323VarLambdaParamsTest.class;
 }
+@Override
 public void initialize(CompilerTestSetup setUp) {
 	super.initialize(setUp);
 }
@@ -41,6 +42,7 @@
 //	TESTS_RANGE = new int[] { 1, -1 };
 //	TESTS_NAMES = new String[] { "testBug534787_positive_001" };
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_11);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JSR308SpecSnippetTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JSR308SpecSnippetTests.java
index 07216cf..62e23d7 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JSR308SpecSnippetTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JSR308SpecSnippetTests.java
@@ -48,6 +48,7 @@
 	}
 
 	// Enables the tests to run individually
+	@Override
 	protected Map getCompilerOptions() {
 		Map defaultOptions = super.getCompilerOptions();
 		defaultOptions.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_8);
@@ -888,8 +889,8 @@
 		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X$Y.class", "Y", expectedOutput, ClassFileBytesDisassembler.SYSTEM);
 	}
 	public void test018() throws Exception {
-		// was negative prior to https://bugs.openjdk.java.net/browse/JDK-8231435
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 			new String[] {
 				"X.java",
 				"@interface Receiver {}\n" +
@@ -903,8 +904,9 @@
 				"		 Y(@Receiver X X.this, boolean b) { }\n" +
 				"	}\n" +
 				"}\n",
-		},
-		"");
+			};
+		runner.javacTestOptions = JavacTestOptions.JavacHasABug.JavacBug8231436;
+		runner.runConformTest();
 	}
 	public void test019() throws Exception {
 		this.runConformTest(
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JSR335ClassFileTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JSR335ClassFileTest.java
index f5ae24c..05068c6 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JSR335ClassFileTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JSR335ClassFileTest.java
@@ -37,6 +37,7 @@
 	super(name);
 }
 // No need for a tearDown()
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	this.versionString = AbstractCompilerTest.getVersionString(this.complianceLevel);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java
index fa3ec17..1b53be1 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java
@@ -57,6 +57,7 @@
 	return buildAllCompliancesTestSuite(javadocTestClass());
 }
 
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_DocCommentSupport, this.docCommentSupport);
@@ -99,6 +100,7 @@
 /* (non-Javadoc)
  * @see junit.framework.TestCase#setUp()
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	this.docCommentSupport = CompilerOptions.ENABLED;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest.java
index 5f04d85..d566b97 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest.java
@@ -96,6 +96,7 @@
 	public JavadocTest(String name) {
 		super(name);
 	}
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_ReportFieldHiding, CompilerOptions.IGNORE);
@@ -111,6 +112,7 @@
 		return options;
 	}
 
+	@Override
 	protected String[] getDefaultClassPaths() {
 		if (this.useLibrary) {
 			String[] classLibs = super.getDefaultClassPaths();
@@ -328,6 +330,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		if (RUN_JAVAC) {
@@ -341,6 +344,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#tearDown()
 	 */
+	@Override
 	protected void tearDown() throws Exception {
 //		SHIFT = false;
 //		INDENT = 2;
@@ -412,6 +416,7 @@
 			generateOutput);
 	}
 	*/
+	@Override
 	protected void writeFiles(String[] testFiles) {
 		String classDirName = getClass().getName().substring(getClass().getName().lastIndexOf('.')+1); //.substring(11);
 		String testName = getName();
@@ -457,6 +462,7 @@
 	 * Run Sun compilation using javadoc.
 	 * See implementation in parent for details.
 	 */
+	@Override
 	protected void runJavac(
 			String[] testFiles,
 			final String expectedProblemLog,
@@ -611,6 +617,7 @@
 		}
 	}
 
+	@Override
 	protected void	printJavacResultsSummary() {
 		if (RUN_JAVAC) {
 			Integer count = (Integer)TESTS_COUNTERS.get(CURRENT_CLASS_NAME);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForClass.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForClass.java
index ce0222e..03ca7b4 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForClass.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForClass.java
@@ -33,6 +33,7 @@
 		return JavadocTestForClass.class;
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_ReportInvalidJavadoc, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForConstructor.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForConstructor.java
index 14edbf1..cacdd04 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForConstructor.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForConstructor.java
@@ -34,6 +34,7 @@
 	static { // Use this static to initialize TESTS_NAMES (String[]) , TESTS_RANGE (int[2]), TESTS_NUMBERS (int[])
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_ReportInvalidJavadoc, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForField.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForField.java
index f45f396..5a964eb 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForField.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForField.java
@@ -34,6 +34,7 @@
 	static { // Use this static to initialize testNames (String[]) , testRange (int[2]), testNumbers (int[])
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_ReportInvalidJavadoc, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForInterface.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForInterface.java
index 8e87886..8205e09 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForInterface.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForInterface.java
@@ -34,6 +34,7 @@
 	static { // Use this static to initialize testNames (String[]) , testRange (int[2]), testNumbers (int[])
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_ReportInvalidJavadoc, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForMethod.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForMethod.java
index 5ceac32..e4d3006 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForMethod.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForMethod.java
@@ -44,6 +44,7 @@
 //		TESTS_RANGE = new int[] { 10, -1 }; // run all tests with a number greater or equals to 10
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_ReportInvalidJavadoc, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestMixed.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestMixed.java
index d3d171e..07438b5 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestMixed.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestMixed.java
@@ -48,6 +48,7 @@
 		return buildAllCompliancesTestSuite(javadocTestClass());
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_DocCommentSupport, this.docCommentSupport);
@@ -70,6 +71,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.docCommentSupport = CompilerOptions.ENABLED;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestOptions.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestOptions.java
index 19c807c..5844050 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestOptions.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestOptions.java
@@ -1025,6 +1025,7 @@
 				JavacTestOptions.Excuse.EclipseWarningConfiguredAsError);
     }
 
+	@Override
     protected void checkCompilerLog(String[] testFiles, Requestor requestor,
     		String[] alternatePlatformIndependantExpectedLogs, Throwable exception) {
     	String platformIndependantExpectedLog = alternatePlatformIndependantExpectedLogs[0];
@@ -1378,6 +1379,7 @@
 	}
 	*/
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		// Set javadoc options if non null
@@ -1416,6 +1418,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.reportInvalidJavadoc = null;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_3.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_3.java
index ab0530f..4808d8b 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_3.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_3.java
@@ -51,6 +51,7 @@
 		return buildMinimalComplianceTestSuite(testClass(), F_1_3);
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_DocCommentSupport, this.docCommentSupport);
@@ -77,6 +78,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.docCommentSupport = CompilerOptions.ENABLED;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_4.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_4.java
index 41ddcc9..81a0fa4 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_4.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_4.java
@@ -52,6 +52,7 @@
 		return buildMinimalComplianceTestSuite(testClass(), F_1_4);
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_DocCommentSupport, this.docCommentSupport);
@@ -78,6 +79,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.docCommentSupport = CompilerOptions.ENABLED;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java
index 584a5d7..3bdd55d 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTest_1_5.java
@@ -51,6 +51,7 @@
 		return buildMinimalComplianceTestSuite(testClass(), F_1_5);
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_DocCommentSupport, this.docCommentSupport);
@@ -83,6 +84,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.docCommentSupport = CompilerOptions.ENABLED;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Jsr14Test.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Jsr14Test.java
index b270837..308c972 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Jsr14Test.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Jsr14Test.java
@@ -26,6 +26,7 @@
 public Jsr14Test(String name) {
 	super(name);
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodParametersAttributeTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodParametersAttributeTest.java
index 4e2610c..80c29c6 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodParametersAttributeTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodParametersAttributeTest.java
@@ -37,6 +37,7 @@
 		super(name);
 	}
 	// No need for a tearDown()
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.versionString = AbstractCompilerTest.getVersionString(this.complianceLevel);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java
index f5e22fa..3cf5ff8 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java
@@ -59,6 +59,7 @@
 		return MethodVerifyTest.class;
 	}
 
+	@Override
 	protected Map getCompilerOptions() {
 		Map compilerOptions = super.getCompilerOptions();
 		compilerOptions.put(CompilerOptions.OPTION_ReportMissingOverrideAnnotationForInterfaceMethodImplementation, CompilerOptions.DISABLED);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java
index 70e3934..8a5b888 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java
@@ -57,6 +57,7 @@
 	return suite;
 }
 
+@Override
 protected Map getCompilerOptions() {
 	Map defaultOptions = super.getCompilerOptions();
 	defaultOptions.put(CompilerOptions.OPTION_ReportUnnecessaryTypeCheck, CompilerOptions.WARNING);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.java
index 4ea739d..dee08ac 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.java
@@ -16,6 +16,7 @@
 import java.io.File;
 import java.util.Map;
 
+import org.eclipse.jdt.core.tests.compiler.regression.AbstractRegressionTest.JavacTestOptions.EclipseJustification;
 import org.eclipse.jdt.core.util.ClassFileBytesDisassembler;
 import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 
@@ -685,19 +686,20 @@
 				"----------\n");
 	}
 	public void test032() throws Exception {
-		// was negative prior to https://bugs.openjdk.java.net/browse/JDK-8231435
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 				new String[] {
 					"Marker.java",
 					"@interface Marker {}",
 					"X.java",
 					"public class X<@Marker T> {}",
-				},
-				"");
+				};
+		runner.javacTestOptions = JavacTestOptions.JavacHasABug.JavacBug8231436;
+		runner.runConformTest();
 	}
 	public void test033() throws Exception {
-		// was negative prior to https://bugs.openjdk.java.net/browse/JDK-8231435
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 				new String[] {
 					"Marker.java",
 					"@interface Marker {}",
@@ -705,8 +707,9 @@
 					"public class Y {}",
 					"X.java",
 					"public class X extends @Marker Y {}",
-				},
-				"");
+				};
+		runner.javacTestOptions = JavacTestOptions.JavacHasABug.JavacBug8231436;
+		runner.runConformTest();
 	}
 	// check locations
 	public void test034() throws Exception {
@@ -877,8 +880,8 @@
 			"----------\n");
 	}
 	public void test037() {
-		// was negative prior to https://bugs.openjdk.java.net/browse/JDK-8231435
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 				new String[] {
 					"X.java",
 					"@interface Marker {}\n" +
@@ -888,8 +891,9 @@
 					"		return null;\n" +
 					"	}\n" +
 					"}\n",
-				},
-				"");
+				};
+		runner.javacTestOptions = JavacTestOptions.JavacHasABug.JavacBug8231436;
+		runner.runConformTest();
 	}
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=383950
 	// [1.8][compiler] Type annotations must have target type meta annotation TYPE_USE
@@ -2149,8 +2153,8 @@
 				"----------\n");
 	}
 	public void test065() throws Exception {
-		// was negative prior to https://bugs.openjdk.java.net/browse/JDK-8231435
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 				new String[] {
 					"X.java",
 					"public class X {\n" +
@@ -2158,8 +2162,9 @@
 					"}\n" +
 					"@interface Marker {\n" +
 					"}\n"
-				},
-				"");
+				};
+		runner.javacTestOptions = JavacTestOptions.JavacHasABug.JavacBug8231436;
+		runner.runConformTest();
 	}
 	public void test066() throws Exception {
 		this.runNegativeTest(
@@ -2197,8 +2202,8 @@
 				"----------\n");
 	}
 	public void test068() throws Exception {
-		// was negative prior to https://bugs.openjdk.java.net/browse/JDK-8231435
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 				new String[] {
 					"X.java",
 					"public class X {\n" +
@@ -2206,8 +2211,9 @@
 					"}\n" +
 					"@interface Marker {\n" +
 					"}\n"
-				},
-				"");
+				};
+		runner.javacTestOptions = JavacTestOptions.JavacHasABug.JavacBug8231436;
+		runner.runConformTest();
 	}
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=385293
 	public void test069() throws Exception {
@@ -3559,7 +3565,8 @@
 	// This test case is similar to test415308a. SimpleTypes on which annotations are applied are modified to array
 	// types.
 	public void test415308b2() {
-		this.runNegativeTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 				new String[] {
 						"X.java",
 						"import java.lang.annotation.ElementType;\n" +
@@ -3589,13 +3596,16 @@
 						"		return z;\n" +
 						"	}\n" +
 						"}\n"
-				},
+				};
+		runner.expectedCompilerLog =
 				"----------\n" +
 				"1. ERROR in X.java (at line 16)\n" +
 				"	@Illegal Y.YY.Z[] z = null;\n" +
 				"	^^^^^^^^\n" +
 				"Type annotations are not allowed on type names used to access static members\n" +
-				"----------\n");
+				"----------\n";
+		runner.javacTestOptions = EclipseJustification.EclipseBug561549;
+		runner.runNegativeTest();
 	}
 	// [1.8][compiler] Illegal type annotations not rejected (https://bugs.eclipse.org/bugs/show_bug.cgi?id=415308)
 	// The test case is to validate that we report errors for only type annotations and nothing else in case of
@@ -3768,7 +3778,8 @@
 	// [1.8][compiler] Illegal type annotations not rejected (https://bugs.eclipse.org/bugs/show_bug.cgi?id=415308)
 	// The test case is a array version of test415308f.
 	public void test415308f2() {
-		this.runNegativeTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 				new String[] {
 						"X.java",
 						"import java.lang.annotation.ElementType;\n" +
@@ -3785,13 +3796,16 @@
 						"class X {\n" +
 						"   public @Illegal Y.Z[] foo() { return null;}\n" +
 						"}\n"
-				},
+				};
+		runner.expectedCompilerLog =
 				"----------\n" +
 				"1. ERROR in X.java (at line 13)\n" +
 				"	public @Illegal Y.Z[] foo() { return null;}\n" +
 				"	       ^^^^^^^^\n" +
 				"Type annotations are not allowed on type names used to access static members\n" +
-				"----------\n");
+				"----------\n";
+		runner.javacTestOptions = EclipseJustification.EclipseBug561549;
+		runner.runNegativeTest();
 	}
 	// [1.8][compiler] Illegal type annotations not rejected (https://bugs.eclipse.org/bugs/show_bug.cgi?id=415308)
 	// The test case is used to test enums with type annotations.
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTest.java
index 74c12db..0759d8e 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTest.java
@@ -128,6 +128,7 @@
 /**
  * @deprecated
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	if (this.complianceLevel >= ClassFileConstants.JDK1_8)
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests9.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests9.java
index 8b717f9..c84e3a5 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests9.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests9.java
@@ -61,6 +61,7 @@
 	}
 
 	@Deprecated // super method is deprecated
+	@Override
 	protected void setUpAnnotationLib() throws IOException {
 		if (this.LIBS == null) {
 			String[] defaultLibs = getDefaultClassPaths();
@@ -142,6 +143,7 @@
 	Map<String,IModule> moduleMap = new HashMap<>(); // by name
 	Map<String,String> file2module = new HashMap<>();
 
+	@Override
 	protected INameEnvironment getNameEnvironment(final String[] testFiles, String[] classPaths) {
 		this.classpaths = classPaths == null ? getDefaultClassPaths() : classPaths;
 		INameEnvironment[] classLibs = getClassLibs(classPaths == null);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullChecksTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullChecksTests.java
index e47b8ad..6d8dfda 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullChecksTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullChecksTests.java
@@ -1,8 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2020 Stephan Herrmann and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
 package org.eclipse.jdt.core.tests.compiler.regression;
 
 import java.util.Map;
 
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 
 import junit.framework.Test;
 
@@ -310,4 +324,124 @@
 			"",
 			"good");
 	}
+
+	public void testBooleanNullAssertions() {
+		runNegativeTestWithLibs(
+			new String[] {
+				"X.java",
+				"import java.util.Objects;\n" +
+				"import org.eclipse.jdt.annotation.*;\n" +
+				"public class X {\n" +
+				"	public void demonstrateNotWorkingNullCheck() {\n" +
+				"        Object mayBeNull = null;\n" +
+				"        if (Math.random() > 0.5) {\n" +
+				"            mayBeNull = new Object();\n" +
+				"        }\n" +
+				"        if (Object.class.isInstance(mayBeNull)) {\n" +
+				"            mayBeNull.toString();\n" +
+				"        }\n" +
+				"    }\n" +
+				"	public void negatedNullCheck() {\n" +
+				"        Object mayBeNull = null;\n" +
+				"        if (Math.random() > 0.5) {\n" +
+				"            mayBeNull = new Object();\n" +
+				"        }\n" +
+				"        if (!Objects.nonNull(mayBeNull)) {\n" +
+				"            System.out.println(\"not\");\n" +
+				"        } else {\n" +
+				"            mayBeNull.toString();\n" +
+				"        }\n" +
+				"        if (!(Integer.class.isInstance(mayBeNull) || Long.class.isInstance(mayBeNull))) {\n" +
+				"            mayBeNull.toString(); // still only a potential problem\n" +
+				"        }\n" +
+				"    }\n" +
+				"	public void nullCheckAlgegra() {\n" +
+				"        Object mayBeNull = null;\n" +
+				"        if (Math.random() > 0.5) {\n" +
+				"            mayBeNull = new Object();\n" +
+				"        }\n" +
+				"        if (Math.random() > 0.5 && Object.class.isInstance(mayBeNull)) {\n" +
+				"            mayBeNull.toString();\n" + // both operands are true
+				"        }\n" +
+				"        if (!Object.class.isInstance(mayBeNull) || Math.random() > 0.5) {\n" +
+				"            System.out.println(\"not\");\n" +
+				"        } else {\n" +
+				"            mayBeNull.toString();\n" + // both operands are false
+				"        }\n" +
+				"        if (Object.class.isInstance(mayBeNull) && mayBeNull.equals(\"hi\"))\n" + // second evaluated only when first is true
+				"            System.out.println(\"equal\");\n" +
+				"        if (Objects.isNull(mayBeNull) || mayBeNull.equals(\"hi\"))\n" + // second evaluated only when first is false
+				"            System.out.println(\"equal or null\");\n" +
+				"    }\n" +
+				"	public void objectsUtils() {\n" +
+				"        Object mayBeNull = null;\n" +
+				"        if (Math.random() > 0.5) {\n" +
+				"            mayBeNull = new Object();\n" +
+				"        }\n" +
+				"        String s = Objects.nonNull(mayBeNull) ? mayBeNull.toString(): null;\n" +
+				"        if (Objects.isNull(mayBeNull) || Math.random() > 0.5) {\n" +
+				"            System.out.println(\"not\");\n" +
+				"        } else {\n" +
+				"            mayBeNull.toString();\n" +
+				"        }\n" +
+				"    }\n" +
+				"	public void loops() {\n" +
+				"        Object mayBeNull = null;\n" +
+				"        if (Math.random() > 0.5) {\n" +
+				"            mayBeNull = new Object();\n" +
+				"        }\n" +
+				"        for (; Objects.nonNull(mayBeNull); mayBeNull=next(mayBeNull)) {\n" +
+				"            mayBeNull.toString();\n" + // guarded by the condition
+				"        }\n" +
+				"        mayBeNull.toString(); // can only be null after the loop\n" +
+				"        Object initiallyNN = new Object();\n" +
+				"        while (Objects.nonNull(initiallyNN)) {\n" +
+				"            initiallyNN.toString();\n" + // guarded by the condition
+				"            initiallyNN = next(initiallyNN);\n" +
+				"        }\n" +
+				"        initiallyNN.toString(); // can only be null after the loop\n" +
+				"    }\n" +
+				"    @Nullable Object next(Object o) { return o; }\n" +
+				"}\n"
+			},
+			getCompilerOptions(),
+			"----------\n" +
+			"1. ERROR in X.java (at line 24)\n" +
+			"	mayBeNull.toString(); // still only a potential problem\n" +
+			"	^^^^^^^^^\n" +
+			"Potential null pointer access: The variable mayBeNull may be null at this location\n" +
+			"----------\n" +
+			"2. ERROR in X.java (at line 65)\n" +
+			"	mayBeNull.toString(); // can only be null after the loop\n" +
+			"	^^^^^^^^^\n" +
+			"Null pointer access: The variable mayBeNull can only be null at this location\n" +
+			"----------\n" +
+			"3. ERROR in X.java (at line 71)\n" +
+			"	initiallyNN.toString(); // can only be null after the loop\n" +
+			"	^^^^^^^^^^^\n" +
+			"Null pointer access: The variable initiallyNN can only be null at this location\n" +
+			"----------\n");
+	}
+	public void testBug465085_comment12() {
+		Map<String, String> options = getCompilerOptions();
+		options.put(CompilerOptions.OPTION_ReportUnusedLocal, CompilerOptions.ERROR);
+		runConformTest(
+			new String[] {
+				"Snippet.java",
+				"import java.util.Collection;\n" +
+				"\n" +
+				"public class Snippet {\n" +
+				"	int instanceCount(Collection<?> elements, Class<?> clazz) {\n" +
+				"		int count = 0;\n" +
+				"		for (Object o : elements) {  // warning here: \"The value of the local variable o is not used\"\n" +
+				"			if (clazz.isInstance(o)) {\n" +
+				"				count++;\n" +
+				"			}\n" +
+				"		}\n" +
+				"		return count;\n" +
+				"	}\n" +
+				"}\n"
+			},
+			options);
+	}
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTests.java
index 9bef28e..4acefff 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTests.java
@@ -340,6 +340,7 @@
 		}
 		return result.toString();
 	}
+	@Override
 	public int compareTo(Object o) {
 		return this.value - ((State) o).value;
 	}
@@ -490,6 +491,7 @@
 	static Iterator symbolicStates() {
 		return new Iterator() {
 			int nextSymbolic = -1;
+			@Override
 			public boolean hasNext() {
 				if (this.nextSymbolic == -1) {
 					for (this.nextSymbolic = 0; this.nextSymbolic < states.length; this.nextSymbolic++) {
@@ -506,6 +508,7 @@
 				}
 				return this.nextSymbolic < states.length;
 			}
+			@Override
 			public Object next() {
 				State result = null;
 				if (this.nextSymbolic < states.length) {
@@ -514,17 +517,21 @@
 				}
 				return result;
 			}
+			@Override
 			public void remove() {
 				throw new RuntimeException("unimplemented");
 			}
 		};
 	}
+		@Override
 	public String toString() {
 		return this.name;
 	}
+		@Override
 	public boolean equals(Object other) {
 		return (other instanceof State) && ((State)other).value == this.value;
 	}
+		@Override
 	public int hashCode() {
 		return this.value;
 	}
@@ -1562,6 +1569,7 @@
 		((Element) i.next()).alreadyKnown = true;
 	}
 }
+@Override
 public String toString() {
 	StringBuffer output = new StringBuffer();
 	output.append("Transitive closure:\n");
@@ -1712,6 +1720,7 @@
 	NullReferenceImplTests.State[] transitiveClosure = computeTransitiveClosure(); // need for initialization?
 	transitiveClosure = addSymbolicStates(transitiveClosure); // don't rely on reachibility alone, since we don't cover all operations in these tests.
 	Arrays.sort(transitiveClosure, new Comparator() {
+		@Override
 		public int compare(Object o1, Object o2) {
 			return Integer.valueOf(((State)o1).value).compareTo(Integer.valueOf(((State)o2).value));
 		}
@@ -1754,8 +1763,7 @@
 }
 private static State[] addSymbolicStates(State[] transitiveClosure) {
 	Set allStates = new HashSet();
-	for (int i = 0; i < transitiveClosure.length; i++)
-		allStates.add(transitiveClosure[i]);
+	allStates.addAll(Arrays.asList(transitiveClosure));
 	for (int i=0; i < State.statesNb; i++)
 		if (State.states[i].symbolic)
 			allStates.add(State.states[i]);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTransformations.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTransformations.java
index 8755db2..289ff2c 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTransformations.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTransformations.java
@@ -74,6 +74,7 @@
 					{0x3C,0x3C},
 					// markAsComparedEqualToNonNull INITIALIZER END
 					}) {
+				@Override
 				UnconditionalFlowInfo output(UnconditionalFlowInfo input,
 						TestLocalVariableBinding local) {
 					UnconditionalFlowInfo result = (UnconditionalFlowInfo)input.copy();
@@ -119,6 +120,7 @@
 				{0x3C,0x38},
 				// markAsComparedEqualToNull INITIALIZER END
 				}) {
+			@Override
 			UnconditionalFlowInfo output(UnconditionalFlowInfo input,
 					TestLocalVariableBinding local) {
 				UnconditionalFlowInfo result = (UnconditionalFlowInfo)input.copy();
@@ -164,6 +166,7 @@
 				{0x3C,0x28},
 				// markAsDefinitelyNonNull INITIALIZER END
 				}) {
+			@Override
 			UnconditionalFlowInfo output(UnconditionalFlowInfo input,
 					TestLocalVariableBinding local) {
 				UnconditionalFlowInfo result = (UnconditionalFlowInfo)input.copy();
@@ -210,6 +213,7 @@
 				{0x3C,0x30},
 				// markAsDefinitelyNull INITIALIZER END
 				}) {
+			@Override
 			UnconditionalFlowInfo output(UnconditionalFlowInfo input,
 					TestLocalVariableBinding local) {
 				UnconditionalFlowInfo result = (UnconditionalFlowInfo)input.copy();
@@ -255,6 +259,7 @@
 				{0x3C,0x24},
 				// markAsDefinitelyUnknown INITIALIZER END
 				}) {
+			@Override
 			UnconditionalFlowInfo output(UnconditionalFlowInfo input,
 					TestLocalVariableBinding local) {
 				UnconditionalFlowInfo result = (UnconditionalFlowInfo)input.copy();
@@ -720,6 +725,7 @@
 				{0x3C,0x3C,0x3C},
 				// addInitializationsFrom INITIALIZER END
 				}) {
+			@Override
 			UnconditionalFlowInfo output(UnconditionalFlowInfo input1,
 					UnconditionalFlowInfo input2) {
 				return (UnconditionalFlowInfo)
@@ -1184,6 +1190,7 @@
 				{0x3C,0x3C,0x3C},
 				// addPotentialInitializationsFrom INITIALIZER END
 				}) {
+			@Override
 			UnconditionalFlowInfo output(UnconditionalFlowInfo input1,
 					UnconditionalFlowInfo input2) {
 				return (UnconditionalFlowInfo)
@@ -1438,6 +1445,7 @@
 				{0x3C,0x3C,0x3C},
 				// mergedWith INITIALIZER END
 				}) {
+			@Override
 			UnconditionalFlowInfo output(UnconditionalFlowInfo input1,
 					UnconditionalFlowInfo input2) {
 				return input1.copy().mergedWith(input2);
@@ -1614,6 +1622,7 @@
 		this.initializedTransitions.put(input1, State.states[transitions[i][1]]);
 	}
 }
+@Override
 State[] computeOutputs(State[] inputs) {
 	Map resultAccumulator = new HashMap(State.stateMaxValue + 1);
 	hydrate(); // pre-compute all possible combinations, then cache them
@@ -1628,6 +1637,7 @@
 	}
 	return result;
 }
+@Override
 void hydrate() {
 	if (this.computedTransitions == null) {
 		State input, output;
@@ -1647,6 +1657,7 @@
 }
 abstract UnconditionalFlowInfo output(UnconditionalFlowInfo input, TestLocalVariableBinding local);
 
+@Override
 void printTruthTables(File outputDirectory) {
 	try {
 		String outputFileName = outputDirectory.getPath() + File.separator + this.name + ".txt";
@@ -1705,6 +1716,7 @@
 	}
 }
 
+@Override
 void reinitializeFromComments(BufferedReader input, BufferedWriter output) {
 	String line, tab = "";
 	int cursor;
@@ -1957,6 +1969,7 @@
 	}
 }
 
+@Override
 void reinitializeFromComputedValues(BufferedReader input, BufferedWriter output,
 		State[] consideredStates) {
 	String line, tab = "";
@@ -2040,6 +2053,7 @@
 		throw new RuntimeException(e);
 	}
 }
+@Override
 int test() {
 	Iterator transitions = this.initializedTransitions.entrySet().iterator();
 	State input, expectedOutput, effectiveOutput;
@@ -2138,6 +2152,7 @@
 		transitionsForInput1.put(input2, State.states[transitions[i][2]]);
 	}
 }
+@Override
 State[] computeOutputs(State[] inputs) {
 	Map resultAccumulator = new HashMap(State.stateMaxValue + 1);
 	hydrate(); // pre-compute all possible combinations, then cache them
@@ -2155,6 +2170,7 @@
 	}
 	return result;
 }
+@Override
 void hydrate() {
 	if (this.computedTransitions == null) {
 		State input1, input2, output;
@@ -2271,6 +2287,7 @@
 		}
 	}
 }
+@Override
 void printTruthTables(File outputDirectory) {
 	for (int bit = 1; bit <= State.stateWidth; bit++) {
 		try {
@@ -2392,6 +2409,7 @@
 	keepColumn[column] = true;
 }
 
+@Override
 void reinitializeFromComments(BufferedReader input, BufferedWriter output) {
 	String line, tab = "";
 	int cursor;
@@ -2679,6 +2697,7 @@
 		throw new RuntimeException(e);
 	}
 }
+@Override
 void reinitializeFromComputedValues(BufferedReader input, BufferedWriter output,
 		State[] consideredStates) {
 	String line, tab = "";
@@ -2737,6 +2756,7 @@
 		throw new RuntimeException(e);
 	}
 }
+@Override
 int test() {
 	return test(1, false);
 }
@@ -2948,6 +2968,7 @@
 		transitionsForInput1.put(input2, State.states[transitions[i][2]]);
 	}
 }
+@Override
 void hydrate() {
 	super.hydrate();
 	checkSymmetry(this.computedTransitions);
@@ -2973,6 +2994,7 @@
 		}
 	}
 }
+@Override
 void mark(char truthValues[][], boolean keepRow[], boolean keepColumn[],
 		int row, int column, char value) {
 	truthValues[row][column] = truthValues[column][row] = value;
@@ -2981,6 +3003,7 @@
 	keepRow[column] = true;
 	keepColumn[row] = true;
 }
+@Override
 void printDefinitions(BufferedWriter output, State[] consideredStates, String tab)
 		throws IOException {
 	// only difference with parent is that we print only half of possible
@@ -3014,12 +3037,14 @@
 		output.write(lines[i]);
 	}
 }
+@Override
 Object getResult(Map transitions, State statei, State statej) {
 	Object r = super.getResult(transitions, statei, statej);
 	if (r == null)
 		r = super.getResult(transitions, statej, statei);
 	return r;
 }
+@Override
 void printInitializers(BufferedWriter output, State[] consideredStates, String tab)
 		throws IOException {
 	// only difference with parent is that we print only half of possible
@@ -3041,6 +3066,7 @@
 		}
 	}
 }
+@Override
 void printMissingEntries(BufferedWriter output, String tab) throws IOException {
 	Iterator firsts = State.symbolicStates(), seconds;
 	State first, second;
@@ -3085,6 +3111,7 @@
 	transitions.put(s2, s2); // dummy, non null value
 }
 // PREMATURE factorize upward
+@Override
 int test(int combinationTestsLoopsNb, boolean skipHighOrderBits) {
 	Iterator transitionsSetsIterator, transitionsIterator;
 	State input1, input2, expectedOutput, effectiveOutput;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java
index 5f56851..1f8c8d2 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java
@@ -91,6 +91,7 @@
 
 // Conditionally augment problem detection settings
 static boolean setNullRelatedOptions = true;
+@Override
 protected Map getCompilerOptions() {
     Map defaultOptions = super.getCompilerOptions();
     if (setNullRelatedOptions) {
@@ -18383,4 +18384,105 @@
 		"Redundant null check: The field BAR is a nonnull constant\n" +
 		"----------\n");
 }
+public void testBug561280() {
+	if (this.complianceLevel < ClassFileConstants.JDK1_5) return; // uses generics
+	runConformTest(
+		new String[] {
+			"test/Test.java",
+			"package test;\n" +
+			"\n" +
+			"import java.util.List;\n" +
+			"import java.util.Set;\n" +
+			"\n" +
+			"public class Test\n" +
+			"{\n" +
+			"  protected static final String ERROR_TYPE = \"error\";\n" +
+			"  protected static final String OBJECT_TYPE = \"object\";\n" +
+			"  protected static final String UNKNOWN_FEATURE_TYPE = \"unknownFeature\";\n" +
+			"  protected static final String DOCUMENT_ROOT_TYPE = \"documentRoot\";\n" +
+			"\n" +
+			"  protected final static String TYPE_ATTRIB = \"\";\n" +
+			"  protected final static String NIL_ATTRIB = \"\";\n" +
+			"  protected final static String SCHEMA_LOCATION_ATTRIB = \"\";\n" +
+			"  protected final static String NO_NAMESPACE_SCHEMA_LOCATION_ATTRIB = \"\";\n" +
+			"\n" +
+			"  protected final static boolean DEBUG_DEMANDED_PACKAGES = false;\n" +
+			"\n" +
+			"\n" +
+			"  protected Object xmlResource;\n" +
+			"  protected Object helper;\n" +
+			"  protected Object elements;\n" +
+			"  protected Object objects;\n" +
+			"  protected Object types;\n" +
+			"  protected Object mixedTargets;\n" +
+			"  protected Object prefixesToFactories;\n" +
+			"  protected Object urisToLocations;\n" +
+			"  protected Object externalURIToLocations;\n" +
+			"  protected boolean processSchemaLocations;\n" +
+			"  protected Object extent;\n" +
+			"  protected Object deferredExtent;\n" +
+			"  protected Object resourceSet;\n" +
+			"  protected Object packageRegistry;\n" +
+			"  protected Object resourceURI;\n" +
+			"  protected boolean resolve;\n" +
+			"  protected boolean oldStyleProxyURIs;\n" +
+			"  protected boolean disableNotify;\n" +
+			"  protected StringBuffer text;\n" +
+			"  protected boolean isIDREF;\n" +
+			"  protected boolean isSimpleFeature;\n" +
+			"  protected Object sameDocumentProxies;\n" +
+			"  protected Object[] identifiers;\n" +
+			"  protected int[] positions;\n" +
+			"  protected static final int ARRAY_SIZE = 64;\n" +
+			"  protected static final int REFERENCE_THRESHOLD = 5;\n" +
+			"  protected int capacity;\n" +
+			"  protected Set<String> notFeatures;\n" +
+			"  protected String idAttribute;\n" +
+			"  protected String hrefAttribute;\n" +
+			"  protected Object xmlMap;\n" +
+			"  protected Object extendedMetaData;\n" +
+			"  protected Object anyType;\n" +
+			"  protected Object anySimpleType;\n" +
+			"  protected boolean recordUnknownFeature;\n" +
+			"  protected boolean useNewMethods;\n" +
+			"  protected boolean recordAnyTypeNSDecls;\n" +
+			"  protected Object eObjectToExtensionMap;\n" +
+			"  protected Object contextFeature;\n" +
+			"  protected Object xmlSchemaTypePackage = null;\n" +
+			"  protected boolean deferIDREFResolution;\n" +
+			"  protected boolean processAnyXML;\n" +
+			"  protected Object ecoreBuilder;\n" +
+			"  protected boolean isRoot;\n" +
+			"  protected Object locator;\n" +
+			"  protected Object attribs;\n" +
+			"  protected boolean useConfigurationCache;\n" +
+			"  protected boolean needsPushContext;\n" +
+			"  protected Object resourceEntityHandler;\n" +
+			"  protected Object uriHandler;\n" +
+			"  protected Object documentRoot;\n" +
+			"  protected boolean usedNullNamespacePackage;\n" +
+			"  protected boolean isNamespaceAware;\n" +
+			"  protected boolean suppressDocumentRoot;\n" +
+			"  protected boolean laxWildcardProcessing;\n" +
+			"\n" +
+			"  protected static void processObjectx(Object object)\n" +
+			"  {\n" +
+			"    if (object instanceof List)\n" +
+			"    {\n" +
+			"      List<?> list = ((List<?>)object);\n" +
+			"      list.size();\n" +
+			"    }\n" +
+			"\n" +
+			"    if (object != null)\n" +
+			"    {\n" +
+			"      object.hashCode();\n" +
+			"    }\n" +
+			"    else\n" +
+			"    {\n" +
+			"      System.err.println(\"#\");\n" +
+			"    }\n" +
+			"  }\n" +
+			"}\n"
+		});
+}
 }
\ No newline at end of file
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTestAsserts.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTestAsserts.java
index e972ed5..8d176ca 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTestAsserts.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTestAsserts.java
@@ -118,6 +118,7 @@
 	return NullReferenceTestAsserts.class;
 }
 
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	if (this.assertLib == null) {
@@ -135,6 +136,7 @@
 
 // Conditionally augment problem detection settings
 static boolean setNullRelatedOptions = true;
+@Override
 protected Map getCompilerOptions() {
     Map defaultOptions = super.getCompilerOptions();
     if (setNullRelatedOptions) {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ProgrammingProblemsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ProgrammingProblemsTest.java
index 12ef8a3..8ce7a0d 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ProgrammingProblemsTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ProgrammingProblemsTest.java
@@ -56,6 +56,7 @@
 public static Class testClass() {
     return ProgrammingProblemsTest.class;
 }
+@Override
 protected Map getCompilerOptions() {
 	Map compilerOptions = super.getCompilerOptions();
 	compilerOptions.put(CompilerOptions.OPTION_PreserveUnusedLocal,  CompilerOptions.OPTIMIZE_OUT);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RecordsRestrictedClassTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RecordsRestrictedClassTest.java
index b42388d..85be38e 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RecordsRestrictedClassTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RecordsRestrictedClassTest.java
@@ -2373,4 +2373,133 @@
 		"Cannot make a static reference to the non-static field nsi\n" +
 		"----------\n");
 }
+@SuppressWarnings({ "unchecked", "rawtypes" })
+public void testBug558718_001() {
+	Map options = getCompilerOptions();
+	options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
+	this.runNegativeTest(
+	new String[] {
+			"X.java",
+			"record R() {}\n",
+		},
+		"----------\n" +
+		"1. ERROR in X.java (at line 1)\n" +
+		"	record R() {}\n" +
+		"	^^^^^^\n" +
+		"record is a preview feature and disabled by default. Use --enable-preview to enable\n" +
+		"----------\n",
+		null,
+		true,
+		options
+	);
+}
+@SuppressWarnings({ "unchecked", "rawtypes" })
+public void testBug558718_002() {
+	Map options = getCompilerOptions();
+	options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_13);
+	options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
+	this.runNegativeTest(
+	new String[] {
+			"X.java",
+			"record R() {}\n",
+		},
+		"----------\n" + 
+		"1. ERROR in X.java (at line 1)\n" + 
+		"	record R() {}\n" + 
+		"	^^^^^^\n" + 
+		"The preview feature record is only available with source level 14 and above\n" +
+		"----------\n",
+		null,
+		true,
+		options
+	);
+}
+public void testBug561528_001() {
+	runConformTest(
+			new String[] {
+					"X.java",
+					"class X {\n"+
+					"  public static void main(String[] args){\n"+
+					"     System.out.println(0);\n" +
+					"  }\n"+
+					"}\n"+
+					"interface Node<N> {}\n\n"+
+					"record R <N extends Node<?>> (N value){\n"+
+					"}\n"
+			},
+		"0");
+}
+public void testBug561528_002() {
+	runConformTest(
+			new String[] {
+					"X.java",
+					"class X {\n"+
+					"  public static void main(String[] args){\n"+
+					"     System.out.println(0);\n" +
+					"  }\n"+
+					"}\n"+
+					"interface Node<N> {}\n\n"+
+					"record R <N extends Node<N>> (R<N> parent, N element){\n"+
+					"}\n"
+			},
+		"0");
+}
+public void testBug561528_003() {
+	runConformTest(
+			new String[] {
+					"X.java",
+					"class X {\n"+
+					"  public static void main(String[] args){\n"+
+					"     System.out.println(0);\n" +
+					"  }\n"+
+					"}\n"+
+					"interface Node<N> {}\n\n"+
+					"interface AB<N> {}\n\n"+
+					"record R <N extends Node<AB<N>>> (N value){\n"+
+					"}\n"
+			},
+		"0");
+}
+public void testBug561528_004() {
+	runConformTest(
+			new String[] {
+					"X.java",
+					"class X {\n"+
+					"  public static void main(String[] args){\n"+
+					"     System.out.println(0);\n" +
+					"  }\n"+
+					"}\n"+
+					"interface Node<N> {}\n\n"+
+					"interface AB<N> {}\n\n"+
+					"interface CD<N> {}\n\n"+
+					"record R <N extends Node<AB<CD<N>>>> (N value){\n"+
+					"}\n"
+			},
+		"0");
+}
+public void testBug561528_005() {
+	this.runNegativeTest(
+			new String[] {
+					"X.java",
+					"class X {\n"+
+					"  public static void main(String[] args){\n"+
+					"     System.out.println(0);\n" +
+					"  }\n"+
+					"}\n"+
+					"interface Node<N> {}\n\n"+
+					"interface AB<N> {}\n\n"+
+					"interface CD<N> {}\n\n"+
+					"record R <N extends Node<AB<CD<N>>>>> (N value){\n"+
+					"}\n"
+			},
+		"----------\n" +
+		"1. ERROR in X.java (at line 12)\n" +
+		"	record R <N extends Node<AB<CD<N>>>>> (N value){\n" +
+		"	                                ^^^\n" +
+		"Syntax error on token \">>>\", >> expected\n" +
+		"----------\n",
+		null,
+		true
+	);
+}
 }
\ No newline at end of file
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RegressionTestSetup.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RegressionTestSetup.java
index 205cc54..0b21033 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RegressionTestSetup.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RegressionTestSetup.java
@@ -31,6 +31,7 @@
 		super(complianceLevel);
 	}
 
+	@Override
 	protected void setUp() {
 		if (this.javaClassLib == null) {
 			// Create name environment
@@ -38,6 +39,7 @@
 		}
 		super.setUp();
 	}
+	@Override
 	protected void tearDown() {
 		this.verifier.shutDown();
 	}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RepeatableAnnotationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RepeatableAnnotationTest.java
index 3f57e33..da3d15a 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RepeatableAnnotationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/RepeatableAnnotationTest.java
@@ -22,6 +22,7 @@
 
 import junit.framework.Test;
 
+import org.eclipse.jdt.core.tests.compiler.regression.AbstractRegressionTest.JavacTestOptions.JavacHasABug;
 import org.eclipse.jdt.core.util.ClassFileBytesDisassembler;
 import org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
@@ -1426,7 +1427,8 @@
 			"----------\n");
 	}
 	public void testDeprecation() {
-		this.runNegativeTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 			new String[] {
 				"TC.java",
 				"@Deprecated\n" +
@@ -1440,7 +1442,8 @@
 				"}\n" +
 				"interface I<@T(1) @T(2) K> {\n" +
 				"}\n"
-			},
+			};
+		runner.expectedCompilerLog =
 			"----------\n" +
 			"1. WARNING in T.java (at line 1)\n" +
 			"	@java.lang.annotation.Repeatable(TC.class)\n" +
@@ -1451,11 +1454,14 @@
 			"	interface I<@T(1) @T(2) K> {\n" +
 			"	            ^^\n" +
 			"The type TC is deprecated\n" +
-			"----------\n");
+			"----------\n";
+		runner.javacTestOptions = JavacHasABug.JavacBug8231436_EclipseWarns;
+		runner.runWarningTest();
 	}
 	public void testDeprecation2() { // verify that deprecation warning does not show up when the deprecated element is used in the same file defining it.
 		// was negative prior to https://bugs.openjdk.java.net/browse/JDK-8231435
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 			new String[] {
 				"T.java",
 				"@Deprecated\n" +
@@ -1468,8 +1474,10 @@
 				"}\n" +
 				"interface I<@T(1) @T(2) K> {\n" +
 				"}\n"
-			},
-			"");
+			};
+		runner.expectedCompilerLog = "";
+		runner.javacTestOptions = JavacHasABug.JavacBug8231436;
+		runner.runConformTest();
 	}
 
 	// 419209: [1.8] Repeating container annotations should be rejected in the presence of annotation it contains
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakTests.java
index 7b5c843..38ef6f5 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakTests.java
@@ -6547,4 +6547,44 @@
 		},
 		options);
 }
+public void testBug560076() {
+	runNegativeTest(
+		new String[] {
+			"org/sqlite/database/sqlite/SQLiteOpenHelper.java",
+			"package org.sqlite.database.sqlite;\n" +
+			"\n" +
+			"public abstract class SQLiteOpenHelper {\n" +
+			"    private void getDatabaseLocked(String name, SQLiteDatabase mDatabase) {\n" +
+			"        SQLiteDatabase sQLiteDatabase4 = mDatabase;\n" +
+			"        try {\n" +
+			"            sQLiteDatabase4 = name == null ? null : openDatabase();\n" +
+			"        } catch (Throwable e) {\n" +
+			"            sQLiteDatabase4 = openDatabase();\n" +
+			"        }\n" +
+			"    }\n" +
+			"\n" +
+			"    public static SQLiteDatabase openDatabase() {\n" +
+			"    }\n" +
+			"}\n" +
+			"\n" +
+			"final class SQLiteDatabase implements java.io.Closeable {\n" +
+			"}\n"
+		},
+		"----------\n" +
+		"1. WARNING in org\\sqlite\\database\\sqlite\\SQLiteOpenHelper.java (at line 4)\n" +
+		"	private void getDatabaseLocked(String name, SQLiteDatabase mDatabase) {\n" +
+		"	             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
+		"The method getDatabaseLocked(String, SQLiteDatabase) from the type SQLiteOpenHelper is never used locally\n" +
+		"----------\n" +
+		"2. ERROR in org\\sqlite\\database\\sqlite\\SQLiteOpenHelper.java (at line 13)\n" +
+		"	public static SQLiteDatabase openDatabase() {\n" +
+		"	                             ^^^^^^^^^^^^^^\n" +
+		"This method must return a result of type SQLiteDatabase\n" +
+		"----------\n" +
+		"3. ERROR in org\\sqlite\\database\\sqlite\\SQLiteOpenHelper.java (at line 17)\n" +
+		"	final class SQLiteDatabase implements java.io.Closeable {\n" +
+		"	            ^^^^^^^^^^^^^^\n" +
+		"The type SQLiteDatabase must implement the inherited abstract method Closeable.close()\n" +
+		"----------\n");
+}
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SerialVersionUIDTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SerialVersionUIDTests.java
index 87d5f61..7946d0b 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SerialVersionUIDTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SerialVersionUIDTests.java
@@ -46,6 +46,7 @@
 public static Class testClass() {
 	return SerialVersionUIDTests.class;
 }
+@Override
 protected Map getCompilerOptions() {
 	Map options = super.getCompilerOptions();
 	options.put(CompilerOptions.OPTION_ReportMissingSerialVersion, CompilerOptions.ERROR);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SerializableLambdaTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SerializableLambdaTest.java
index b07b208..1ee6052 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SerializableLambdaTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SerializableLambdaTest.java
@@ -60,6 +60,7 @@
 	}
 
 	// Enables the tests to run individually
+	@Override
 	protected Map getCompilerOptions() {
 		Map defaultOptions = super.getCompilerOptions();
 		defaultOptions.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_8);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionTest.java
index ac8915d..2e14732 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionTest.java
@@ -37,6 +37,7 @@
 	}
 
 	// Enables the tests to run individually
+	@Override
 	protected Map<String, String> getCompilerOptions() {
 		Map<String, String> defaultOptions = super.getCompilerOptions();
 		defaultOptions.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_12); // FIXME
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java
index 7895462..35979da 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java
@@ -21,12 +21,12 @@
 
 import junit.framework.Test;
 
-public class SwitchExpressionsYieldTest extends AbstractRegressionTest {
 
+public class SwitchExpressionsYieldTest extends AbstractRegressionTest {
 	static {
 //		TESTS_NUMBERS = new int [] { 40 };
 //		TESTS_RANGE = new int[] { 1, -1 };
-//		TESTS_NAMES = new String[] { "testBug552764" };
+//		TESTS_NAMES = new String[] { "testBug561766" };
 	}
 
 	public static Class<?> testClass() {
@@ -39,20 +39,6 @@
 		super(testName);
 	}
 
-	// Enables the tests to run individually
-	protected Map<String, String> _getCompilerOptions() {
-		Map<String, String> defaultOptions = super.getCompilerOptions();
-		defaultOptions.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_14);
-		defaultOptions.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_14);
-		defaultOptions.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_14);
-		defaultOptions.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		defaultOptions.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
-		return defaultOptions;
-	}
-	protected void runConformTestWithJavac(String[] testFiles, String expectedOutput) {
-		runConformTest(testFiles, expectedOutput, _getCompilerOptions(), new String[] {"--enable-preview"}, new JavacTestOptions("-source 14 --enable-preview"));
-	}
-
 	@Override
 	protected void runConformTest(String[] testFiles, String expectedOutput) {
 		runConformTest(testFiles, expectedOutput, getCompilerOptions());
@@ -64,14 +50,13 @@
 		Runner runner = new Runner();
 		runner.testFiles = testFiles;
 		runner.expectedOutputString = expectedOutput;
-		runner.vmArguments = new String[] {"--enable-preview"};
 		runner.customOptions = customOptions;
-		runner.javacTestOptions = JavacTestOptions.forReleaseWithPreview(JavaCore.VERSION_14);
+		runner.javacTestOptions = JavacTestOptions.forRelease(JavaCore.VERSION_14);
 		runner.runConformTest();
 	}
 	@Override
 	protected void runNegativeTest(String[] testFiles, String expectedCompilerLog) {
-		runNegativeTest(testFiles, expectedCompilerLog, JavacTestOptions.forReleaseWithPreview(JavaCore.VERSION_14));
+		runNegativeTest(testFiles, expectedCompilerLog, JavacTestOptions.forRelease(JavaCore.VERSION_14));
 	}
 	protected void runWarningTest(String[] testFiles, String expectedCompilerLog) {
 		runWarningTest(testFiles, expectedCompilerLog, null);
@@ -86,9 +71,8 @@
 		runner.testFiles = testFiles;
 		runner.expectedCompilerLog = expectedCompilerLog;
 		runner.customOptions = customOptions;
-		runner.vmArguments = new String[] {"--enable-preview"};
-		runner.javacTestOptions = javacAdditionalTestOptions == null ? JavacTestOptions.forReleaseWithPreview(JavaCore.VERSION_14) :
-			JavacTestOptions.forReleaseWithPreview(JavaCore.VERSION_14, javacAdditionalTestOptions);
+		runner.javacTestOptions = javacAdditionalTestOptions == null ? JavacTestOptions.forRelease(JavaCore.VERSION_14) :
+			JavacTestOptions.forRelease(JavaCore.VERSION_14, javacAdditionalTestOptions);
 		runner.runWarningTest();
 	}
 	public void testBug544073_000() {
@@ -100,7 +84,6 @@
 						"	public static int yield() {\n"+
 						"		return 1;\n"+
 						"	}\n"+
-						"	@SuppressWarnings(\"preview\")\n"+
 						"	public static int foo(int val) {\n"+
 						"		int k = switch (val) {\n"+
 						"		case 1 -> { yield 1; }\n"+
@@ -259,17 +242,13 @@
 	 *  must contain all the enum constants of that enum type
 	 *  Add a missing enum test case
 	 */
-	public void _testBug544073_006() {
+	public void testBug544073_006() {
 		this.runNegativeTest(
 			new String[] {
 				"X.java",
+				"import java.io.IOException;\n" +
 				"public class X {\n" +
 				"  public static void main(String[] args) {\n" +
-				"    int x, y;\n" +
-				"    I i = () -> {\n" +
-				"      int z = 10;\n" +
-				"    };\n" +
-				"    i++;\n" +
 				"  }\n" +
 				"	public static int twice(int i) {\n" +
 				"		int tw = switch (i) {\n" +
@@ -286,10 +265,15 @@
 				"}\n",
 			},
 			"----------\n" +
-			"1. ERROR in X.java (at line 7)\n" +
+			"1. ERROR in X.java (at line 6)\n" +
 			"	int tw = switch (i) {\n" +
-			"	      ^^^^^\n" +
-			" The switch expression should have a default case\n" +
+			"	                 ^\n" +
+			"A switch expression should have a default case\n" +
+			"----------\n" +
+			"2. ERROR in X.java (at line 13)\n" +
+			"	case \"hello\" -> throw new IOException(\"hello\");\n" +
+			"	     ^^^^^^^\n" +
+			"Type mismatch: cannot convert from String to int\n" +
 			"----------\n");
 	}
 	/*
@@ -322,61 +306,6 @@
 				},
 				"100");
 	}
-	// switch expressions graduated from preview to standard and hence the following test not relevant anymore
-	public void _testBug544073_008() {
-		Map<String, String> disablePreviewOptions = getCompilerOptions();
-		disablePreviewOptions.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
-		String[] testFiles = new String[] {
-				"X.java",
-				"public class X {\n" +
-				"	static int twice(int i) {\n" +
-				"		int tw = switch (i) {\n" +
-				"			case 0 -> i * 0;\n" +
-				"			case 1 -> 2;\n" +
-				"			default -> 3;\n" +
-				"		};\n" +
-				"		return tw;\n" +
-				"	}\n" +
-				"	public static void main(String[] args) {\n" +
-				"		System.out.print(twice(3));\n" +
-				"	}\n" +
-				"}\n",
-		};
-
-		String expectedProblemLog =
-				"----------\n" +
-				"1. ERROR in X.java (at line 3)\n" +
-				"	int tw = switch (i) {\n" +
-				"			case 0 -> i * 0;\n" +
-				"			case 1 -> 2;\n" +
-				"			default -> 3;\n" +
-				"		};\n" +
-				"	         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
-				"Switch Expressions is a preview feature and disabled by default. Use --enable-preview to enable\n" +
-				"----------\n" +
-				"2. ERROR in X.java (at line 4)\n" +
-				"	case 0 -> i * 0;\n" +
-				"	^^^^^^\n" +
-				"Case Labels with '->' is a preview feature and disabled by default. Use --enable-preview to enable\n" +
-				"----------\n" +
-				"3. ERROR in X.java (at line 5)\n" +
-				"	case 1 -> 2;\n" +
-				"	^^^^^^\n" +
-				"Case Labels with '->' is a preview feature and disabled by default. Use --enable-preview to enable\n" +
-				"----------\n" +
-				"4. ERROR in X.java (at line 6)\n" +
-				"	default -> 3;\n" +
-				"	^^^^^^^\n" +
-				"Case Labels with '->' is a preview feature and disabled by default. Use --enable-preview to enable\n" +
-				"----------\n";
-
-		this.runNegativeTest(
-				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				disablePreviewOptions);
-	}
 	public void testBug544073_009() {
 		runConformTest(
 			new String[] {
@@ -397,8 +326,6 @@
 			"hello");
 	}
 	public void testBug544073_010() {
-		Map<String, String> disablePreviewOptions = getCompilerOptions();
-		disablePreviewOptions.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -435,15 +362,9 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				disablePreviewOptions);
+				expectedProblemLog);
 	}
 	public void testBug544073_011() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.ERROR);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -468,16 +389,13 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				options);
+				expectedProblemLog);
 	}
 	public void testBug544073_012() {
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
-				"	@SuppressWarnings(\"preview\")\n" +
+				"\n" +
 				"	static int twice(int i) {\n" +
 				"		switch (i) {\n" +
 				"			default -> 3;\n" +
@@ -843,9 +761,6 @@
 	 * Simple switch case with string literals
 	 */
 	public void testBug544073_023() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -953,9 +868,6 @@
 	 * Switch with multi constant case statements with integer constants
 	 */
 	public void testBug544073_026() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -994,9 +906,6 @@
 	 * Switch multi-constant with mixed constant types, reported
 	 */
 	public void testBug544073_027() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -1025,18 +934,13 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				options);
+				expectedProblemLog);
 	}
 	/*
 	 * Switch multi-constant without break statement, reported
 	 */
 	public void testBug544073_028() {
 		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		options.put(CompilerOptions.OPTION_ReportFallthroughCase, CompilerOptions.WARNING);
 		String[] testFiles = new String[] {
 				"X.java",
@@ -1074,8 +978,6 @@
 	 */
 	public void testBug544073_029() {
 		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		options.put(CompilerOptions.OPTION_ReportMissingDefaultCase, CompilerOptions.WARNING);
 		String[] testFiles = new String[] {
 				"X.java",
@@ -1108,9 +1010,6 @@
 	 * Switch multi-constant with duplicate int constants
 	 */
 	public void testBug544073_030() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -1140,18 +1039,12 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				options);
+				expectedProblemLog);
 	}
 	/*
 	 * Switch multi-constant with duplicate String literals
 	 */
 	public void testBug544073_031() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -1181,18 +1074,12 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				options);
+				expectedProblemLog);
 	}
 	/*
 	 * Switch multi-constant with illegal qualified enum constant
 	 */
 	public void testBug544073_032() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -1216,15 +1103,9 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				options);
+				expectedProblemLog);
 	}
 	public void testBug544073_033() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -1245,10 +1126,7 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				options);
+				expectedProblemLog);
 	}
 	public void testBug544073_034() {
 		String[] testFiles = new String[] {
@@ -1311,13 +1189,10 @@
 			"----------\n");
 	}
 	public void testBug544073_036() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
-				"	@SuppressWarnings(\"preview\")\n" +
+				"\n" +
 				"	public static void bar(int  i) {\n" +
 				"		i = switch (i+0) {\n" +
 				"			default: System.out.println(0);\n" +
@@ -1336,15 +1211,9 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				options);
+				expectedProblemLog);
 	}
 	public void testBug544073_037() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 			"X.java",
 			"public class X {\n" +
@@ -1363,12 +1232,9 @@
 			"}\n"
 		};
 		String expectedOutput = "hello world";
-		runConformTest(testFiles, expectedOutput, options);
+		runConformTest(testFiles, expectedOutput);
 	}
 	public void testBug544073_038() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 			"X.java",
 			"public class X {\n" +
@@ -1387,12 +1253,9 @@
 			"}\n"
 		};
 		String expectedOutput = "hello world";
-		runConformTest(testFiles, expectedOutput, options);
+		runConformTest(testFiles, expectedOutput);
 	}
 	public void testBug544073_039() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 			"X.java",
 			"interface I0 { void i(); }\n" +
@@ -1418,12 +1281,9 @@
 			"}\n"
 		};
 		String expectedOutput = "NPE as expected";
-		runConformTest(testFiles, expectedOutput, options);
+		runConformTest(testFiles, expectedOutput);
 	}
 	public void testBug544073_040() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 			"X.java",
 			"import java.util.function.Supplier;\n" +
@@ -1450,13 +1310,10 @@
 			"}\n"
 		};
 		String expectedOutput = "NPE as expected";
-		runConformTest(testFiles, expectedOutput, options);
+		runConformTest(testFiles, expectedOutput);
 	}
 	public void testBug544073_041() {
 		// require resolving/inferring of poly-switch-expression during ASTNode.resolvePolyExpressionArguments()
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 			"X.java",
 			"public class X {\n" +
@@ -1475,7 +1332,7 @@
 			"}\n"
 		};
 		String expectedOutput = "3";
-		runConformTest(testFiles, expectedOutput, options);
+		runConformTest(testFiles, expectedOutput);
 	}
 	public void testBug544073_042() {
 		runConformTest(
@@ -1535,8 +1392,6 @@
 			"1");
 	}
 	public void testBug544073_044() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -1561,11 +1416,7 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] { "--enable-preview"},
-				options);
+				expectedProblemLog);
 	}
 	public void testBug544073_045() {
 		runConformTest(
@@ -1828,9 +1679,6 @@
 			"i:1");
 	}
 	public void testBug544073_056() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.IGNORE);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n" +
@@ -1855,18 +1703,13 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] { "--enable-preview"},
-				options);
+				expectedProblemLog);
 	}
 	public void testBug544073_057() {
 		runConformTest(
 			new String[] {
 					"X.java",
 					"public class X {\n" +
-					"    @SuppressWarnings(\"preview\")\n" +
 					"	public int foo(int i) {\n" +
 					"    	int v = switch(i) {\n" +
 					"    	case 0 -> switch(i) {\n" +
@@ -1890,7 +1733,6 @@
 					"X.java",
 					"public class X {\n" +
 					"    public int foo(int i) {\n" +
-					"    	@SuppressWarnings(\"preview\")\n" +
 					"    	int v = switch(switch(i) {\n" +
 					"        		default -> 1;\n" +
 					"        		}) {\n" +
@@ -2007,7 +1849,6 @@
 					"X.java",
 					"public class X {\n" +
 					"    public int foo(int i) {\n" +
-					"    @SuppressWarnings(\"preview\")\n" +
 					"	boolean v = switch (i) {\n" +
 					"        case 1:\n" +
 					"        	switch (i) {\n" +
@@ -2036,7 +1877,6 @@
 				"X.java",
 				"public class X {\n" +
 				"	public int foo(int i) {\n" +
-				"		@SuppressWarnings(\"preview\")\n" +
 				"		int v =\n" +
 				"			switch(switch(i) {\n" +
 				"					case 0 -> { yield 2; }\n" +
@@ -2059,7 +1899,6 @@
 			new String[] {
 				"X.java",
 				"public class X {\n" +
-				"    @SuppressWarnings(\"preview\")\n" +
 				"	public int foo(int i) {\n" +
 				"    	int k = 10;\n" +
 				"    	switch (i) {\n" +
@@ -2081,7 +1920,6 @@
 			new String[] {
 				"X.java",
 				"public class X {\n" +
-				"	@SuppressWarnings(\"preview\")\n" +
 				"	public static void foo(Day day) {\n" +
 				"		switch (day) {\n" +
 				"		case MONDAY, FRIDAY -> System.out.println(Day.SUNDAY);\n" +
@@ -2130,7 +1968,7 @@
 		runner.testFiles = new String[] {
 				"X.java",
 				"public class X {\n"+
-				"    @SuppressWarnings(\"preview\")\n"+
+				"\n" +
 				"    public void foo(int i) {\n"+
 				"    	if (switch(i) { default -> magic(); })\n"+
 				"            System.out.println(\"true\");\n"+
@@ -2152,7 +1990,6 @@
 			"	    ^^^^^^^\n" +
 			"Type mismatch: cannot convert from Object to boolean\n" +
 			"----------\n";
-		runner.vmArguments = new String[] {"--enable-preview"};
 		runner.javacTestOptions = JavacHasABug.JavacBug8179483_switchExpression;
 		runner.runNegativeTest();
 	}
@@ -2161,7 +1998,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n"+
-				"    @SuppressWarnings(\"preview\")\n"+
+						"\n" +
 				"	public static int foo(int i) throws MyException {\n"+
 				"    	int v = switch (i) {\n"+
 				"    		default -> throw new MyException();\n"+
@@ -2192,9 +2029,6 @@
 	public void testBug544073_071() {
 		if (this.complianceLevel < ClassFileConstants.JDK12)
 			return;
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.WARNING);
 		String message =
 				"----------\n" +
 				"1. WARNING in X.java (at line 5)\n" +
@@ -2215,7 +2049,7 @@
 				"}\n"
 			},
 			message,
-			options,
+			getCompilerOptions(),
 			"-Xlint:preview");
 	}
 	public void testBug544073_072() {
@@ -2242,45 +2076,12 @@
 			},
 			message);
 	}
-	// multi-constant case has graduated from preview to standard - this test is no longer relevant
-	public void _testBug544073_073() {
-		if (this.complianceLevel < ClassFileConstants.JDK1_8)
-			return;
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.WARNING);
-		String message =
-				"----------\n" +
-				"1. ERROR in X.java (at line 5)\n" +
-				"	case \"ABC\", (false ? (String) \"c\" : (String) \"d\") : break;\n" +
-				"	^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
-				"Multi constant case is a preview feature and disabled by default. Use --enable-preview to enable\n" +
-				"----------\n";
-
-		this.runNegativeTest(new String[] {
-				"X.java",
-				"public class X {\n" +
-				"  public static void main(String [] args) {\n" +
-				"  	 String arg = \"ABD\";\n" +
-				"    switch(arg) {\n" +
-				"      case \"ABC\", (false ? (String) \"c\" : (String) \"d\") : break;\n" +
-				"	 }\n" +
-				"  }\n" +
-				"}\n"
-			},
-			message,
-			null,
-			true,
-			new String[] { "--enable-preview"},
-			options);
-	}
 	public void testBug544073_074() {
 		runConformTest(
 			new String[] {
 				"X.java",
-				"enum X {\n"+
+				"public enum X {\n"+
 				"    A, B; \n"+
-				"    @SuppressWarnings(\"preview\")\n"+
 				"    public static void main(String[] args) {\n"+
 				"         X myEnum = X.A;\n"+
 				"         int o;\n"+
@@ -2299,10 +2100,9 @@
 		runConformTest(
 			new String[] {
 				"X.java",
-				"enum X {\n"+
+				"public enum X {\n"+
 				"    A, B;\n"+
 				"     \n"+
-				"    @SuppressWarnings(\"preview\")\n"+
 				"    public static void main(String[] args) {\n"+
 				"         X myEnum = X.A;\n"+
 				"         int o;\n"+
@@ -2323,7 +2123,7 @@
 				"\n"+
 				"public class X {\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"\n" +
 				"	public static int foo() {\n"+
 				"	for (int i = 0; i < 1; ++i) {\n"+
 				"			int k = switch (i) {\n"+
@@ -2355,7 +2155,7 @@
 				"\n"+
 				"public class X {\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"\n" +
 				"	public static int foo() {\n"+
 				"	for (int i = 0; i < 1; ++i) {\n"+
 				"			int k = switch (i) {\n"+
@@ -2454,7 +2254,6 @@
 						"	public static int yield() {\n"+
 						"		return 1;\n"+
 						"	}\n"+
-						"	@SuppressWarnings(\"preview\")\n"+
 						"	public static int foo(int val) {\n"+
 						"		return bar (switch (val) {\n"+
 						"		case 1 : { yield val == 1 ? 2 : 3; }\n"+
@@ -2477,7 +2276,7 @@
 					"X.java",
 					"public class X {\n"+
 					"\n"+
-					"	@SuppressWarnings(\"preview\")\n"+
+					"\n" +
 					"	public static int foo(int val) {\n"+
 					"		int k = switch (val) {\n"+
 					"		case 1 : { break 1; }\n"+
@@ -2522,8 +2321,6 @@
 				"----------\n");
 	}
 	public void testBug547891_02() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n"+
@@ -2550,11 +2347,7 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] {""},
-				options);
+				expectedProblemLog);
 	}
 	public void testBug547891_03() {
 		this.runNegativeTest(
@@ -2581,8 +2374,6 @@
 				"----------\n");
 	}
 	public void testBug547891_04() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n"+
@@ -2608,11 +2399,7 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] {""},
-				options);
+				expectedProblemLog);
 	}
 	public void testBug547891_05() {
 		this.runNegativeTest(
@@ -2639,8 +2426,6 @@
 				"----------\n");
 	}
 	public void testBug547891_06() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n"+
@@ -2671,11 +2456,7 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] {""},
-				options);
+				expectedProblemLog);
 	}
 	public void testBug547891_07() {
 		this.runNegativeTest(
@@ -2702,8 +2483,6 @@
 				"----------\n");
 	}
 	public void testBug547891_08() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n"+
@@ -2734,12 +2513,9 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] {""},
-				options);
-	}	public void testBug547891_09() {
+				expectedProblemLog);
+	}
+	public void testBug547891_09() {
 		this.runNegativeTest(
 				new String[] {
 				"X.java",
@@ -2758,8 +2534,6 @@
 				"----------\n");
 	}
 	public void testBug547891_10() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n"+
@@ -2784,11 +2558,7 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] {""},
-				options);
+				expectedProblemLog);
 	}
 	public void testBug547891_11() {
 		this.runNegativeTest(
@@ -2815,8 +2585,6 @@
 				"----------\n");
 	}
 	public void testBug547891_12() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n"+
@@ -2847,11 +2615,7 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] {""},
-				options);
+				expectedProblemLog);
 	}
 	public void testBug547891_13() {
 		this.runNegativeTest(
@@ -2878,8 +2642,6 @@
 				"----------\n");
 	}
 	public void testBug547891_14() {
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.DISABLED);
 		String[] testFiles = new String[] {
 				"X.java",
 				"public class X {\n"+
@@ -2910,18 +2672,11 @@
 				"----------\n";
 		this.runNegativeTest(
 				testFiles,
-				expectedProblemLog,
-				null,
-				true,
-				new String[] {""},
-				options);
+				expectedProblemLog);
 	}
 	public void testBug547891_15() {
 		if (this.complianceLevel < ClassFileConstants.JDK12)
 			return;
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.WARNING);
 		String message =
 				"----------\n" +
 				"1. ERROR in X.java (at line 6)\n" +
@@ -2944,7 +2699,7 @@
 				"X.java",
 				"public class X {\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public static int foo(int i) {\n"+
 				"		int r = switch(i) {\n"+
 				"			case 1 -> yield();\n"+
@@ -2963,18 +2718,11 @@
 				"	}\n"+
 				"}\n"
 			},
-			message,
-			null,
-			true,
-			new String[] { "--enable-preview"},
-			options);
+			message);
 	}
 	public void testBug547891_16() {
 		if (this.complianceLevel < ClassFileConstants.JDK12)
 			return;
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.WARNING);
 		String message =
 				"----------\n" +
 				"1. ERROR in X.java (at line 9)\n" +
@@ -2992,7 +2740,7 @@
 				"X.java",
 				"public class X {\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public  int foo(int i) {\n"+
 				"		X x = new X();\n"+
 				"		int r = switch(i) {\n"+
@@ -3017,11 +2765,7 @@
 				"	}\n"+
 				"}\n"
 			},
-			message,
-			null,
-			true,
-			new String[] { "--enable-preview"},
-			options);
+			message);
 	}
 	public void testBug547891_17() {
 		runConformTest(
@@ -3029,7 +2773,7 @@
 					"X.java",
 					"public class X {\n"+
 					"\n"+
-					"	@SuppressWarnings(\"preview\")\n"+
+					"	\n"+
 					"	public  static int foo(int i) {\n"+
 					"		int yield = 100;\n"+
 					"		int r = switch(i) {\n"+
@@ -3053,7 +2797,7 @@
 					"X.java",
 					"public class X {\n"+
 					"\n"+
-					"	@SuppressWarnings(\"preview\")\n"+
+					"	\n"+
 					"	public  static int foo(int i) {\n"+
 					"		int yield = 100;\n"+
 					"		int r = switch(i) {\n"+
@@ -3078,7 +2822,7 @@
 					"public class X {\n"+
 					"   static int yield = 100;\n"+
 					"\n"+
-					"	@SuppressWarnings(\"preview\")\n"+
+					"	\n"+
 					"	public  static int foo(int i) {\n"+
 					"		int r = switch(i) {\n"+
 					"			default -> yield - 1;\n"+
@@ -3102,7 +2846,7 @@
 					"public class X {\n"+
 					"   static int yield = 100;\n"+
 					"\n"+
-					"	@SuppressWarnings(\"preview\")\n"+
+					"	\n"+
 					"	public  static int foo(int i) {\n"+
 					"		int r = switch(i) {\n"+
 					"			default -> {yield - 1;}\n"+
@@ -3122,9 +2866,6 @@
 	public void testBug547891_21() {
 		if (this.complianceLevel < ClassFileConstants.JDK12)
 			return;
-		Map<String, String> options = getCompilerOptions();
-		options.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED);
-		options.put(CompilerOptions.OPTION_ReportPreviewFeatures, CompilerOptions.WARNING);
 		String message =
 				"----------\n" +
 				"1. ERROR in X.java (at line 7)\n" +
@@ -3138,7 +2879,7 @@
 				"public class X {\n"+
 				"   int yield = 100;\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public  static int foo(int i) {\n"+
 				"		int r = switch(i) {\n"+
 				"			default -> yield - 1;\n"+
@@ -3153,11 +2894,7 @@
 				"	}\n"+
 				"}"
 			},
-			message,
-			null,
-			true,
-			new String[] { "--enable-preview"},
-			options);
+			message);
 	}
 	public void testBug547891_22() {
 		runConformTest(
@@ -3166,7 +2903,7 @@
 					"public class X {\n"+
 					"\n"+
 					"	static int yield = 100;\n"+
-					"	@SuppressWarnings(\"preview\")\n"+
+					"	\n"+
 					"	public  static int foo(int i) {\n"+
 					"	int r = switch(i) {\n"+
 					"			default -> X.yield();\n"+
@@ -3194,7 +2931,7 @@
 					"public class X {\n"+
 					"\n"+
 					"	static int yield =100 ;\n"+
-					"	@SuppressWarnings(\"preview\")\n"+
+					"	\n"+
 					"	public  static int foo(int i) {\n"+
 					"	int r = switch(i) {\n"+
 					"			default -> X.yield();\n"+
@@ -3222,7 +2959,7 @@
 				"X.java",
 				"public class X {\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public  static int foo(int i) {\n"+
 				"		int yield = 100;\n"+
 				"		int r = switch(i) {\n"+
@@ -3243,7 +2980,7 @@
 				"X.java",
 				"public class X {\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public  static int foo(int i) {\n"+
 				"		int yield = 100;\n"+
 				"		int r = switch(i) {\n"+
@@ -3264,7 +3001,7 @@
 				"X.java",
 				"public class X {\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public  static int foo(int i) {\n"+
 				"		int yield = 100;\n"+
 				"		int r = switch(i) {\n"+
@@ -3285,7 +3022,7 @@
 				"X.java",
 				"public class X {\n"+
 				"\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public  static int foo(int i) {\n"+
 				"		int yield = 100;\n"+
 				"		int r = switch(i) {\n"+
@@ -3305,7 +3042,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public  static int foo(int i) {\n"+
 				"		int yield = 100;\n"+
 				"		int r = switch(i) {\n"+
@@ -3327,7 +3064,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n"+
-				"	@SuppressWarnings(\"preview\")\n"+
+				"	\n"+
 				"	public  static int foo(int i) {\n"+
 				"		int yield = 100;\n"+
 				"		int r = switch(i) {\n"+
@@ -3349,7 +3086,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n"+
-				"  @SuppressWarnings({ \"preview\" })\n"+
+				"  \n"+
 				"  public static int foo(int i) throws Exception {\n"+
 				"    int v = switch (i) {\n"+
 				"        default ->  {if (i > 0) yield 1;\n"+
@@ -3369,7 +3106,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n"+
-				"  @SuppressWarnings({ \"preview\", \"unused\" })\n"+
+				"  @SuppressWarnings({\"unused\" })\n"+
 				"  public static void main(String[] args) {\n"+
 				"	int day =10;\n"+
 				"    int i = switch (day) {\n"+
@@ -3391,7 +3128,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n"+
-				"  @SuppressWarnings({ \"preview\" })\n"+
+				"  \n"+
 				"  public static int foo(int i) throws Exception {\n"+
 				"    int v = switch (i) {\n"+
 				"        default : {yield switch (i) {\n"+
@@ -3413,7 +3150,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n"+
-				"  @SuppressWarnings({ \"preview\" })\n"+
+				"  \n"+
 				"  public static void foo(int i) throws Exception {\n"+
 				"	  System.out.println(switch(0) {\n"+
 				"	  default -> {\n"+
@@ -3481,7 +3218,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n" +
-				"	@SuppressWarnings(\"preview\")\n" +
+				"	\n" +
 				"	public static int foo(int i) throws MyException {\n" +
 				"		int v = -1;\n" +
 				"		try {\n" +
@@ -3516,7 +3253,7 @@
 			new String[] {
 				"X.java",
 				"public class X {\n" +
-				"	@SuppressWarnings({ \"preview\" })\n" +
+				"	\n" +
 				"	public static int foo(int i) throws Exception {\n" +
 				"		int v = switch (i) {\n" +
 				"			case 0 -> switch (i) {\n" +
@@ -3805,7 +3542,7 @@
 			"----------\n");
 	}
 		public void testConversion1() {
-		runConformTestWithJavac(
+		runConformTest(
 				new String[] {
 						"X.java",
 						"public class X {\n" +
@@ -3833,7 +3570,7 @@
 				"int");
 	}
 	public void testConversion2() {
-		runConformTestWithJavac(
+		runConformTest(
 				new String[] {
 						"X.java",
 						"public class X {\n" +
@@ -3861,7 +3598,7 @@
 				"double");
 	}
 	public void testConversion3() {
-		runConformTestWithJavac(
+		runConformTest(
 				new String[] {
 						"X.java",
 						"public class X {\n" +
@@ -3889,7 +3626,7 @@
 				"float");
 	}
 	public void testConversion4() {
-		runConformTestWithJavac(
+		runConformTest(
 				new String[] {
 						"X.java",
 						"public class X {\n" +
@@ -3917,7 +3654,7 @@
 				"int");
 	}
 	public void testConversion5() {
-		runConformTestWithJavac(
+		runConformTest(
 				new String[] {
 						"X.java",
 						"public class X {\n" +
@@ -3941,4 +3678,937 @@
 				},
 				"char");
 	}
+	public void testBug545567_1() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n" +
+						"    @SuppressWarnings({\"finally\"})\n" +
+						"	public static void main(String[] args) {\n" +
+						"    	int t = switch (0) {\n" +
+						"        default -> {\n" +
+						"            try {\n" +
+						"                yield 1;\n" +
+						"            }\n" +
+						"            finally {\n" +
+						"                yield 3;\n" +
+						"            }\n" +
+						"        }\n" +
+						"     };\n" +
+						"     System.out.println(t);\n" +
+						"    }\n" +
+						"}\n" +
+						"\n"
+				},
+				"3");
+	}
+	public void testBug545567_2() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n" +
+						"    @SuppressWarnings({ \"finally\"})\n" +
+						"	public static void main(String[] args) {\n" +
+						"    	float t = switch (0) {\n" +
+						"        default -> {\n" +
+						"            try {\n" +
+						"                yield 1;\n" +
+						"            }\n" +
+						"            finally {\n" +
+						"                yield 3;\n" +
+						"            }\n" +
+						"        }\n" +
+						"     };\n" +
+						"     System.out.println(t);\n" +
+						"    }\n" +
+						"}\n" +
+						"\n"
+				},
+				"3.0");
+	}
+	public void testBug545567_3() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n" +
+						"    @SuppressWarnings({ \"finally\"})\n" +
+						"	public static void main(String[] args) {\n" +
+						"    	String t = switch (0) {\n" +
+						"        default -> {\n" +
+						"            try {\n" +
+						"                yield \"one\";\n" +
+						"            }\n" +
+						"            finally {\n" +
+						"                yield \"three\";\n" +
+						"            }\n" +
+						"        }\n" +
+						"     };\n" +
+						"     System.out.println(t);\n" +
+						"    }\n" +
+						"}\n" +
+						"\n"
+				},
+				"three");
+	}
+	public void testBug545567_4() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n" +
+						"    @SuppressWarnings({\"finally\" })\n" +
+						"	public static void main(String[] args) {\n" +
+						"    	String t = switch (0) {\n" +
+						"        default -> {\n" +
+						"            try {\n" +
+						"                yield \"one\";\n" +
+						"            }\n" +
+						"            catch (Exception ex) {\n" +
+						"                yield \"two\";\n" +
+						"            }\n" +
+						"            finally {\n" +
+						"                yield \"three\";\n" +
+						"            }\n" +
+						"        }\n" +
+						"     };\n" +
+						"     System.out.println(t);\n" +
+						"    }\n" +
+						"}\n" +
+						"\n"
+				},
+				"three");
+	}
+	public void testBug545567_5() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n" +
+						"    @SuppressWarnings({ \"finally\" })\n" +
+						"	public static void main(String[] args) {\n" +
+						"    	String t = switch (0) {\n" +
+						"        default -> {\n" +
+						"            try {\n" +
+						"                yield \"one\";\n" +
+						"            }\n" +
+						"            catch (Exception ex) {\n" +
+						"            }\n" +
+						"            yield \"zero\";\n" +
+						"        }\n" +
+						"     };\n" +
+						"     System.out.print(t);\n" +
+						"    }\n" +
+						"}\n" +
+						"\n"
+				},
+				"one");
+	}
+	public void testBug545567_6() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n" +
+						"    @SuppressWarnings({ \"finally\"})\n" +
+						"	public static void main(String[] args) {\n" +
+						"    	(new X()).foo(switch (0) {\n" +
+						"        default -> {\n" +
+						"            try {\n" +
+						"                yield \"one\";\n" +
+						"            }\n" +
+						"            finally {\n" +
+						"            	yield \"zero\";\n" +
+						"            }\n" +
+						"        }\n" +
+						"     });\n" +
+						"    }\n" +
+						"     public void foo (String str) {\n" +
+						"     	System.out.print(str);\n" +
+						"    }\n" +
+						"}\n" +
+						"\n"
+				},
+				"zero");
+	}
+	public void testBug545567_7() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n" +
+						"    @SuppressWarnings({ \"finally\"})\n" +
+						"	public static void main(String[] args) {\n" +
+						"    	System.out.print(switch (0) {\n" +
+						"        default -> {\n" +
+						"            try {\n" +
+						"                yield \"one\";\n" +
+						"            }\n" +
+						"            finally {\n" +
+						"            	yield \"zero\";\n" +
+						"            }\n" +
+						"        }\n" +
+						"     });\n" +
+						"    }\n" +
+						"}\n" +
+						"\n"
+				},
+				"zero");
+	}
+	public void testBug545567_8() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n" +
+						"    @SuppressWarnings({ \"finally\"})\n" +
+						"	public static void main(String[] args) {\n" +
+						"    	System.out.print(switch (0) {\n" +
+						"        default -> {\n" +
+						"            try {\n" +
+						"                yield 1;\n" +
+						"            }\n" +
+						"            catch (Exception ex) {\n" +
+						"                yield 2;\n" +
+						"            }\n" +
+						"            finally {\n" +
+						"                yield 3;\n" +
+						"            }\n" +
+						"        }\n" +
+						"     });\n" +
+						"    }\n" +
+						"}\n" +
+						"\n"
+				},
+				"3");
+	}
+	public void testBug545567_9() {
+		runConformTest(
+				new String[] {
+					"X.java",
+					"public class X {\n"+
+					"       public static void main(String[] args) {\n"+
+					"       new X().foo(args);\n"+
+					"    }\n"+
+					"    @SuppressWarnings({ \"finally\" })\n"+
+					"       public void foo(String[] args) {\n"+
+					"       int t = switch (0) {\n"+
+					"        default -> {\n"+
+					"             try {\n"+
+					"                yield 1;\n"+
+					"            }\n"+
+					"            catch (Exception ex) {\n"+
+					"                yield 2; \n"+
+					"            }\n"+
+					"            finally {\n"+
+					"                yield 3;\n"+
+					"            }\n"+
+					"        }       \n"+
+					"     };\n"+
+					"       t += switch (0) {\n"+
+					"    default -> {\n"+
+					"         try {\n"+
+					"            yield 1;\n"+
+					"        }\n"+
+					"        catch (Exception ex) {\n"+
+					"            yield 2; \n"+
+					"        }\n"+
+					"        finally {\n"+
+					"            yield 3;\n"+
+					"        }\n"+
+					"    }       \n"+
+					" };\n"+
+					"     System.out.println(t);\n"+
+					"    } \n"+
+					"}\n"
+				},
+				"6");
+	}
+	public void testBug545567_10() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n"+
+								"       public static void main(String[] args) {\n"+
+								"       new X().foo(args);\n"+
+								"    }\n"+
+								"    @SuppressWarnings({ \"finally\" })\n"+
+								"       public void foo(String[] args) {\n"+
+								"       int k = 0;\n"+
+								"       int t = switch (0) {\n"+
+								"        default -> {\n"+
+								"             try {\n"+
+								"                k = switch (0) {\n"+
+								"                   default -> {\n"+
+								"                        try {\n"+
+								"                           yield 10;\n"+
+								"                       }\n"+
+								"                       catch (Exception ex) {\n"+
+								"                           yield 20; \n"+
+								"                       }\n"+
+								"                       finally {\n"+
+								"                           yield 30;\n"+
+								"                       }\n"+
+								"                   }       \n"+
+								"                };\n"+
+								"            }\n"+
+								"            catch (Exception ex) {\n"+
+								"                yield 2; \n"+
+								"            }\n"+
+								"            finally {\n"+
+								"                yield 3;\n"+
+								"            }\n"+
+								"        }       \n"+
+								"     };\n"+
+								"     System.out.println(t + k);\n"+
+								"    } \n"+
+								"}\n"
+				},
+				"33");
+	}
+	public void testBug545567_11() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n"+
+								"       public static void main(String[] args) {\n"+
+								"       new X().foo(args);\n"+
+								"    }\n"+
+								"    @SuppressWarnings({ \"finally\" })\n"+
+								"       public void foo(String[] args) {\n"+
+								"       int k = 0;\n"+
+								"       int t = switch (0) {\n"+
+								"        default -> {\n"+
+								"             try {\n"+
+								"                k = switch (0) {\n"+
+								"                   default -> {\n"+
+								"                        try {\n"+
+								"                           yield 10;\n"+
+								"                       }\n"+
+								"                       catch (Exception ex) {\n"+
+								"                           yield 20; \n"+
+								"                       }\n"+
+								"                   }       \n"+
+								"                };\n"+
+								"            }\n"+
+								"            catch (Exception ex) {\n"+
+								"                yield 2; \n"+
+								"            }\n"+
+								"            finally {\n"+
+								"                yield 3;\n"+
+								"            }\n"+
+								"        }       \n"+
+								"     };\n"+
+								"     System.out.println(t + k);\n"+
+								"    } \n"+
+								"}\n"
+				},
+				"13");
+	}
+	public void testBug545567_12() {
+		runConformTest(
+				new String[] {
+						"X.java",
+						"public class X {\n"+
+								"       public static void main(String[] args) {\n"+
+								"       new X().foo(args);\n"+
+								"    }\n"+
+								"    @SuppressWarnings({ \"finally\" })\n"+
+								"       public void foo(String[] args) {\n"+
+								"       int k = 0;\n"+
+								"       int t = switch (0) {\n"+
+								"        default -> {\n"+
+								"             try {\n"+
+								"                k = switch (0) {\n"+
+								"                   default -> {\n"+
+								"                        try {\n"+
+								"                           yield 10;\n"+
+								"                       }\n"+
+								"                       catch (Exception ex) {\n"+
+								"                           yield 20; \n"+
+								"                       }\n"+
+								"                       finally {\n"+
+								"                           yield 30;\n"+
+								"                       }\n"+
+								"                   }       \n"+
+								"                };\n"+
+								"            }\n"+
+								"            finally {\n"+
+								"                yield 3;\n"+
+								"            }\n"+
+								"        }       \n"+
+								"     };\n"+
+								"     System.out.println(t + k);\n"+
+								"    } \n"+
+								"}\n"
+				},
+				"33");
+	}
+	public void testBug545567_13() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"        System.out.println(switch (1) {\n"+
+				"        case 0 -> {yield 100;}\n"+
+				"           default -> {  \n"+
+				"                try {\n"+
+				"                   yield 1;\n"+
+				"               }\n"+
+				"               catch (Exception ex) {\n"+
+				"                   yield 2;\n"+
+				"                }\n"+
+				"               finally {\n"+
+				"                   yield 3; \n"+
+				"               }\n"+
+				"           }  \n"+
+				"        } + switch (10) {\n"+
+				"        case 0 -> {yield 1024;}\n"+
+				"        default -> {  \n"+
+				"             try {\n"+
+				"                yield 10;\n"+
+				"            }\n"+
+				"            catch (Exception ex) {\n"+
+				"                yield 20;\n"+
+				"             }\n"+
+				"            finally {\n"+
+				"                yield 30; \n"+
+				"            }\n"+
+				"        }  \n"+
+				"     });  \n"+
+				"    }\n"+
+				"}\n"
+			},
+			"33");
+	}
+	public void testBug545567_14() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"        System.out.println(switch (1) {\n"+
+				"        case 0 -> {yield 100;}\n"+
+				"           default -> {  \n"+
+				"                try {\n"+
+				"                   yield 1;\n"+
+				"               }\n"+
+				"               catch (Exception ex) {\n"+
+				"                   yield 2;\n"+
+				"                }\n"+
+				"               finally {\n"+
+				"                 yield switch (10) {\n"+
+				"                   case 0 -> {yield 1024;}\n"+
+				"                   default -> {  \n"+
+				"                        try {\n"+
+				"                           yield 10;\n"+
+				"                       }\n"+
+				"                       catch (Exception ex) {\n"+
+				"                           yield 20;\n"+
+				"                        }\n"+
+				"                       finally {\n"+
+				"                           yield 30; \n"+
+				"                       }\n"+
+				"                   }  \n"+
+				"                };               }\n"+
+				"           }  \n"+
+				"        });  \n"+
+				"    }\n"+
+				"}\n"
+			},
+			"30");
+	}
+	public void testBug545567_15() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"        System.out.println(switch (1) {\n"+
+				"        case 0 -> {yield 100;}\n"+
+				"           default -> {  \n"+
+				"                try {\n"+
+				"                       yield 1;\n"+
+				"               }\n"+
+				"               catch (Exception ex) {\n"+
+				"                   yield 2;\n"+
+				"                }\n"+
+				"               finally {\n"+
+				"                   System.out.println(switch (1) {\n"+
+				"                    default -> {yield 100;}});\n"+
+				"                  yield 1;\n"+
+				"                }\n"+
+				"           }  \n"+
+				"        });  \n"+
+				"    }\n"+
+				"}\n"
+			},
+			"100\n1");
+	}
+	public void testBug545567_16() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"        System.out.println(switch (1) {\n"+
+				"        case 0 -> {yield 100;}\n"+
+				"           default -> {   \n"+
+				"                try {\n"+
+				"                    yield switch (10) {\n"+
+				"                    case 0 -> {yield 1024;}\n"+
+				"                    default -> {   \n"+
+				"                         try {\n"+
+				"                            yield 10; \n"+
+				"                        }   \n"+
+				"                        catch (Exception ex) {\n"+
+				"                            yield 20; \n"+
+				"                         }   \n"+
+				"                        finally {\n"+
+				"                            yield 30; \n"+
+				"                        }   \n"+
+				"                    }   \n"+
+				"                 };                 \n"+
+				"               }   \n"+
+				"               catch (Exception ex) {\n"+
+				"                   yield 2;\n"+
+				"                }   \n"+
+				"               finally {\n"+
+				"                 yield 3;               }   \n"+
+				"           }   \n"+
+				"        });  \n"+
+				"    }   \n"+
+				"}\n"
+			},
+			"3");
+	}
+	public void testBug545567_17() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X { \n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"        System.out.println(switch (1) {\n"+
+				"        case 0 -> {yield 100;}\n"+
+				"           default -> {   \n"+
+				"                try {\n"+
+				"                    System.out.println( switch (10) {\n"+
+				"                    case 0 -> {yield 1024;}\n"+
+				"                    default -> {   \n"+
+				"                         try {\n"+
+				"                            yield 10; \n"+
+				"                        }   \n"+
+				"                        catch (Exception ex) {\n"+
+				"                            yield 20; \n"+
+				"                         }    \n"+
+				"                        finally {\n"+
+				"                            yield 30; \n"+
+				"                        }   \n"+
+				"                    }   \n"+
+				"                 }); \n"+
+				"                   yield 1;   \n"+
+				"               }   \n"+
+				"               catch (Exception ex) {\n"+
+				"                   yield 2;\n"+
+				"                }   \n"+
+				"               finally {\n"+
+				"                 yield 3;               }   \n"+
+				"           }   \n"+
+				"        });  \n"+
+				"    }   \n"+
+				"}\n"
+			},
+			"30\n"+
+			"3");
+	}
+	public void testBug545567_18() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X { \n"+
+				"       public static void main(String[] args) {\n"+
+				"       new X().foo(args);\n"+
+				"    }   \n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public void foo(String[] args) {\n"+
+				"       int t = 0;\n"+
+				"       t += switch (200) {\n"+
+				"       case 0 -> {yield 100;}\n"+
+				"        default -> {\n"+
+				"             try {\n"+
+				"                yield 1;\n"+
+				"            }   \n"+
+				"            catch (Exception ex) {\n"+
+				"                yield 2;  \n"+
+				"            }   \n"+
+				"            finally {\n"+
+				"                yield 3;\n"+
+				"            }   \n"+
+				"        }\n"+
+				"     };\n"+
+				"     System.out.println(t);\n"+
+				"    }   \n"+
+				"}\n"
+			},
+			"3");
+	}
+	public void testBug545567_19() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"        System.out.println(switch (1) {\n"+
+				"           default -> {   \n"+
+				"                try {  \n"+
+				"                    yield switch (10) {\n"+
+				"                    default -> {   \n"+
+				"                         try {\n"+
+				"                            yield 10; \n"+
+				"                        }   \n"+
+				"                        catch (Exception ex) {\n"+
+				"                            yield 20; \n"+
+				"                         }   \n"+
+				"                        finally {\n"+
+				"                            yield 30; \n"+
+				"                         }   \n"+
+				"                    }   \n"+
+				"                 };                 \n"+
+				"               }   \n"+
+				"               catch (Exception ex) {\n"+
+				"                   yield 2;\n"+
+				"                }   \n"+
+				"               finally {\n"+
+				"                 yield 3;               }     \n"+
+				"           }   \n"+
+				"        });   \n"+
+				"    }   \n"+
+				"} \n"+
+				"\n"
+			},
+			"3");
+	}
+	// test with Autocloseable
+	public void testBug545567_20() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"        System.out.println(switch (1) {\n"+
+				"           default -> {   \n"+
+				"                try(Y y = new Y();) { \n"+
+				"                       yield  1;\n"+
+				"                }\n"+
+				"               catch (Exception ex) {\n"+
+				"                   yield 2;\n"+
+				"                }   \n"+
+				"               finally {\n"+
+				"                 yield 3;\n" +
+				"               }\n"+
+				"           }\n"+
+				"        });\n"+
+				"    }\n"+
+				"} \n"+
+				"class Y implements AutoCloseable {\n"+
+				"       @Override\n"+
+				"       public void close() throws Exception {\n"+
+				"               // do nothing\n"+
+				"       }\n"+
+				"}\n"
+			},
+			"3");
+	}
+	public void testBug545567_21() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"    @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"        System.out.println(switch (1) {\n"+
+				"           default -> {   \n"+
+				"                try(Y y = new Y();) { \n"+
+				"                       yield  10;\n"+
+				"                }\n"+
+				"               catch (Exception ex) {\n"+
+				"                }   \n"+
+				"                 yield 3;\n" +
+				"           }\n"+
+				"        });\n"+
+				"    }\n"+
+				"} \n"+
+				"class Y implements AutoCloseable {\n"+
+				"       @Override\n"+
+				"       public void close() throws Exception {\n"+
+				"               // do nothing\n"+
+				"       }\n"+
+				"}\n"
+			},
+			"10");
+	}
+	public void testBug545567_22() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"       @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"               int argslength = args.length;\n"+
+				"               int t = switch (1) {\n"+
+				"                       case 0 -> {\n"+
+				"                               yield 100;\n"+
+				"                       }\n"+
+				"                       default -> {\n"+
+				"                               try (Y y = new Y();){\n"+
+				"                                               if (argslength < 1)\n"+
+				"                                               yield 10;\n"+
+				"                                               else\n"+
+				"                                                       yield 12;\n"+
+				"                               } catch (Exception ex) {\n"+
+				"                                       yield 2;\n"+
+				"                               } finally {\n"+
+				"                                       yield 3;\n"+
+				"                               }\n"+
+				"                       }\n"+
+				"               };   \n"+
+				"               System.out.println(t);\n"+
+				"       }\n"+
+				"}\n"+
+				"      \n"+
+				"class Y implements AutoCloseable {\n"+
+				"       @Override\n"+
+				"       public void close() throws Exception {\n"+
+				"               // do nothing\n"+
+				"       } \n"+
+				"}\n"
+			},
+			"3");
+	}
+	public void testBug545567_23() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				"       @SuppressWarnings({ \"finally\" })\n"+
+				"       public static void main(String[] args) {\n"+
+				"               int t = switch (1) {\n"+
+				"                       case 0 -> {\n"+
+				"                               yield 100;\n"+
+				"                       }\n"+
+				"                       default -> {\n"+
+				"                               try {\n"+
+				"                                       throw new Exception();\n"+
+				"                               } catch (Exception ex) {\n"+
+				"                                       yield 2;\n"+
+				"                               } finally {\n"+
+				"                                       yield 3;\n"+
+				"                               }\n"+
+				"                       }\n"+
+				"               };   \n"+
+				"               System.out.println(t);\n"+
+				"       }\n"+
+				"}\n"+
+				"      \n"+
+				"class Y implements AutoCloseable {\n"+
+				"       @Override\n"+
+				"       public void close() throws Exception {\n"+
+				"               // do nothing\n"+
+				"       } \n"+
+				"}\n"
+			},
+			"3");
+	}
+	public void testBug545567_24() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				" public static void main(String[] args) {\n"+
+				"   new X().foo();\n"+
+				" }\n"+
+				" @SuppressWarnings({ \"finally\" })\n"+
+				" public  void foo() {\n"+
+				"   int t = switch (1) {\n"+
+				"     case 0 -> {\n"+
+				"       yield bar(100);\n"+
+				"     }\n"+
+				"     default -> {\n"+
+				"       final Y y2 = new Y();\n"+
+				"       try (Y y = new Y(); y2){\n"+
+				"           yield bar(10);\n"+
+				"       } catch (Exception ex) {\n"+
+				"         yield bar(2);\n"+
+				"       } finally {\n"+
+				"         yield bar(3);\n"+
+				"       }\n"+
+				"     }\n"+
+				"   };   \n"+
+				"   System.out.println(t);\n"+
+				" }\n"+
+				" public int bar(int i) {\n"+
+				"   return i;\n"+
+				" }\n"+
+				"}\n"+
+				"\n"+
+				"class Y implements AutoCloseable {\n"+
+				" @Override\n"+
+				" public void close() throws Exception {\n"+
+				"   // do nothing\n"+
+				" }\n"+
+				"}"
+			},
+			"3");
+	}
+	public void testBug545567_25() {
+		runConformTest(
+			new String[] {
+				"X.java",
+				"public class X {\n"+
+				" public static void main(String[] args) {\n"+
+				"   new X().foo();\n"+
+				" }\n"+
+				" @SuppressWarnings({ \"finally\" })\n"+
+				" public  void foo() {\n"+
+				"   int t = switch (1) {\n"+
+				"     case 0 -> {\n"+
+				"       yield bar(100);\n"+
+				"     }\n"+
+				"     default -> {\n"+
+				"       final Y y2 = new Y();\n"+
+				"       try (Y y = new Y(); y2){\n"+
+				"           yield new X().bar(10);\n"+
+				"       } catch (Exception ex) {\n"+
+				"         yield bar(2);\n"+
+				"       } finally {\n"+
+				"         yield new X().bar(3);\n"+
+				"       }\n"+
+				"     }\n"+
+				"   };   \n"+
+				"   System.out.println(t);\n"+
+				" }\n"+
+				" public int bar(int i) {\n"+
+				"   return i;\n"+
+				" }\n"+
+				"}\n"+
+				"\n"+
+				"class Y implements AutoCloseable {\n"+
+				" @Override\n"+
+				" public void close() throws Exception {\n"+
+				"   // do nothing\n"+
+				" }\n"+
+				"}"
+			},
+			"3");
+	}
+	public void testBug561762_001() {
+		this.runNegativeTest(
+				new String[] {
+					"X.java",
+					"public class X {\n"+
+					"       public static void main(String[] args) {\n"+
+					"               new X().foo(1);\n"+
+					"       }\n"+
+					"       @SuppressWarnings({ \"finally\" })\n"+
+					"       public  void foo(int i) {\n"+
+					"               int t = switch (1) { \n"+
+					"                       case 0 -> {\n"+
+					"                               yield 0;\n"+
+					"                       }\n"+
+					"                       default -> {\n"+
+					"                               I lam2 = (x) ->  {\n"+
+					"                                               yield 2000;\n"+
+					"                               };\n"+
+					"                               yield 1;\n"+
+					"                       }\n"+
+					"               };\n"+
+					"               System.out.println(t);\n"+
+					"       }\n"+
+					"}\n"+
+					"interface I {\n"+
+					"       public int apply(int i);\n"+
+					"}\n",
+				},
+				"----------\n" +
+				"1. ERROR in X.java (at line 13)\n" +
+				"	yield 2000;\n" +
+				"	^^^^^^^^^^^\n" +
+				"yield outside of switch expression\n" +
+				"----------\n");
+
+	}
+	public void testBug561766_001() {
+		this.runNegativeTest(
+				new String[] {
+					"X.java",
+					"public class X {\n"+
+					"    @SuppressWarnings({ \"finally\" })\n"+
+					"       public static void main(String[] args) {\n"+
+					"        System.out.println(switch (1) {\n"+
+					"        case 0 -> {yield switch(0) {}\n"+
+					"        } \n"+
+					"           default -> {\n"+
+					"                  yield 3;\n"+
+					"           }\n"+
+					"        });\n"+
+					"    }\n"+
+					"}\n",
+				},
+				"----------\n" +
+				"1. ERROR in X.java (at line 5)\n" +
+				"	case 0 -> {yield switch(0) {}\n" +
+				"	                            ^\n" +
+				"Syntax error, insert \";\" to complete BlockStatements\n" +
+				"----------\n");
+
+	}
+	public void testBug561766_002() {
+		this.runNegativeTest(
+				new String[] {
+					"X.java",
+					"public class X {\n"+
+					"    @SuppressWarnings({ \"finally\" })\n"+
+					"       public static void main(String[] args) {\n"+
+					"        System.out.println(switch (1) {\n"+
+					"        case 0 -> {yield 100;}\n"+
+					"           default -> {  \n"+
+					"                try {\n"+
+					"                       yield switch(0) {\n"+
+					"               }\n"+
+					"               catch (Exception ex) {\n"+
+					"                   yield 2;\n"+
+					"                }\n"+
+					"               finally {\n"+
+					"                  yield 3;\n"+
+					"                }\n"+
+					"           }  \n"+
+					"        });  \n"+
+					"    }\n"+
+					"}\n",
+				},
+				"----------\n" +
+				"1. ERROR in X.java (at line 9)\n" +
+				"	}\n" +
+				"	^\n" +
+				"Syntax error, insert \";\" to complete YieldStatement\n" +
+				"----------\n" +
+				"2. ERROR in X.java (at line 9)\n" +
+				"	}\n" +
+				"	^\n" +
+				"Syntax error, insert \"}\" to complete Block\n" +
+				"----------\n" +
+				"3. ERROR in X.java (at line 18)\n" +
+				"	}\n" +
+				"	^\n" +
+				"Syntax error on token \"}\", delete this token\n" +
+				"----------\n" +
+				"4. ERROR in X.java (at line 19)\n" +
+				"	}\n" +
+				"	^\n" +
+				"Syntax error, insert \"}\" to complete ClassBody\n" +
+				"----------\n");
+
+	}
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java
index 3e7a0f8..ec1a41f 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TryStatementTest.java
@@ -43,6 +43,7 @@
 public static Test suite() {
 	return buildAllCompliancesTestSuite(testClass());
 }
+@Override
 protected Map getCompilerOptions() {
 	Map compilerOptions = super.getCompilerOptions();
 	compilerOptions.put(CompilerOptions.OPTION_ShareCommonFinallyBlocks, CompilerOptions.ENABLED);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TypeAnnotationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TypeAnnotationTest.java
index 3d4571d..1021a16 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TypeAnnotationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TypeAnnotationTest.java
@@ -27,8 +27,11 @@
 
 import java.io.File;
 import java.util.Map;
+
+import org.eclipse.jdt.core.tests.compiler.regression.AbstractRegressionTest.JavacTestOptions.JavacHasABug;
 import org.eclipse.jdt.core.util.ClassFileBytesDisassembler;
 import org.eclipse.jdt.internal.compiler.Compiler;
+import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
 import org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
@@ -53,6 +56,7 @@
 	}
 
 	// Enables the tests to run individually
+	@Override
 	protected Map getCompilerOptions() {
 		Map defaultOptions = super.getCompilerOptions();
 		defaultOptions.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_8);
@@ -3301,7 +3305,8 @@
 	}
 
 	public void test066_codeblocks_methodReference() throws Exception {
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 			new String[] {
 				"X.java",
 				"interface I {\n" +
@@ -3321,8 +3326,21 @@
 				"@interface B {\n" +
 				"	int value() default -1;\n" +
 				"}\n",
-		},
-		"");
+			};
+		if (this.complianceLevel < ClassFileConstants.JDK9) { // luckily introduction of ecj warning and javac crash coincide
+			runner.runConformTest();
+		} else {
+			runner.expectedCompilerLog =
+				"----------\n" +
+				"1. WARNING in X.java (at line 6)\n" +
+				"	I i = @B(1) int @B(2)[]::<String>clone;\n" +
+				"	                          ^^^^^^\n" +
+				"Unused type arguments for the non generic method clone() of type Object; it should not be parameterized with arguments <String>\n" +
+				"----------\n";
+			runner.javacTestOptions = JavacHasABug.JavacThrowsAnExceptionForJava_since9_EclipseWarns;
+			runner.runWarningTest();
+		}
+
 		String expectedOutput =
 			"    RuntimeVisibleTypeAnnotations: \n" +
 			"      #30 @B(\n" +
@@ -4235,7 +4253,8 @@
 
 	// as of https://bugs.openjdk.java.net/browse/JDK-8231435 no-@Target annotations are legal also in TYPE_USE/TYPE_PARAMETER position
 	public void test083_multiuseAnnotations() throws Exception {
-		this.runConformTest(
+		Runner runner = new Runner();
+		runner.testFiles =
 			new String[] {
 				"X.java",
 				"@interface Annot {\n" +
@@ -4246,8 +4265,11 @@
 				"	public void foo(String @Annot(3)[] args) {\n" +
 				"	}\n" +
 				"}\n",
-		},
-		"");
+			};
+		runner.expectedCompilerLog = "";
+		runner.javacTestOptions = JavacTestOptions.JavacHasABug.JavacBug8231436;
+		runner.runConformTest();
+
 		String expectedOutput =
 				"  // Field descriptor #6 Ljava/lang/String;\n" +
 				"  java.lang.String f;\n" +
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UtilTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UtilTest.java
index fd0d024..4c1b820 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UtilTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UtilTest.java
@@ -69,6 +69,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.compiler.regression.AbstractRegressionTest#setUp()
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	this.camelCaseErrors = new StringBuffer();
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/VarargsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/VarargsTest.java
index 115954b..52bce52 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/VarargsTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/VarargsTest.java
@@ -50,6 +50,7 @@
 	public static Class testClass() {
 		return VarargsTest.class;
 	}
+	@Override
 	protected String intersection(String... types) {
 		if (this.complianceLevel >= ClassFileConstants.JDK1_8)
 			return String.join(" & ", types);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/CodeSnippetTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/CodeSnippetTest.java
index 3d9af2c..f9e2c48 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/CodeSnippetTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/CodeSnippetTest.java
@@ -42,6 +42,7 @@
  */
 private IRequestor getNoResultRequestor() {
 	return new Requestor() {
+		@Override
 		public void acceptResult(EvaluationResult result) {
 			assertTrue("No result", false);
 		}
@@ -53,6 +54,7 @@
 public static Test suite() {
 	return setupSuite(testClass());
 }
+@Override
 public Map getCompilerOptions() {
 	Map defaultOptions = super.getCompilerOptions();
 	defaultOptions.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.DO_NOT_GENERATE);
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/DebugEvaluationSetup.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/DebugEvaluationSetup.java
index 74f1dcf..aea34aa 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/DebugEvaluationSetup.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/DebugEvaluationSetup.java
@@ -45,6 +45,7 @@
 		super(complianceLevel);
 	}
 
+	@Override
 	protected void setUp() {
 		if (this.context == null) {
 			// Launch VM in evaluation mode
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/DebugEvaluationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/DebugEvaluationTest.java
index 836727a..0ba5a10 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/DebugEvaluationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/DebugEvaluationTest.java
@@ -43,6 +43,7 @@
 //		TESTS_NAMES = new String[] { "test069" };
 	}
 	class DebugRequestor extends Requestor {
+		@Override
 		public boolean acceptClassFiles(org.eclipse.jdt.internal.compiler.ClassFile[] classFiles, char[] codeSnippetClassName) {
 			if (DebugEvaluationTest.this.jdiStackFrame == null) {
 				return super.acceptClassFiles(classFiles, codeSnippetClassName);
@@ -165,6 +166,7 @@
 	/**
 	 * Generate local variable attribute for these tests.
 	 */
+	@Override
 	public Map getCompilerOptions() {
 		Map options = super.getCompilerOptions();
 		options.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.GENERATE);
@@ -173,6 +175,7 @@
 		options.put(CompilerOptions.OPTION_ReportRawTypeReference, CompilerOptions.IGNORE);
 		return options;
 	}
+	@Override
 	public void initialize(CompilerTestSetup setUp) {
 		super.initialize(setUp);
 		this.jdiVM = ((DebugEvaluationSetup)setUp).vm;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/EvaluationSetup.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/EvaluationSetup.java
index 673663b..c2838b7 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/EvaluationSetup.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/EvaluationSetup.java
@@ -46,6 +46,7 @@
 		super(complianceLevel);
 	}
 
+	@Override
 	protected void setUp() {
 		if (this.context == null) { // non null if called from subclass
 			try (ServerSocket server = new ServerSocket(0)) {
@@ -101,6 +102,7 @@
 
 	protected void startReader(String name, final InputStream in, final PrintStream out) {
 		(new Thread(name) {
+			@Override
 			public void run() {
 				int read = 0;
 				while (read != -1) {
@@ -117,6 +119,7 @@
 		}).start();
 	}
 
+	@Override
 	final protected void tearDown() {
 		if (this.context != null) {
 			LocalVirtualMachine vm = this.launchedVM;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/EvaluationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/EvaluationTest.java
index 79c9a27..07cdadb 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/EvaluationTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/EvaluationTest.java
@@ -16,6 +16,7 @@
 import java.io.File;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Map;
 
 import junit.framework.Test;
@@ -434,6 +435,7 @@
 		class ResultRequestor extends Requestor {
 			ArrayList collectedProblems = new ArrayList();
 			boolean gotDisplayString = false;
+			@Override
 			public void acceptResult(EvaluationResult result) {
 				assertEquals("Evaluation type", EvaluationResult.T_CODE_SNIPPET, result.getEvaluationType());
 				//assertEquals("Evaluation id", codeSnippet, result.getEvaluationID());
@@ -444,9 +446,7 @@
 				} else {
 					assertTrue("Has problem", result.hasProblems());
 					CategorizedProblem[] problems = result.getProblems();
-					for (int i = 0; i < problems.length; i++) {
-						this.collectedProblems.add(problems[i]);
-					}
+					this.collectedProblems.addAll(Arrays.asList(problems));
 				}
 			}
 		}
@@ -475,6 +475,7 @@
 		fail(formatted + "expected:<" + expectedString + "> but was:<" + actualString + ">");
 	}
 
+	@Override
 	public Map getCompilerOptions() {
 		Map defaultOptions = super.getCompilerOptions();
 		defaultOptions.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.DO_NOT_GENERATE);
@@ -496,6 +497,7 @@
 		return new DefaultProblemFactory(java.util.Locale.getDefault());
 	}
 
+	@Override
 	public void initialize(CompilerTestSetup setUp) {
 		super.initialize(setUp);
 		EvaluationSetup evalSetUp = (EvaluationSetup)setUp;
@@ -517,6 +519,7 @@
 	protected void installVariables(final int expectedNumber) {
 		class InstallRequestor extends Requestor {
 			int count = 0;
+			@Override
 			public void acceptResult(EvaluationResult result) {
 				assertTrue("Has problems", !result.hasProblems());
 				assertTrue("Has value", result.hasValue());
@@ -551,6 +554,7 @@
 		this.env = new FileSystem(Util.concatWithClassLibs(EvaluationSetup.EVAL_DIRECTORY + File.separator + LocalVMLauncher.REGULAR_CLASSPATH_DIRECTORY, false), new String[0], encoding);
 	}
 
+	@Override
 	public void stop() {
 		if (this.target != null) {
 			this.target.disconnect(); // Close the socket first so that the OS resource has a chance to be freed.
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SanityTestEvaluationContext.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SanityTestEvaluationContext.java
index 90ae3ad..ded86dd 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SanityTestEvaluationContext.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SanityTestEvaluationContext.java
@@ -101,6 +101,7 @@
 
 		// Evaluate them
 		IRequestor requestor = new Requestor() {
+			@Override
 			public void acceptResult(EvaluationResult result) {
 				assertTrue("No problems with the imports", !result.hasProblems());
 			}
@@ -122,6 +123,7 @@
 
 		// Install it
 		class NoPbRequestor extends Requestor {
+			@Override
 			public void acceptResult(EvaluationResult result) {
 				assertTrue("No problems with the variable", !result.hasProblems());
 			}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SanityTestEvaluationResult.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SanityTestEvaluationResult.java
index 482f04a..b7a2709 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SanityTestEvaluationResult.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SanityTestEvaluationResult.java
@@ -36,9 +36,11 @@
  * Initializes this test with an evaluation result coming from the
  * evaluation of the following code snippet: "return 1;".
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	IRequestor requestor = new Requestor() {
+		@Override
 		public void acceptResult(EvaluationResult evalResult) {
 			SanityTestEvaluationResult.this.result = evalResult;
 		}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SimpleTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SimpleTest.java
index bac50d9..84f5d7b 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SimpleTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/SimpleTest.java
@@ -254,6 +254,7 @@
 		this.launchedVM = launcher.launch();
 
 		(new Thread() {
+			@Override
 			public void run() {
 				try {
 					java.io.InputStream in = SimpleTest.this.launchedVM.getInputStream();
@@ -274,6 +275,7 @@
 		}).start();
 
 		(new Thread() {
+			@Override
 			public void run() {
 				try {
 					java.io.InputStream in = SimpleTest.this.launchedVM.getErrorStream();
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/CodeSnippetClassLoader.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/CodeSnippetClassLoader.java
index 5492f84..17296cd 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/CodeSnippetClassLoader.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/CodeSnippetClassLoader.java
@@ -44,6 +44,7 @@
  * If only  the class definition is known to this runner, makes it a class and returns it.
  * Otherwise delegates to the real class loader.
  */
+@Override
 protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
 	if (DEVELOPMENT_MODE) {
 		try {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/CodeSnippetRunner.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/CodeSnippetRunner.java
index 0c762a3..8243de2 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/CodeSnippetRunner.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/CodeSnippetRunner.java
@@ -219,6 +219,7 @@
 		theRunner.start();
 	} else {
 		Thread server = new Thread() {
+			@Override
 			public void run() {
 				theRunner.start();
 			}
@@ -347,6 +348,7 @@
  */
 void runCodeSnippet(final Object snippet) {
 	Thread thread = new Thread() {
+		@Override
 		public void run() {
 			try {
 				try {
@@ -382,6 +384,7 @@
  */
 public void start() {
 	Thread thread = new Thread("Code snippet runner") {
+		@Override
 		public void run() {
 			try {
 				CodeSnippetRunner.this.ide.connect();
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/AbstractReader.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/AbstractReader.java
index f463af4..3a2a218 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/AbstractReader.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/AbstractReader.java
@@ -39,6 +39,7 @@
 public void start() {
 	this.readerThread = new Thread(
 		new Runnable() {
+			@Override
 			public void run () {
 				readerLoop();
 			}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/DRLVMLauncher.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/DRLVMLauncher.java
index 5ae5fbb..e19bb7a 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/DRLVMLauncher.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/DRLVMLauncher.java
@@ -28,6 +28,7 @@
 /**
  * @see LocalVMLauncher#getCommandLine
  */
+@Override
 public String[] getCommandLine() {
 	Vector commandLine= new Vector();
 
@@ -121,6 +122,7 @@
 /**
  * Builds the actual boot class path that is going to be passed to the VM.
  */
+@Override
 protected String buildBootClassPath() {
 	StringBuffer bootPathString = new StringBuffer();
 	char pathSeparator = File.pathSeparatorChar;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/J9VMLauncher.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/J9VMLauncher.java
index 5394373..adadab7 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/J9VMLauncher.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/J9VMLauncher.java
@@ -79,6 +79,7 @@
 /**
  * @see LocalVMLauncher#execCommandLine
  */
+@Override
 protected Process execCommandLine() throws TargetException {
 	// Check that the internal debug port has been specified if in debug mode
 	if (this.debugPort != -1 && this.internalDebugPort == -1) {
@@ -90,6 +91,7 @@
 /**
  * @see LocalVMLauncher#getCommandLine
  */
+@Override
 public String[] getCommandLine() {
 	Vector commandLine = new Vector();
 
@@ -214,6 +216,7 @@
 /**
  * @see LocalVMLauncher#launch
  */
+@Override
 public LocalVirtualMachine launch() throws TargetException {
 	// Launch VM
 	LocalVirtualMachine localVM = super.launch();
@@ -251,6 +254,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.runtime.LocalVMLauncher#setDebugPort(int)
  */
+@Override
 public void setDebugPort(int debugPort) {
 	super.setDebugPort(debugPort);
 
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/J9VirtualMachine.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/J9VirtualMachine.java
index 25a5f00..2ebdd8a 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/J9VirtualMachine.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/J9VirtualMachine.java
@@ -52,6 +52,7 @@
 /**
  * @see LocalVirtualMachine#shutDown
  */
+@Override
 public synchronized void shutDown() throws TargetException {
 	super.shutDown();
 	if (this.proxyConsoleReader != null)
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/JRockitVMLauncher.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/JRockitVMLauncher.java
index b532e98..45c987b 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/JRockitVMLauncher.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/JRockitVMLauncher.java
@@ -59,6 +59,7 @@
 /**
  * @see LocalVMLauncher#getCommandLine
  */
+@Override
 public String[] getCommandLine() {
 	Vector commandLine= new Vector();
 
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/MacVMLauncher.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/MacVMLauncher.java
index 5ec9e15..34ae7f0 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/MacVMLauncher.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/MacVMLauncher.java
@@ -23,6 +23,7 @@
 /**
  * @see LocalVMLauncher#getCommandLine
  */
+@Override
 public String[] getCommandLine() {
 	Vector commandLine= new Vector();
 
@@ -114,6 +115,7 @@
 /**
  * Builds the actual boot class path that is going to be passed to the VM.
  */
+@Override
 protected String buildBootClassPath() {
 	StringBuffer bootPathString = new StringBuffer();
 	char pathSeparator = File.pathSeparatorChar;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/NullConsoleReader.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/NullConsoleReader.java
index cb8811a..6f934ec 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/NullConsoleReader.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/NullConsoleReader.java
@@ -32,6 +32,7 @@
 /**
  * Continuously reads events that are coming from the event queue.
  */
+@Override
 protected void readerLoop() {
 	java.io.BufferedReader bufferedInput = new java.io.BufferedReader(new java.io.InputStreamReader(this.input));
 	try {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/ProxyConsoleReader.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/ProxyConsoleReader.java
index 92b9c59..7411aca 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/ProxyConsoleReader.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/ProxyConsoleReader.java
@@ -45,6 +45,7 @@
  * Continuously reads from the proxy output and redirect what's read to
  * this reader's file.
  */
+@Override
 protected void readerLoop() {
 	try {
 		byte[] buffer= new byte[1024];
@@ -60,6 +61,7 @@
 /**
  * Stop this reader
  */
+@Override
 public void stop() {
 	super.stop();
 	try {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/SideCarJ9VMLauncher.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/SideCarJ9VMLauncher.java
index 2a60beb..7e08767 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/SideCarJ9VMLauncher.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/SideCarJ9VMLauncher.java
@@ -23,6 +23,7 @@
 /**
  * @see LocalVMLauncher#getCommandLine
  */
+@Override
 public String[] getCommandLine() {
 	Vector commandLine= new Vector();
 
@@ -115,6 +116,7 @@
 /**
  * Builds the actual boot class path that is going to be passed to the VM.
  */
+@Override
 protected String buildBootClassPath() {
 	StringBuffer bootPathString = new StringBuffer();
 	char pathSeparator = File.pathSeparatorChar;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/SideCarVMLauncher.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/SideCarVMLauncher.java
index 4cb2311..6c0b8e4 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/SideCarVMLauncher.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/SideCarVMLauncher.java
@@ -23,6 +23,7 @@
 /**
  * @see LocalVMLauncher#getCommandLine
  */
+@Override
 public String[] getCommandLine() {
 	Vector commandLine= new Vector();
 
@@ -112,6 +113,7 @@
 /**
  * Builds the actual boot class path that is going to be passed to the VM.
  */
+@Override
 protected String buildBootClassPath() {
 	StringBuffer bootPathString = new StringBuffer();
 	char pathSeparator = File.pathSeparatorChar;
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/StandardVMLauncher.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/StandardVMLauncher.java
index ac7ebb3..3e25d3c 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/StandardVMLauncher.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/StandardVMLauncher.java
@@ -91,6 +91,7 @@
 /**
  * @see LocalVMLauncher#getCommandLine
  */
+@Override
 public String[] getCommandLine() {
 	Vector commandLine= new Vector();
 
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/VMInputStream.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/VMInputStream.java
index 4dfcb17..8671e60 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/VMInputStream.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/VMInputStream.java
@@ -26,9 +26,11 @@
 	this.process= process;
 	this.input= input;
 }
+@Override
 public int available() throws IOException {
 	return this.input.available();
 }
+@Override
 public void close() throws IOException {
 	this.input.close();
 }
@@ -45,12 +47,15 @@
 	}
 	return !hasExited;
 }
+@Override
 public synchronized void mark(int readlimit) {
 	this.input.mark(readlimit);
 }
+@Override
 public boolean markSupported() {
 	return this.input.markSupported();
 }
+@Override
 public int read() throws IOException {
 	try {
 		return this.input.read();
@@ -61,6 +66,7 @@
 		throw e;
 	}
 }
+@Override
 public int read(byte b[]) throws IOException {
 	// Make sure the byte array is initialized (value of 0 is used in the workaround below)
 	for (int i=0;i<b.length;i++)
@@ -83,6 +89,7 @@
 
 	return read;
 }
+@Override
 public int read(byte b[], int off, int len) throws IOException {
 	// Make sure the byte array is initialized (value of 0 is used in the workaround below)
 	for (int i = off; i < len; i++)
@@ -104,9 +111,11 @@
 	}
 	return read;
 }
+@Override
 public synchronized void reset() throws IOException {
 	this.input.reset();
 }
+@Override
 public long skip(long n) throws IOException {
 	return this.input.skip(n);
 }
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/TestVerifier.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/TestVerifier.java
index 66a7cc5..db61969 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/TestVerifier.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/TestVerifier.java
@@ -130,6 +130,7 @@
 
 	launchAndRun(className, classpaths, null, null);
 }
+@Override
 protected void finalize() throws Throwable {
 	shutDown();
 }
@@ -430,6 +431,7 @@
 		this.vm = launcher.launch();
 		final InputStream input = this.vm.getInputStream();
 		outputThread = new Thread(new Runnable() {
+			@Override
 			public void run() {
 				try {
 					int c = input.read();
@@ -443,6 +445,7 @@
 		});
 		final InputStream errorStream = this.vm.getErrorStream();
 		errorThread = new Thread(new Runnable() {
+			@Override
 			public void run() {
 				try {
 					int c = errorStream.read();
@@ -521,6 +524,7 @@
 			this.vm = launcher.launch();
 			final InputStream input = this.vm.getInputStream();
 			Thread outputThread = new Thread(new Runnable() {
+				@Override
 				public void run() {
 					try {
 						int c = input.read();
@@ -534,6 +538,7 @@
 			});
 			final InputStream errorStream = this.vm.getErrorStream();
 			Thread errorThread = new Thread(new Runnable() {
+				@Override
 				public void run() {
 					try {
 						int c = errorStream.read();
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java
index afb3f07..39c6e45 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java
@@ -872,6 +872,7 @@
 		ArrayList paths = new ArrayList();
 		if ("DRLVM".equals(vmName)) {
 			FilenameFilter jarFilter = new FilenameFilter() {
+				@Override
 				public boolean accept(File dir, String name) {
 					return name.endsWith(".jar") & !name.endsWith("-src.jar");
 				}
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/VerifyTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/VerifyTests.java
index 779092b..e2f6794 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/VerifyTests.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/VerifyTests.java
@@ -88,9 +88,11 @@
 		}
 
 	}
+	@Override
 	public java.net.URL getResource(String name) {
 		return ClassLoader.getSystemResource(name);
 	}
+	@Override
 	public InputStream getResourceAsStream(String name) {
 		return ClassLoader.getSystemResourceAsStream(name);
 	}
@@ -108,6 +110,7 @@
 		}
 		return false;
 	}
+	@Override
 	public synchronized Class loadClass(String name, boolean resolve)
 		throws ClassNotFoundException {
 
@@ -209,6 +212,7 @@
 	while (true) {
 		final String className = in.readUTF();
 		Thread thread = new Thread() {
+			@Override
 			public void run() {
 				try {
 					loadAndRun(className);
diff --git a/org.eclipse.jdt.core.tests.model/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.jdt.core.tests.model/.settings/org.eclipse.jdt.ui.prefs
index fab83c9..e599396 100644
--- a/org.eclipse.jdt.core.tests.model/.settings/org.eclipse.jdt.ui.prefs
+++ b/org.eclipse.jdt.core.tests.model/.settings/org.eclipse.jdt.ui.prefs
@@ -33,7 +33,7 @@
 sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
 sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
 sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
+sp_cleanup.remove_trailing_whitespaces=true
 sp_cleanup.remove_trailing_whitespaces_all=true
 sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
 sp_cleanup.remove_unnecessary_casts=false
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15JLS4Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15JLS4Test.java
index 4a9d940..d6bc419 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15JLS4Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15JLS4Test.java
@@ -42,6 +42,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS4(), false);
@@ -60,6 +61,7 @@
 		return buildModelTestSuite(ASTConverter15JLS4Test.class);
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15JLS8Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15JLS8Test.java
index e284369..5123a0a 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15JLS8Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15JLS8Test.java
@@ -42,6 +42,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS8(), false);
@@ -60,6 +61,7 @@
 		return buildModelTestSuite(ASTConverter15JLS8Test.class);
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15Test.java
index fbe9593..08d2f94 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter15Test.java
@@ -45,6 +45,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS3(), false);
@@ -63,6 +64,7 @@
 		return buildModelTestSuite(ASTConverter15Test.class);
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter16Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter16Test.java
index fad0644..b4c1387 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter16Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter16Test.java
@@ -31,6 +31,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS3(), false);
@@ -49,6 +50,7 @@
 		return buildModelTestSuite(ASTConverter16Test.class);
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter17Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter17Test.java
index 8c26c16..534abb4 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter17Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter17Test.java
@@ -61,6 +61,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS4(), false);
@@ -79,6 +80,7 @@
 		return buildModelTestSuite(ASTConverter17Test.class);
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter18Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter18Test.java
index e74ceb2..dd7b3ed 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter18Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter18Test.java
@@ -38,6 +38,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getAST8(), false);
@@ -61,6 +62,7 @@
 	static int getAST8() {
 		return AST.JLS8;
 	}
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter9Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter9Test.java
index 13fa8ae..4f95727 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter9Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter9Test.java
@@ -46,6 +46,7 @@
 	private static final String jcl9lib = "CONVERTER_JCL9_LIB";
 
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getAST9(), false);
@@ -83,6 +84,7 @@
 		return buildModelTestSuite(ASTConverter9Test.class);
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST3Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST3Test.java
index 971b748..f3a8947 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST3Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST3Test.java
@@ -26,6 +26,7 @@
 @SuppressWarnings({"rawtypes"})
 public class ASTConverterAST3Test extends ConverterTestSetup {
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS3(), false);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST4Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST4Test.java
index 6eb7ba7..945399a 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST4Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST4Test.java
@@ -26,6 +26,7 @@
 @SuppressWarnings({"rawtypes"})
 public class ASTConverterAST4Test extends ConverterTestSetup {
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS4(), false);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java
index 1408641..5852b17 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterAST8Test.java
@@ -26,6 +26,7 @@
 @SuppressWarnings({"rawtypes"})
 public class ASTConverterAST8Test extends ConverterTestSetup {
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS8(), false);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBindingsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBindingsTest.java
index 40e0059..0fc1329 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBindingsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBindingsTest.java
@@ -485,6 +485,7 @@
 	}
 
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS3(), false);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java
index 12f68ff..fb8490f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java
@@ -33,6 +33,7 @@
 @SuppressWarnings("rawtypes")
 public class ASTConverterBugsTest extends ConverterTestSetup {
 
+@Override
 public void setUpSuite() throws Exception {
 //	PROJECT_SETUP = true; // do not copy Converter* directories
 	super.setUpSuite();
@@ -66,29 +67,36 @@
 	assertEquals(message, expected, buffer.toString());
 }
 
+@Override
 public ASTNode runConversion(ICompilationUnit unit, boolean resolveBindings) {
 	return runConversion(this.testLevel, unit, resolveBindings);
 }
 
+@Override
 public ASTNode runConversion(ICompilationUnit unit, int position, boolean resolveBindings) {
 	return runConversion(this.testLevel, unit, position, resolveBindings);
 }
 
+@Override
 public ASTNode runConversion(IClassFile classFile, int position, boolean resolveBindings) {
 	return runConversion(this.testLevel, classFile, position, resolveBindings);
 }
 
+@Override
 public ASTNode runConversion(char[] source, String unitName, IJavaProject project) {
 	return runConversion(this.testLevel, source, unitName, project);
 }
 
+@Override
 public ASTNode runConversion(char[] source, String unitName, IJavaProject project, boolean resolveBindings) {
 	return runConversion(this.testLevel, source, unitName, project, resolveBindings);
 }
 
+@Override
 public ASTNode runConversion(char[] source, String unitName, IJavaProject project, Map<String, String> options, boolean resolveBindings) {
 	return runConversion(this.testLevel, source, unitName, project, options, resolveBindings);
 }
+@Override
 public ASTNode runConversion(char[] source, String unitName, IJavaProject project, Map<String, String> options) {
 	return runConversion(this.testLevel, source, unitName, project, options);
 }
@@ -107,6 +115,7 @@
 	return parser.createAST(null);
 }
 
+@Override
 protected void resolveASTs(ICompilationUnit[] cus, String[] bindingKeys, ASTRequestor requestor, IJavaProject project, WorkingCopyOwner owner) {
 	ASTParser parser = createASTParser();
 	parser.setResolveBindings(true);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterJavadocTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterJavadocTest.java
index acd90b8..07ea5ae 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterJavadocTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterJavadocTest.java
@@ -214,6 +214,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#copyDirectory(java.io.File, java.io.File)
 	 */
+	@Override
 	protected void copyDirectory(File sourceDir, File targetDir) throws IOException {
 		if (COPY_DIR) {
 			super.copyDirectory(sourceDir, targetDir);
@@ -232,6 +233,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#setUp()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		TEST_COUNTERS[0]++;
@@ -243,6 +245,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#tearDown()
 	 */
+	@Override
 	protected void tearDown() throws Exception {
 		int size = this.failures.size();
 		String title = size+" positions/bindings were incorrect in "+getName();
@@ -273,6 +276,7 @@
 	/* (non-Javadoc)
 	 * @see junit.framework.TestCase#tearDown()
 	 */
+	@Override
 	public void tearDownSuite() throws Exception {
 		// put default options on project
 		if (this.currentProject != null && this.savedOptions != null) {
@@ -291,6 +295,7 @@
 		}
 	}
 
+	@Override
 	public ASTNode runConversion(char[] source, String unitName, IJavaProject project) {
 		ASTParser parser = ASTParser.newParser(this.astLevel);
 		parser.setSource(source);
@@ -300,6 +305,7 @@
 		return parser.createAST(null);
 	}
 
+	@Override
 	public ASTNode runConversion(char[] source, String unitName, IJavaProject project, Map options) {
 		if (project == null) {
 			ASTParser parser = ASTParser.newParser(this.astLevel);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterRecoveryTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterRecoveryTest.java
index 5fc3ac2..09c37cd 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterRecoveryTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterRecoveryTest.java
@@ -56,6 +56,7 @@
 		return buildModelTestSuite(ASTConverterRecoveryTest.class);
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS3(), false);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest.java
index 0ba937d..933575c 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest.java
@@ -29,6 +29,7 @@
 public class ASTConverterTest extends ConverterTestSetup {
 
 	/** @deprecated using deprecated code */
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(AST.JLS2, false);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest2.java
index 5f527a5..5c25e01 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest2.java
@@ -36,6 +36,7 @@
 public class ASTConverterTest2 extends ConverterTestSetup {
 
 	/** @deprecated using deprecated code */
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(AST.JLS2, false);
@@ -4323,6 +4324,7 @@
 		ICompilationUnit sourceUnit = getCompilationUnit("Converter", "src", "test0538", "A.java"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		try {
 			ReconcilerTests.ProblemRequestor pbRequestor = new ReconcilerTests.ProblemRequestor() {
+				@Override
                 public boolean isActive() {
                     return false;
                 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java
index 4bd9d03..84c132f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java
@@ -118,6 +118,7 @@
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class ASTConverterTestAST3_2 extends ConverterTestSetup {
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS3(), false);
@@ -4400,6 +4401,7 @@
 		ICompilationUnit sourceUnit = getCompilationUnit("Converter", "src", "test0538", "A.java"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		try {
 			ReconcilerTests.ProblemRequestor pbRequestor = new ReconcilerTests.ProblemRequestor() {
+				@Override
                 public boolean isActive() {
                     return false;
                 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST4_2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST4_2.java
index e520388..980ade0 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST4_2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST4_2.java
@@ -115,6 +115,7 @@
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class ASTConverterTestAST4_2 extends ConverterTestSetup {
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS4(), false);
@@ -4397,6 +4398,7 @@
 		ICompilationUnit sourceUnit = getCompilationUnit("Converter", "src", "test0538", "A.java"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		try {
 			ReconcilerTests.ProblemRequestor pbRequestor = new ReconcilerTests.ProblemRequestor() {
+				@Override
                 public boolean isActive() {
                     return false;
                 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST8_2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST8_2.java
index 1a2aaf9..89426bc 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST8_2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST8_2.java
@@ -116,6 +116,7 @@
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class ASTConverterTestAST8_2 extends ConverterTestSetup {
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS8(), false);
@@ -4427,6 +4428,7 @@
 		ICompilationUnit sourceUnit = getCompilationUnit("Converter", "src", "test0538", "A.java"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		try {
 			ReconcilerTests.ProblemRequestor pbRequestor = new ReconcilerTests.ProblemRequestor() {
+				@Override
                 public boolean isActive() {
                     return false;
                 }
@@ -10790,6 +10792,7 @@
 		ICompilationUnit sourceUnit = getCompilationUnit("Converter", "src", "org.eclipse.swt.internal.gtk", "A.java"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		try {
 			ReconcilerTests.ProblemRequestor pbRequestor = new ReconcilerTests.ProblemRequestor() {
+				@Override
                 public boolean isActive() {
                     return false;
                 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTModelBridgeTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTModelBridgeTests.java
index e3a494f..c6dc30d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTModelBridgeTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTModelBridgeTests.java
@@ -128,6 +128,7 @@
 		return parser.createBindings(elements, null);
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		setUpJavaProject();
@@ -209,6 +210,7 @@
 			null/*no progress*/);
 	}
 
+	@Override
 	public void tearDownSuite() throws Exception {
 		tearDownJavaProject();
 		super.tearDownSuite();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTNodeFinderTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTNodeFinderTest.java
index fd21d25..de894d3 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTNodeFinderTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTNodeFinderTest.java
@@ -28,6 +28,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS3(), false);
@@ -37,6 +38,7 @@
 		super(name);
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTPositionsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTPositionsTest.java
index 23085d8..0729861 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTPositionsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTPositionsTest.java
@@ -26,6 +26,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getJLS3(), false);
@@ -58,6 +59,7 @@
     	}
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java
index efa8b04..394a6d0 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTTest.java
@@ -1122,6 +1122,7 @@
 			throw new RuntimeException("get(" + value + ") not implemented"); //$NON-NLS-1$ //$NON-NLS-2$
 		}
 
+		@Override
 		public String toString() {
 			return "Property(" + this.propertyName + ", " + this.compulsory + ", " + this.nodeType + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
 		}
@@ -1587,6 +1588,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Qualifier", true, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				QualifiedName result = targetAst.newQualifiedName(
 					targetAst.newSimpleName("a"), //$NON-NLS-1$
@@ -1596,23 +1598,28 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				QualifiedName s1 = ASTTest.this.ast.newQualifiedName(x, ASTTest.this.ast.newSimpleName("z")); //$NON-NLS-1$
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				QualifiedName s1 = (QualifiedName) x.getParent();
 				s1.setQualifier(ASTTest.this.ast.newSimpleName("z")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getQualifier();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setQualifier((Name) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -1620,9 +1627,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -2024,6 +2033,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Name", true, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("a"); //$NON-NLS-1$
 				if (parented) {
@@ -2031,9 +2041,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((Name) value);
 			}
@@ -2155,6 +2167,7 @@
 
 		if (this.ast.apiLevel() < getJLS8()) {
 			genericPropertyTest(x, new Property("ComponentType", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleType result = targetAst.newSimpleType(
 						targetAst.newSimpleName("a")); //$NON-NLS-1$
@@ -2163,17 +2176,21 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode wrap() {
 					ArrayType result = ASTTest.this.ast.newArrayType(x);
 					return result;
 				}
+				@Override
 				public void unwrap() {
 					ArrayType a = (ArrayType) x.getParent();
 					setArrayComponentType(a, ASTTest.this.ast.newPrimitiveType(PrimitiveType.INT));
 				}
+				@Override
 				public ASTNode get() {
 					return getArrayComponentType(x);
 				}
+				@Override
 				public void set(ASTNode value) {
 					setArrayComponentType(x, (Type) value);
 				}
@@ -2187,6 +2204,7 @@
 			assertTrue(x3.getDimensions() == 7);
 		} else {
 			genericPropertyTest(x, new Property("ElementType", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleType result = targetAst.newSimpleType(
 						targetAst.newSimpleName("a")); //$NON-NLS-1$
@@ -2195,17 +2213,21 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode wrap() {
 					ArrayType result = ASTTest.this.ast.newArrayType(x, 5);
 					return result;
 				}
+				@Override
 				public void unwrap() {
 					ArrayType a = (ArrayType) x.getParent();
 					a.setElementType(ASTTest.this.ast.newPrimitiveType(PrimitiveType.INT));
 				}
+				@Override
 				public ASTNode get() {
 					return x.getElementType();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setElementType((Type) value);
 				}
@@ -2267,6 +2289,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result =
 				targetAst.newSimpleType(
@@ -2276,23 +2299,28 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParameterizedType s1 = ASTTest.this.ast.newParameterizedType(x); //$NON-NLS-1$
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParameterizedType s1 = (ParameterizedType) x.getParent();
 				s1.setType(ASTTest.this.ast.newSimpleType(ASTTest.this.ast.newSimpleName("z"))); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
 		});
 		genericPropertyListTest(x, x.typeArguments(),
 		  new Property("Arguments", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				PrimitiveType result = targetAst.newPrimitiveType(PrimitiveType.INT);
 				if (parented) {
@@ -2300,12 +2328,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Type that embeds x
 				ParameterizedType s1 = ASTTest.this.ast.newParameterizedType(ASTTest.this.ast.newSimpleType(ASTTest.this.ast.newSimpleName("foo"))); //$NON-NLS-1$
 				s1.typeArguments().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParameterizedType s1 = (ParameterizedType) x.getParent();
 				s1.typeArguments().remove(x);
@@ -2350,6 +2380,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Qualifier", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result =
 				targetAst.newSimpleType(
@@ -2359,23 +2390,28 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				QualifiedType s1 = ASTTest.this.ast.newQualifiedType(x, ASTTest.this.ast.newSimpleName("z")); //$NON-NLS-1$
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				QualifiedType s1 = (QualifiedType) x.getParent();
 				s1.setQualifier(ASTTest.this.ast.newSimpleType(ASTTest.this.ast.newSimpleName("z"))); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getQualifier();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setQualifier((Type) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -2383,9 +2419,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -2451,6 +2489,7 @@
 		assertTrue(x.isUpperBound() == false);
 
 		genericPropertyTest(x, new Property("Bound", false, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result =
 				targetAst.newSimpleType(
@@ -2460,18 +2499,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				WildcardType s1 = ASTTest.this.ast.newWildcardType();
 				s1.setBound(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				WildcardType s1 = (WildcardType) x.getParent();
 				s1.setBound(null);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBound();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBound((Type) value);
 			}
@@ -2498,6 +2541,7 @@
 
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyTest(x, new Property("Javadoc", false, Javadoc.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Javadoc result = targetAst.newJavadoc();
 					if (parented) {
@@ -2505,15 +2549,18 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode get() {
 					return x.getJavadoc();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setJavadoc((Javadoc) value);
 				}
 			});
 
 			genericPropertyListTest(x, x.annotations(), new Property("Annotations", true, Annotation.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					MarkerAnnotation result = targetAst.newMarkerAnnotation();
 					if (parented) {
@@ -2526,6 +2573,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Name", true, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("a"); //$NON-NLS-1$
 				if (parented) {
@@ -2533,9 +2581,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((Name) value);
 			}
@@ -2560,6 +2610,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Name", true, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("a"); //$NON-NLS-1$
 				if (parented) {
@@ -2567,9 +2618,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((Name) value);
 			}
@@ -2609,6 +2662,7 @@
 		tClientProperties(x);
 
 		genericPropertyTest(x, new Property("Package", false, PackageDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				PackageDeclaration result = targetAst.newPackageDeclaration();
 				if (parented) {
@@ -2617,15 +2671,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getPackage();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setPackage((PackageDeclaration) value);
 			}
 		});
 
 		genericPropertyListTest(x, x.imports(), new Property("Imports", true, ImportDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				ImportDeclaration result = targetAst.newImportDeclaration();
 				if (parented) {
@@ -2637,6 +2694,7 @@
 		});
 
 		genericPropertyListTest(x, x.types(), new Property("Types", true, AbstractTypeDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				TypeDeclaration result = targetAst.newTypeDeclaration();
 				if (parented) {
@@ -2765,6 +2823,7 @@
 		tModifiers(x);
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -2772,9 +2831,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -2783,6 +2844,7 @@
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.typeParameters(),
 			  new Property("TypeParameters", true, TypeParameter.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					TypeParameter result = targetAst.newTypeParameter();
 					if (parented) {
@@ -2795,6 +2857,7 @@
 
 		if (this.ast.apiLevel() == AST.JLS2) {
 			genericPropertyTest(x, new Property("Superclass", false, Name.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 					if (parented) {
@@ -2802,9 +2865,11 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode get() {
 					return x.getSuperclass();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setSuperclass((Name) value);
 				}
@@ -2814,6 +2879,7 @@
 		if (this.ast.apiLevel() == AST.JLS2) {
 			genericPropertyListTest(x, x.superInterfaces(),
 			  new Property("SuperInterfaces", true, Name.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 					if (parented) {
@@ -2826,6 +2892,7 @@
 
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyTest(x, new Property("SuperclassType", false, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleType result = targetAst.newSimpleType(targetAst.newSimpleName("foo")); //$NON-NLS-1$
 					if (parented) {
@@ -2833,9 +2900,11 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode get() {
 					return x.getSuperclassType();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setSuperclassType((Type) value);
 				}
@@ -2845,6 +2914,7 @@
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.superInterfaceTypes(),
 			  new Property("SuperInterfaceTypes", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleType result = targetAst.newSimpleType(targetAst.newSimpleName("foo")); //$NON-NLS-1$
 					if (parented) {
@@ -2858,6 +2928,7 @@
 
 		genericPropertyListTest(x, x.bodyDeclarations(),
 		  new Property("BodyDeclarations", true, BodyDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				TypeDeclaration result = targetAst.newTypeDeclaration();
 				if (parented) {
@@ -2866,11 +2937,13 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				TypeDeclaration s1 = x.getAST().newTypeDeclaration();
 				s1.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				TypeDeclaration s1 = (TypeDeclaration) x.getParent();
 				s1.bodyDeclarations().remove(x);
@@ -2967,6 +3040,7 @@
 		tModifiers(x);
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -2974,9 +3048,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -2984,6 +3060,7 @@
 
 		genericPropertyListTest(x, x.superInterfaceTypes(),
 		  new Property("SuperInterfaceTypes", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(targetAst.newSimpleName("foo")); //$NON-NLS-1$
 				if (parented) {
@@ -2995,6 +3072,7 @@
 
 		genericPropertyListTest(x, x.enumConstants(),
 				  new Property("EnumConstants", true, EnumConstantDeclaration.class) { //$NON-NLS-1$
+					@Override
 					public ASTNode sample(AST targetAst, boolean parented) {
 						EnumConstantDeclaration result = targetAst.newEnumConstantDeclaration();
 						if (parented) {
@@ -3004,6 +3082,7 @@
 						}
 						return result;
 					}
+					@Override
 					public ASTNode wrap() {
 						EnumConstantDeclaration s1 = x.getAST().newEnumConstantDeclaration();
 						AnonymousClassDeclaration anonymousClassDeclaration = x.getAST().newAnonymousClassDeclaration();
@@ -3011,6 +3090,7 @@
 						anonymousClassDeclaration.bodyDeclarations().add(x);
 						return s1;
 					}
+					@Override
 					public void unwrap() {
 						AnonymousClassDeclaration anonymousClassDeclaration = (AnonymousClassDeclaration) x.getParent();
 						if (anonymousClassDeclaration != null) {
@@ -3021,6 +3101,7 @@
 
 		genericPropertyListTest(x, x.bodyDeclarations(),
 		  new Property("BodyDeclarations", true, BodyDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				TypeDeclaration result = targetAst.newTypeDeclaration();
 				if (parented) {
@@ -3029,11 +3110,13 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				TypeDeclaration s1 = x.getAST().newTypeDeclaration();
 				s1.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				TypeDeclaration s1 = (TypeDeclaration) x.getParent();
 				s1.bodyDeclarations().remove(x);
@@ -3100,6 +3183,7 @@
 		tModifiers(x);
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -3107,9 +3191,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -3117,6 +3203,7 @@
 
 		genericPropertyListTest(x, x.arguments(),
 		  new Property("Arguments", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -3124,11 +3211,13 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				AnonymousClassDeclaration s1 = x.getAST().newAnonymousClassDeclaration();
 				s1.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				AnonymousClassDeclaration s1 = (AnonymousClassDeclaration) x.getParent();
 				s1.bodyDeclarations().remove(x);
@@ -3136,6 +3225,7 @@
 		});
 
 		genericPropertyTest(x, new Property("AnonymousClassDeclaration", false, AnonymousClassDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				AnonymousClassDeclaration result = targetAst.newAnonymousClassDeclaration();
 				if (parented) {
@@ -3143,6 +3233,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return AnonymousClassDeclaration that embeds x
 				AnonymousClassDeclaration s0 = x.getAST().newAnonymousClassDeclaration();
@@ -3151,13 +3242,16 @@
 				s1.bodyDeclarations().add(x);
 				return s0;
 			}
+			@Override
 			public void unwrap() {
 				EnumDeclaration s1 = (EnumDeclaration) x.getParent();
 				s1.bodyDeclarations().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getAnonymousClassDeclaration();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setAnonymousClassDeclaration((AnonymousClassDeclaration) value);
 			}
@@ -3202,6 +3296,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("a"); //$NON-NLS-1$
 				if (parented) {
@@ -3209,15 +3304,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
 		});
 		genericPropertyListTest(x, x.typeBounds(),
 		  new Property("TypeBounds", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Type result = targetAst.newSimpleType(targetAst.newSimpleName("foo"));
 				if (parented) {
@@ -3299,6 +3397,7 @@
 
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.modifiers(), new Property("Modifiers", true, IExtendedModifier.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Modifier result = targetAst.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD);
 					if (parented) {
@@ -3307,6 +3406,7 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode wrap() {
 					SingleMemberAnnotation s1 = x.getAST().newSingleMemberAnnotation();
 					ClassInstanceCreation s2 = x.getAST().newClassInstanceCreation();
@@ -3320,6 +3420,7 @@
 					s5.modifiers().add(x);
 					return s1;
 				}
+				@Override
 				public void unwrap() {
 					SingleVariableDeclaration s5 = (SingleVariableDeclaration) x.getParent();
 					s5.modifiers().remove(x);
@@ -3348,6 +3449,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -3355,15 +3457,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(
 					targetAst.newSimpleName("foo")); //$NON-NLS-1$
@@ -3372,9 +3477,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
@@ -3383,6 +3490,7 @@
 		if (this.ast.apiLevel() >= getJLS8()) {
 			genericPropertyListTest(x, x.extraDimensions(),
 					new Property("ExtraDimensions", true, Dimension.class) { //$NON-NLS-1$
+						@Override
 						public ASTNode sample(AST targetAst, boolean parented) {
 							Dimension result = targetAst.newDimension();
 							if (parented) {
@@ -3394,6 +3502,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Initializer", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -3401,19 +3510,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return an Expression that embeds x
 				CatchClause s1 = ASTTest.this.ast.newCatchClause();
 				s1.setException(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				CatchClause s1 = (CatchClause) x.getParent();
 				s1.setException(ASTTest.this.ast.newSingleVariableDeclaration());
 			}
+			@Override
 			public ASTNode get() {
 				return x.getInitializer();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setInitializer((Expression) value);
 			}
@@ -3466,6 +3579,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -3473,9 +3587,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -3484,6 +3600,7 @@
 		if (this.ast.apiLevel() >= getJLS8()) {
 			genericPropertyListTest(x, x.extraDimensions(),
 					new Property("ExtraDimensions", true, Dimension.class) { //$NON-NLS-1$
+						@Override
 						public ASTNode sample(AST targetAst, boolean parented) {
 							Dimension result = targetAst.newDimension();
 							if (parented) {
@@ -3495,6 +3612,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Initializer", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -3502,20 +3620,24 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return an Expression that embeds x
 				VariableDeclarationExpression s1 =
 					ASTTest.this.ast.newVariableDeclarationExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				VariableDeclarationExpression s1 =
 					(VariableDeclarationExpression) x.getParent();
 				s1.fragments().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getInitializer();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setInitializer((Expression) value);
 			}
@@ -3623,6 +3745,7 @@
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.typeParameters(),
 			  new Property("TypeParameters", true, TypeParameter.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					TypeParameter result = targetAst.newTypeParameter();
 					if (parented) {
@@ -3634,6 +3757,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -3641,9 +3765,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -3651,6 +3777,7 @@
 
 		if (this.ast.apiLevel() == AST.JLS2) {
 			genericPropertyTest(x, new Property("ReturnType", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleType result = targetAst.newSimpleType(
 						targetAst.newSimpleName("foo")); //$NON-NLS-1$
@@ -3659,9 +3786,11 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode get() {
 					return x.getReturnType();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setReturnType((Type) value);
 				}
@@ -3670,6 +3799,7 @@
 
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyTest(x, new Property("ReturnType2", false, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleType result = targetAst.newSimpleType(
 						targetAst.newSimpleName("foo")); //$NON-NLS-1$
@@ -3678,9 +3808,11 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode get() {
 					return x.getReturnType2();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setReturnType2((Type) value);
 				}
@@ -3690,6 +3822,7 @@
 		if (this.ast.apiLevel() >= getJLS8()) {
 			genericPropertyListTest(x, x.extraDimensions(),
 					new Property("ExtraDimensions", true, Dimension.class) { //$NON-NLS-1$
+						@Override
 						public ASTNode sample(AST targetAst, boolean parented) {
 							Dimension result = targetAst.newDimension();
 							if (parented) {
@@ -3702,6 +3835,7 @@
 
 		genericPropertyListTest(x, x.parameters(),
 		  new Property("Parameters", true, SingleVariableDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SingleVariableDeclaration result = targetAst.newSingleVariableDeclaration();
 				if (parented) {
@@ -3709,6 +3843,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a SingleVariableDeclaration that embeds x
 				SingleVariableDeclaration s1 = ASTTest.this.ast.newSingleVariableDeclaration();
@@ -3719,6 +3854,7 @@
 				a1.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				AnonymousClassDeclaration a1 = (AnonymousClassDeclaration) x.getParent();
 				a1.bodyDeclarations().remove(x);
@@ -3728,6 +3864,7 @@
 		if (this.ast.apiLevel() < getJLS8()) {
 			genericPropertyListTest(x, x.thrownExceptions(),
 					  new Property("ThrownExceptions", true, Name.class) { //$NON-NLS-1$
+						@Override
 						public ASTNode sample(AST targetAst, boolean parented) {
 							SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 							if (parented) {
@@ -3739,6 +3876,7 @@
 		} else {
 			genericPropertyListTest(x, x.thrownExceptionTypes(),
 					  new Property("ThrownExceptionTypes", true, Type.class) { //$NON-NLS-1$
+						@Override
 						public ASTNode sample(AST targetAst, boolean parented) {
 							Type result = targetAst.newSimpleType(targetAst.newSimpleName("foo")); //$NON-NLS-1$
 							if (parented) {
@@ -3750,6 +3888,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Body", false, Block.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -3758,6 +3897,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Block that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
@@ -3766,13 +3906,16 @@
 				s2.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				TypeDeclaration s2 = (TypeDeclaration) x.getParent();
 				s2.bodyDeclarations().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Block) value);
 			}
@@ -3841,6 +3984,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Body", true, Block.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -3849,6 +3993,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Block that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
@@ -3857,13 +4002,16 @@
 				s2.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				TypeDeclaration s2 = (TypeDeclaration) x.getParent();
 				s2.bodyDeclarations().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Block) value);
 			}
@@ -3953,6 +4101,7 @@
 
 		genericPropertyListTest(x, x.tags(),
 		  new Property("Tags", true, TagElement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				TagElement result = targetAst.newTagElement();
 				if (parented) {
@@ -3961,6 +4110,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode[] counterExamples(AST targetAst) {
 				return new ASTNode[] {
 					targetAst.newEmptyStatement(),
@@ -4047,6 +4197,7 @@
 		// check that fragments() can handle TagElement
 		genericPropertyListTest(x, x.fragments(),
 		  new Property("Fragments", true, TagElement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				TagElement result = targetAst.newTagElement();
 				if (parented) {
@@ -4055,16 +4206,19 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return TagElement that embeds x
 				TagElement tagElement = ASTTest.this.ast.newTagElement();
 				tagElement.fragments().add(x);
 				return tagElement;
 			}
+			@Override
 			public void unwrap() {
 				TagElement tagElement = (TagElement) x.getParent();
 				tagElement.fragments().remove(x);
 			}
+			@Override
 			public ASTNode[] counterExamples(AST targetAst) {
 				return new ASTNode[] {
 					targetAst.newEmptyStatement(),
@@ -4077,6 +4231,7 @@
 		// check that fragments() can handle Name
 		genericPropertyListTest(x, x.fragments(),
 		  new Property("Fragments", true, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -4088,6 +4243,7 @@
 		// check that fragments() can handle TextElement
 		genericPropertyListTest(x, x.fragments(),
 		  new Property("Fragments", true, TextElement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				TextElement result = targetAst.newTextElement();
 				if (parented) {
@@ -4100,6 +4256,7 @@
 		// check that fragments() can handle MethodRef
 		genericPropertyListTest(x, x.fragments(),
 		  new Property("Fragments", true, MethodRef.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				MethodRef result = targetAst.newMethodRef();
 				if (parented) {
@@ -4112,6 +4269,7 @@
 		// check that fragments() can handle MemberRef
 		genericPropertyListTest(x, x.fragments(),
 		  new Property("Fragments", true, MemberRef.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				MemberRef result = targetAst.newMemberRef();
 				if (parented) {
@@ -4184,6 +4342,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Qualifier", false, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				QualifiedName result = targetAst.newQualifiedName(
 					targetAst.newSimpleName("a"), //$NON-NLS-1$
@@ -4193,15 +4352,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getQualifier();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setQualifier((Name) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -4209,9 +4371,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -4235,6 +4399,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Qualifier", false, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				QualifiedName result = targetAst.newQualifiedName(
 					targetAst.newSimpleName("a"), //$NON-NLS-1$
@@ -4244,15 +4409,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getQualifier();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setQualifier((Name) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -4260,9 +4428,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -4270,6 +4440,7 @@
 
 		genericPropertyListTest(x, x.parameters(),
 		  new Property("Parameters", true, MethodRefParameter.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				MethodRefParameter result = targetAst.newMethodRefParameter();
 				if (parented) {
@@ -4312,6 +4483,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(
 					targetAst.newSimpleName("foo")); //$NON-NLS-1$
@@ -4320,15 +4492,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Name", false, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -4336,9 +4511,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -4363,6 +4540,7 @@
 
 		genericPropertyListTest(x, x.statements(),
 		  new Property("Statements", true, Statement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -4371,12 +4549,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Statement that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
@@ -4404,6 +4584,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Expression", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -4411,19 +4592,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -4432,6 +4617,7 @@
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.typeArguments(),
 			  new Property("TypeArguments", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Type result = targetAst.newSimpleType(targetAst.newSimpleName("X")); //$NON-NLS-1$
 					if (parented) {
@@ -4443,6 +4629,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -4450,9 +4637,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -4460,6 +4649,7 @@
 
 		genericPropertyListTest(x, x.arguments(),
 		  new Property("Arguments", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -4467,12 +4657,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
@@ -4499,6 +4691,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -4506,6 +4699,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -4518,13 +4712,16 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -4575,6 +4772,7 @@
 
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.modifiers(), new Property("Modifiers", true, IExtendedModifier.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Modifier result = targetAst.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD);
 					if (parented) {
@@ -4583,6 +4781,7 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode wrap() {
 					SingleMemberAnnotation s1 = x.getAST().newSingleMemberAnnotation();
 					ClassInstanceCreation s2 = x.getAST().newClassInstanceCreation();
@@ -4599,6 +4798,7 @@
 					s7.modifiers().add(x);
 					return s1;
 				}
+				@Override
 				public void unwrap() {
 					VariableDeclarationStatement s7 = (VariableDeclarationStatement) x.getParent();
 					s7.modifiers().remove(x);
@@ -4627,6 +4827,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(
 					targetAst.newSimpleName("foo")); //$NON-NLS-1$
@@ -4635,9 +4836,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
@@ -4645,6 +4848,7 @@
 
 		genericPropertyListTest(x, x.fragments(),
 		  new Property("VariableSpecifiers", true, VariableDeclarationFragment.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				VariableDeclarationFragment result = targetAst.newVariableDeclarationFragment();
 				if (parented) {
@@ -4652,6 +4856,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return VariableDeclarationFragment that embeds x
 				VariableDeclarationFragment s1 = ASTTest.this.ast.newVariableDeclarationFragment();
@@ -4664,6 +4869,7 @@
 				s2.getBody().statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
@@ -4702,6 +4908,7 @@
 
 		if (this.ast.apiLevel() == AST.JLS2) {
 			genericPropertyTest(x, new Property("TypeDeclaration", true, TypeDeclaration.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					TypeDeclaration result = targetAst.newTypeDeclaration();
 					if (parented) {
@@ -4709,6 +4916,7 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode wrap() {
 					// return TypeDeclaration that embeds x
 					TypeDeclaration s1 = ASTTest.this.ast.newTypeDeclaration();
@@ -4719,13 +4927,16 @@
 					s3.statements().add(x);
 					return s1;
 				}
+				@Override
 				public void unwrap() {
 					Block s3 = (Block) x.getParent();
 					s3.statements().remove(x);
 				}
+				@Override
 				public ASTNode get() {
 					return x.getTypeDeclaration();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setTypeDeclaration((TypeDeclaration) value);
 				}
@@ -4734,6 +4945,7 @@
 
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyTest(x, new Property("Declaration", true, AbstractTypeDeclaration.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					AbstractTypeDeclaration result = targetAst.newTypeDeclaration();
 					if (parented) {
@@ -4741,6 +4953,7 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode wrap() {
 					// return TypeDeclaration that embeds x
 					TypeDeclaration s1 = ASTTest.this.ast.newTypeDeclaration();
@@ -4751,13 +4964,16 @@
 					s3.statements().add(x);
 					return s1;
 				}
+				@Override
 				public void unwrap() {
 					Block s3 = (Block) x.getParent();
 					s3.statements().remove(x);
 				}
+				@Override
 				public ASTNode get() {
 					return x.getDeclaration();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setDeclaration((AbstractTypeDeclaration) value);
 				}
@@ -4806,6 +5022,7 @@
 
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.modifiers(), new Property("Modifiers", true, IExtendedModifier.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Modifier result = targetAst.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD);
 					if (parented) {
@@ -4814,11 +5031,13 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode wrap() {
 					SingleMemberAnnotation s1 = x.getAST().newSingleMemberAnnotation();
 					s1.setValue(x);
 					return s1;
 				}
+				@Override
 				public void unwrap() {
 					SingleMemberAnnotation s1 = (SingleMemberAnnotation) x.getParent();
 					s1.setValue(x.getAST().newNullLiteral());
@@ -4847,6 +5066,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(
 					targetAst.newSimpleName("foo")); //$NON-NLS-1$
@@ -4855,9 +5075,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
@@ -4865,6 +5087,7 @@
 
 		genericPropertyListTest(x, x.fragments(),
 		  new Property("VariableSpecifiers", true, VariableDeclarationFragment.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				VariableDeclarationFragment result = targetAst.newVariableDeclarationFragment();
 				if (parented) {
@@ -4872,6 +5095,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return VariableDeclarationFragment that embeds x
 				VariableDeclarationFragment s1 = ASTTest.this.ast.newVariableDeclarationFragment();
@@ -4886,6 +5110,7 @@
 				s3.getBody().statements().add(s2);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ForStatement s2 = (ForStatement) x.getParent();
 				s2.initializers().remove(x);
@@ -4938,6 +5163,7 @@
 		tModifiers(x);
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(
 					targetAst.newSimpleName("foo")); //$NON-NLS-1$
@@ -4946,9 +5172,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
@@ -4956,6 +5184,7 @@
 
 		genericPropertyListTest(x, x.fragments(),
 		  new Property("VariableSpecifiers", true, VariableDeclarationFragment.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				VariableDeclarationFragment result = targetAst.newVariableDeclarationFragment();
 				if (parented) {
@@ -4963,6 +5192,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return VariableDeclarationFragment that embeds x
 				VariableDeclarationFragment s1 = ASTTest.this.ast.newVariableDeclarationFragment();
@@ -4973,6 +5203,7 @@
 				a1.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				AnonymousClassDeclaration a1 = (AnonymousClassDeclaration) x.getParent();
 				a1.bodyDeclarations().remove(x);
@@ -5063,6 +5294,7 @@
 		assertTrue(Assignment.Operator.toOperator("not-an-op") == null); //$NON-NLS-1$
 
 		genericPropertyTest(x, new Property("LeftHandSide", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -5070,25 +5302,30 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getLeftHandSide();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setLeftHandSide((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("RightHandSide", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -5096,19 +5333,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getRightHandSide();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setRightHandSide((Expression) value);
 			}
@@ -5136,6 +5377,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Label", false, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -5143,9 +5385,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getLabel();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setLabel((SimpleName) value);
 			}
@@ -5173,6 +5417,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Label", false, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -5180,9 +5425,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getLabel();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setLabel((SimpleName) value);
 			}
@@ -5214,6 +5461,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -5221,6 +5469,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -5233,19 +5482,23 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("ThenStatement", true, Statement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -5254,25 +5507,30 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Statement that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getThenStatement();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setThenStatement((Statement) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("ElseStatement", false, Statement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -5281,19 +5539,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Statement that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getElseStatement();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setElseStatement((Statement) value);
 			}
@@ -5324,6 +5586,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -5331,6 +5594,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -5343,19 +5607,23 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Body", true, Statement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -5364,19 +5632,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Statement that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Statement) value);
 			}
@@ -5407,6 +5679,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -5414,6 +5687,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -5426,19 +5700,23 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Body", true, Statement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -5447,19 +5725,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Statement that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Statement) value);
 			}
@@ -5500,6 +5782,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Body", true, Block.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -5508,19 +5791,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Block that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Block) value);
 			}
@@ -5528,6 +5815,7 @@
 
 		genericPropertyListTest(x, x.catchClauses(),
 		  new Property("CatchClauses", true, CatchClause.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				CatchClause result = targetAst.newCatchClause();
 				if (parented) {
@@ -5536,6 +5824,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return CatchClause that embeds x
 				CatchClause s1 = ASTTest.this.ast.newCatchClause();
@@ -5544,6 +5833,7 @@
 				s2.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
@@ -5551,6 +5841,7 @@
 		});
 
 		genericPropertyTest(x, new Property("Finally", false, Block.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -5559,19 +5850,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Block that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getFinally();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setFinally((Block) value);
 			}
@@ -5595,6 +5890,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Exception", true, SingleVariableDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SingleVariableDeclaration result = targetAst.newSingleVariableDeclaration();
 				if (parented) {
@@ -5603,6 +5899,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return SingleVariableDeclaration that embeds x
 				SingleVariableDeclaration s1 = ASTTest.this.ast.newSingleVariableDeclaration();
@@ -5619,19 +5916,23 @@
 				s5.catchClauses().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				TryStatement s5 = (TryStatement) x.getParent();
 				s5.catchClauses().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getException();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setException((SingleVariableDeclaration) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Body", true, Block.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -5640,6 +5941,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Block that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
@@ -5648,13 +5950,16 @@
 				s2.catchClauses().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				TryStatement s2 = (TryStatement) x.getParent();
 				s2.catchClauses().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Block) value);
 			}
@@ -5737,6 +6042,7 @@
 	 */
 	void tJavadocComment(final BodyDeclaration x) {
 		genericPropertyTest(x, new Property("Javadoc", false, Javadoc.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Javadoc result = targetAst.newJavadoc();
 				if (parented) {
@@ -5744,9 +6050,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getJavadoc();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setJavadoc((Javadoc) value);
 			}
@@ -5785,6 +6093,7 @@
 			return;
 		}
 		genericPropertyListTest(x, x.modifiers(), new Property("Modifiers", true, IExtendedModifier.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Modifier result = targetAst.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD);
 				if (parented) {
@@ -5793,6 +6102,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				SingleMemberAnnotation s1 = x.getAST().newSingleMemberAnnotation();
 				ClassInstanceCreation s2 = x.getAST().newClassInstanceCreation();
@@ -5804,6 +6114,7 @@
 				s4.modifiers().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				MethodDeclaration s4 = (MethodDeclaration) x.getParent();
 				s4.modifiers().remove(x);
@@ -5948,6 +6259,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -5955,6 +6267,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -5967,13 +6280,16 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -6001,6 +6317,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6008,6 +6325,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6020,13 +6338,16 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -6055,6 +6376,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6062,6 +6384,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6074,19 +6397,23 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Message", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6094,6 +6421,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6106,13 +6434,16 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getMessage();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setMessage((Expression) value);
 			}
@@ -6141,6 +6472,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6148,6 +6480,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6160,13 +6493,16 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -6174,6 +6510,7 @@
 
 		genericPropertyListTest(x, x.statements(),
 		  new Property("Statements", true, Statement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -6182,12 +6519,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Statement that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
@@ -6215,6 +6554,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Expression", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6222,6 +6562,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6236,13 +6577,16 @@
 				s4.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				SwitchStatement s4 = (SwitchStatement) x.getParent();
 				s4.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -6271,6 +6615,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6278,6 +6623,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6290,19 +6636,23 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Body", true, Block.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -6311,19 +6661,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Block that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Block) value);
 			}
@@ -6352,6 +6706,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Label", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6359,15 +6714,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getLabel();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setLabel((SimpleName) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Body", true, Statement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -6376,19 +6734,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Statement that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Statement) value);
 			}
@@ -6576,6 +6938,7 @@
 
 		genericPropertyListTest(x, x.initializers(),
 		  new Property("Initializers", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6583,6 +6946,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6595,6 +6959,7 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
@@ -6602,6 +6967,7 @@
 		});
 
 		genericPropertyTest(x, new Property("Expression", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6609,6 +6975,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6621,13 +6988,16 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -6635,6 +7005,7 @@
 
 		genericPropertyListTest(x, x.updaters(),
 		  new Property("Updaters", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6642,6 +7013,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6654,6 +7026,7 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
@@ -6661,6 +7034,7 @@
 		});
 
 		genericPropertyTest(x, new Property("Body", true, Statement.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				Block result = targetAst.newBlock();
 				if (parented) {
@@ -6669,19 +7043,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return a Statement that embeds x
 				Block s1 = ASTTest.this.ast.newBlock();
 				s1.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s2 = (Block) x.getParent();
 				s2.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getBody();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setBody((Statement) value);
 			}
@@ -6725,6 +7103,7 @@
 		tLeadingComment(x);
 
 		genericPropertyTest(x, new Property("Parameter", true, SingleVariableDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SingleVariableDeclaration result = targetAst.newSingleVariableDeclaration();
 				if (parented) {
@@ -6733,15 +7112,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getParameter();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setParameter((SingleVariableDeclaration) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST target, boolean parented) {
 				Expression result = target.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6749,6 +7131,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6761,13 +7144,16 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
  			}
@@ -6794,6 +7180,7 @@
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.typeArguments(),
 			  new Property("TypeArguments", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Type result = targetAst.newSimpleType(targetAst.newSimpleName("X")); //$NON-NLS-1$
 					if (parented) {
@@ -6806,6 +7193,7 @@
 
 		genericPropertyListTest(x, x.arguments(),
 		  new Property("Arguments", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6813,6 +7201,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6825,6 +7214,7 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
@@ -6851,6 +7241,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Expression", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6858,6 +7249,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6870,13 +7262,16 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -6885,6 +7280,7 @@
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.typeArguments(),
 			  new Property("TypeArguments", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Type result = targetAst.newSimpleType(targetAst.newSimpleName("X")); //$NON-NLS-1$
 					if (parented) {
@@ -6897,6 +7293,7 @@
 
 		genericPropertyListTest(x, x.arguments(),
 		  new Property("Arguments", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6904,6 +7301,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = ASTTest.this.ast.newClassInstanceCreation();
@@ -6916,6 +7314,7 @@
 				s3.statements().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				Block s3 = (Block) x.getParent();
 				s3.statements().remove(x);
@@ -6938,6 +7337,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Qualifier", false, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				QualifiedName result = targetAst.newQualifiedName(
 					targetAst.newSimpleName("a"), //$NON-NLS-1$
@@ -6947,9 +7347,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getQualifier();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setQualifier((Name) value);
 			}
@@ -6972,6 +7374,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -6979,24 +7382,29 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7004,9 +7412,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -7030,6 +7440,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Qualifier", false, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				QualifiedName result = targetAst.newQualifiedName(
 					targetAst.newSimpleName("a"), //$NON-NLS-1$
@@ -7039,15 +7450,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getQualifier();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setQualifier((Name) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7055,9 +7469,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -7084,6 +7500,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Qualifier", false, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				QualifiedName result = targetAst.newQualifiedName(
 					targetAst.newSimpleName("a"), //$NON-NLS-1$
@@ -7093,9 +7510,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getQualifier();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setQualifier((Name) value);
 			}
@@ -7104,6 +7523,7 @@
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.typeArguments(),
 			  new Property("TypeArguments", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Type result = targetAst.newSimpleType(targetAst.newSimpleName("X")); //$NON-NLS-1$
 					if (parented) {
@@ -7115,6 +7535,7 @@
 		}
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7122,9 +7543,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -7132,6 +7555,7 @@
 
 		genericPropertyListTest(x, x.arguments(),
 		  new Property("Arguments", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7139,12 +7563,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
@@ -7167,6 +7593,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(
 					targetAst.newSimpleName("a")); //$NON-NLS-1$
@@ -7175,9 +7602,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
@@ -7200,6 +7629,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(
 					targetAst.newSimpleName("a")); //$NON-NLS-1$
@@ -7208,15 +7638,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7224,18 +7657,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -7305,6 +7742,7 @@
 		assertTrue(PrefixExpression.Operator.toOperator("huh") == null); //$NON-NLS-1$
 
 		genericPropertyTest(x, new Property("Operand", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7312,18 +7750,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getOperand();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setOperand((Expression) value);
 			}
@@ -7385,6 +7827,7 @@
 		assertTrue(PostfixExpression.Operator.toOperator("huh") == null); //$NON-NLS-1$
 
 		genericPropertyTest(x, new Property("Operand", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7392,18 +7835,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getOperand();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setOperand((Expression) value);
 			}
@@ -7501,6 +7948,7 @@
 		assertTrue(InfixExpression.Operator.toOperator("huh") == null); //$NON-NLS-1$
 
 		genericPropertyTest(x, new Property("LeftOperand", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7508,24 +7956,29 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getLeftOperand();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setLeftOperand((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("RightOperand", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7533,18 +7986,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getRightOperand();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setRightOperand((Expression) value);
 			}
@@ -7552,6 +8009,7 @@
 
 		genericPropertyListTest(x, x.extendedOperands(),
 		  new Property("ExtendedOperands", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7559,12 +8017,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
@@ -7588,6 +8048,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("LeftOperand", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7595,24 +8056,29 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getLeftOperand();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setLeftOperand((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("RightOperand", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Type result = localAst.newSimpleType(localAst.newSimpleName("Object")); //$NON-NLS-1$
 				if (parented) {
@@ -7620,18 +8086,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getRightOperand();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setRightOperand((Type) value);
 			}
@@ -7655,6 +8125,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7662,24 +8133,29 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("ThenExpression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7687,24 +8163,29 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getThenExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setThenExpression((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("ElseExpression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7712,18 +8193,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getElseExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setElseExpression((Expression) value);
 			}
@@ -7746,6 +8231,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Array", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7753,24 +8239,29 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getArray();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setArray((Expression) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Index", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7778,18 +8269,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getIndex();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setIndex((Expression) value);
 			}
@@ -7812,6 +8307,7 @@
 
 		genericPropertyListTest(x, x.expressions(),
 		  new Property("Expressions", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7819,12 +8315,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
@@ -7856,6 +8354,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Expression", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7863,19 +8362,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -7884,6 +8387,7 @@
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyListTest(x, x.typeArguments(),
 			  new Property("TypeArguments", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					Type result = targetAst.newSimpleType(targetAst.newSimpleName("X")); //$NON-NLS-1$
 					if (parented) {
@@ -7896,6 +8400,7 @@
 
 		if (this.ast.apiLevel() == AST.JLS2) {
 			genericPropertyTest(x, new Property("Name", true, Name.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleName result = targetAst.newSimpleName("a"); //$NON-NLS-1$
 					if (parented) {
@@ -7903,9 +8408,11 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode get() {
 					return x.getName();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setName((Name) value);
 				}
@@ -7914,6 +8421,7 @@
 
 		if (this.ast.apiLevel() >= JLS3_INTERNAL) {
 			genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+				@Override
 				public ASTNode sample(AST targetAst, boolean parented) {
 					SimpleType result = targetAst.newSimpleType(targetAst.newSimpleName("foo")); //$NON-NLS-1$
 					if (parented) {
@@ -7921,9 +8429,11 @@
 					}
 					return result;
 				}
+				@Override
 				public ASTNode get() {
 					return x.getType();
 				}
+				@Override
 				public void set(ASTNode value) {
 					x.setType((Type) value);
 				}
@@ -7932,6 +8442,7 @@
 
 		genericPropertyListTest(x, x.arguments(),
 		  new Property("Arguments", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -7939,12 +8450,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
@@ -7952,6 +8465,7 @@
 		});
 
 		genericPropertyTest(x, new Property("AnonymousClassDeclaration", false, AnonymousClassDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				AnonymousClassDeclaration result = targetAst.newAnonymousClassDeclaration();
 				if (parented) {
@@ -7959,6 +8473,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return AnonymousClassDeclaration that embeds x
 				AnonymousClassDeclaration s0 = x.getAST().newAnonymousClassDeclaration();
@@ -7968,13 +8483,16 @@
 				s1.setInitializer(x);
 				return s0;
 			}
+			@Override
 			public void unwrap() {
 				VariableDeclarationFragment s1 = (VariableDeclarationFragment) x.getParent();
 				s1.setInitializer(null);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getAnonymousClassDeclaration();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setAnonymousClassDeclaration((AnonymousClassDeclaration) value);
 			}
@@ -7998,6 +8516,7 @@
 
 		genericPropertyListTest(x, x.bodyDeclarations(),
 		  new Property("BodyDeclarations", true, BodyDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				TypeDeclaration result = targetAst.newTypeDeclaration();
 				if (parented) {
@@ -8006,6 +8525,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return BodyDeclaration that embeds x
 				VariableDeclarationFragment s0 = x.getAST().newVariableDeclarationFragment();
@@ -8015,6 +8535,7 @@
 				s2.setAnonymousClassDeclaration(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ClassInstanceCreation s2 = (ClassInstanceCreation) x.getParent();
 				s2.setAnonymousClassDeclaration(null);
@@ -8046,6 +8567,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Type", true, ArrayType.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				ArrayType result = targetAst.newArrayType(
 					targetAst.newSimpleType(targetAst.newSimpleName("a"))); //$NON-NLS-1$
@@ -8054,9 +8576,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((ArrayType) value);
 			}
@@ -8064,6 +8588,7 @@
 
 		genericPropertyListTest(x, x.dimensions(),
 		  new Property("Dimensions", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -8071,12 +8596,14 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("x")); //$NON-NLS-1$
@@ -8084,6 +8611,7 @@
 		});
 
 		genericPropertyTest(x, new Property("Initializer", false, ArrayInitializer.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				ArrayInitializer result = targetAst.newArrayInitializer();
 				if (parented) {
@@ -8091,19 +8619,23 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return ArrayInitializer that embeds x
 				ArrayInitializer s1 = ASTTest.this.ast.newArrayInitializer();
 				s1.expressions().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ArrayInitializer s1 = (ArrayInitializer) x.getParent();
 				s1.expressions().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getInitializer();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setInitializer((ArrayInitializer) value);
 			}
@@ -8125,6 +8657,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Expression", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -8132,18 +8665,22 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				ParenthesizedExpression s1 = ASTTest.this.ast.newParenthesizedExpression();
 				s1.setExpression(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				ParenthesizedExpression s1 = (ParenthesizedExpression) x.getParent();
 				s1.setExpression(ASTTest.this.ast.newSimpleName("fie")); //$NON-NLS-1$
 			}
+			@Override
 			public ASTNode get() {
 				return x.getExpression();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setExpression((Expression) value);
 			}
@@ -8185,6 +8722,7 @@
 		tModifiers(x);
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -8192,9 +8730,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
@@ -8202,6 +8742,7 @@
 
 		genericPropertyListTest(x, x.bodyDeclarations(),
 		  new Property("BodyDeclarations", true, BodyDeclaration.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				AnnotationTypeMemberDeclaration result = targetAst.newAnnotationTypeMemberDeclaration();
 				if (parented) {
@@ -8210,6 +8751,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return AnnotationTypeMemberDeclaration that embeds x
 				AnnotationTypeMemberDeclaration s1 = x.getAST().newAnnotationTypeMemberDeclaration();
@@ -8220,6 +8762,7 @@
 				s3.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				AnonymousClassDeclaration s3 = (AnonymousClassDeclaration) x.getParent();
 				s3.bodyDeclarations().remove(x);
@@ -8281,6 +8824,7 @@
 		tModifiers(x);
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -8288,15 +8832,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Type", true, Type.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleType result = targetAst.newSimpleType(
 					targetAst.newSimpleName("foo")); //$NON-NLS-1$
@@ -8305,15 +8852,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getType();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setType((Type) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Default", false, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -8321,6 +8871,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = x.getAST().newClassInstanceCreation();
@@ -8329,13 +8880,16 @@
 				s2.bodyDeclarations().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				AnonymousClassDeclaration s2 = (AnonymousClassDeclaration) x.getParent();
 				s2.bodyDeclarations().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getDefault();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setDefault((Expression) value);
 			}
@@ -8376,6 +8930,7 @@
 		tAnnotationName(x);
 
 		genericPropertyListTest(x, x.values(), new Property("Values", true, MemberValuePair.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				MemberValuePair result = targetAst.newMemberValuePair();
 				if (parented) {
@@ -8384,6 +8939,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return MemberValuePair that embeds x
 				MemberValuePair s1 = x.getAST().newMemberValuePair();
@@ -8396,6 +8952,7 @@
 				s4.modifiers().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				MethodDeclaration s4 = (MethodDeclaration) x.getParent();
 				s4.modifiers().remove(x);
@@ -8467,6 +9024,7 @@
 		tAnnotationName(x);
 
 		genericPropertyTest(x, new Property("Value", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -8474,6 +9032,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = x.getAST().newClassInstanceCreation();
@@ -8484,13 +9043,16 @@
 				s3.modifiers().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				MethodDeclaration s3 = (MethodDeclaration) x.getParent();
 				s3.modifiers().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getValue();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setValue((Expression) value);
 			}
@@ -8524,6 +9086,7 @@
 		assertTrue(this.ast.modificationCount() == previousCount);
 
 		genericPropertyTest(x, new Property("Name", true, SimpleName.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("a"); //$NON-NLS-1$
 				if (parented) {
@@ -8531,15 +9094,18 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setName((SimpleName) value);
 			}
 		});
 
 		genericPropertyTest(x, new Property("Value", true, Expression.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST localAst, boolean parented) {
 				Expression result = localAst.newSimpleName("foo"); //$NON-NLS-1$
 				if (parented) {
@@ -8547,6 +9113,7 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode wrap() {
 				// return Expression that embeds x
 				ClassInstanceCreation s1 = x.getAST().newClassInstanceCreation();
@@ -8559,13 +9126,16 @@
 				s4.values().add(x);
 				return s1;
 			}
+			@Override
 			public void unwrap() {
 				NormalAnnotation s4 = (NormalAnnotation) x.getParent();
 				s4.values().remove(x);
 			}
+			@Override
 			public ASTNode get() {
 				return x.getValue();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setValue((Expression) value);
 			}
@@ -8580,6 +9150,7 @@
 	 */
 	void tAnnotationName(final Annotation x) {
 		genericPropertyTest(x, new Property("TypeName", true, Name.class) { //$NON-NLS-1$
+			@Override
 			public ASTNode sample(AST targetAst, boolean parented) {
 				SimpleName result = targetAst.newSimpleName("a"); //$NON-NLS-1$
 				if (parented) {
@@ -8587,9 +9158,11 @@
 				}
 				return result;
 			}
+			@Override
 			public ASTNode get() {
 				return x.getTypeName();
 			}
+			@Override
 			public void set(ASTNode value) {
 				x.setTypeName((Name) value);
 			}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTVisitorTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTVisitorTest.java
index 1adf697..4a2a5e5 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTVisitorTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTVisitorTest.java
@@ -2340,6 +2340,7 @@
 		SimpleName n2 = this.ast.newSimpleName("b"); //$NON-NLS-1$
 		QualifiedName q = this.ast.newQualifiedName(n1, n2);
 		TestVisitor v1 = new TestVisitor() {
+			@Override
 			public void preVisit(ASTNode node) {
 				ASTVisitorTest.this.b.append("["); //$NON-NLS-1$
 				switch (node.getNodeType()) {
@@ -2352,6 +2353,7 @@
 				}
 			}
 
+			@Override
 			public void postVisit(ASTNode node) {
 				switch (node.getNodeType()) {
 					case ASTNode.QUALIFIED_NAME :
@@ -2384,6 +2386,7 @@
 		typeDeclaration.bodyDeclarations().add(2, methodDeclaration3);
 		// insert a new before the current node during a traverse
 		TestVisitor v1 = new TestVisitor() {
+			@Override
 			public boolean visit(MethodDeclaration node) {
 				if (node == methodDeclaration2) {
 					MethodDeclaration methodDeclaration4 = ASTVisitorTest.this.ast.newMethodDeclaration();
@@ -2412,6 +2415,7 @@
 		typeDeclaration.bodyDeclarations().add(2, methodDeclaration3);
 		// insert a new after the current node during a traverse
 		TestVisitor v1 = new TestVisitor() {
+			@Override
 			public boolean visit(MethodDeclaration node) {
 				if (node == methodDeclaration2) {
 					MethodDeclaration methodDeclaration4 = ASTVisitorTest.this.ast.newMethodDeclaration();
@@ -2432,6 +2436,7 @@
 		infixExpression.setOperator(InfixExpression.Operator.PLUS);
 		// insert a new after the current node during a traverse
 		TestVisitor v1 = new TestVisitor() {
+			@Override
 			public boolean visit(SimpleName node) {
 				infixExpression.setRightOperand(ASTVisitorTest.this.ast.newNumberLiteral("22")); //$NON-NLS-1$
 				return super.visit(node);
@@ -2448,6 +2453,7 @@
 		infixExpression.setOperator(InfixExpression.Operator.PLUS);
 		// insert a new before the current node during a traverse
 		TestVisitor v1 = new TestVisitor() {
+			@Override
 			public boolean visit(NumberLiteral node) {
 				infixExpression.setLeftOperand(ASTVisitorTest.this.ast.newSimpleName("j")); //$NON-NLS-1$
 				return super.visit(node);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java
index 1a9124d..9f971eb 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/AbstractASTTests.java
@@ -95,6 +95,7 @@
 		super(name);
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 
@@ -690,6 +691,7 @@
 	 * @param problemRequestor The requestor used to report problems
 	 * @return The created working copy owner
 	 */
+	@Override
 	protected WorkingCopyOwner newWorkingCopyOwner(final IProblemRequestor problemRequestor) {
 		return new WorkingCopyOwner() {
 			public IProblemRequestor getProblemRequestor(ICompilationUnit unit) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java
index 27a0991..0e632fd 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/BatchASTCreationTests.java
@@ -66,6 +66,7 @@
 		public BindingResolver(MarkerInfo[] markerInfos) {
 			this.markerInfos = markerInfos;
 		}
+		@Override
 		public void acceptAST(ICompilationUnit source, CompilationUnit cu) {
 			super.acceptAST(source, cu);
 			ASTNode[] nodes = findNodes(cu, this.markerInfos[++this.index]);
@@ -81,6 +82,7 @@
 				this.bindingKeys.add(bindingKey);
 			}
 		}
+		@Override
 		public void acceptBinding(String key, IBinding binding) {
 			super.acceptBinding(key, binding);
 			this.foundKeys.add(binding == null ? "null" : binding.getKey());
@@ -120,11 +122,13 @@
 //		TESTS_RANGE = new int[] { 83304, -1 };
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		createJavaProject("P", new String[] {""}, new String[] {"JCL15_LIB"}, "", "1.5");
 	}
 
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteProject("P");
 		super.tearDownSuite();
@@ -171,6 +175,7 @@
 			copies = createWorkingCopies(pathAndSources);
 			class Requestor extends TestASTRequestor {
 				ArrayList createdBindingKeys = new ArrayList();
+				@Override
 				public void acceptAST(ICompilationUnit source, CompilationUnit cu) {
 					super.acceptAST(source, cu);
 					IBinding[] bindings = createBindings(expectedKeys);
@@ -1684,6 +1689,7 @@
 		this.workingCopies = createWorkingCopies(markerInfos, this.owner);
 		class Requestor extends TestASTRequestor {
 			Object constantValue = null;
+			@Override
 			public void acceptAST(ICompilationUnit source, CompilationUnit ast) {
 				super.acceptAST(source, ast);
 				Type y = (Type) findNode(ast, markerInfos[0]);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/CompatibilityRulesTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/CompatibilityRulesTests.java
index f53bb73..3b550bf 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/CompatibilityRulesTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/CompatibilityRulesTests.java
@@ -43,11 +43,13 @@
 //		TESTS_RANGE = new int[] { 83304, -1 };
 		}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		createJavaProject("P", new String[] {""}, new String[] {"JCL15_LIB"}, "", "1.5");
 	}
 
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteProject("P");
 		super.tearDownSuite();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ConverterTestSetup.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ConverterTestSetup.java
index 633fd9a..fb87964 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ConverterTestSetup.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ConverterTestSetup.java
@@ -94,6 +94,7 @@
 	/**
 	 * Reset the jar placeholder and delete project.
 	 */
+	@Override
 	public void tearDownSuite() throws Exception {
 		this.ast = null;
 		if (TEST_SUITES == null) {
@@ -128,6 +129,7 @@
 		super.tearDownSuite();
 	}
 
+	@Override
 	public void setUpJCLClasspathVariables(String compliance, boolean useFullJCL) throws JavaModelException, IOException {
 		if (useFullJCL) {
 			 super.setUpJCLClasspathVariables(compliance, useFullJCL);
@@ -218,6 +220,7 @@
 	/**
 	 * Create project and set the jar placeholder.
 	 */
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/MarkedASTFlattener.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/MarkedASTFlattener.java
index f0c5ac8..56e17f5 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/MarkedASTFlattener.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/MarkedASTFlattener.java
@@ -381,6 +381,7 @@
 			}
 		}
 
+		@Override
 		public String getText(ASTNode node) {
 			StringBuffer buffer = new StringBuffer();
 
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ProfilingASTConvertionTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ProfilingASTConvertionTest.java
index 09ad12b..c84f531 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ProfilingASTConvertionTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ProfilingASTConvertionTest.java
@@ -60,6 +60,7 @@
 		/* (non-Javadoc)
 		 * @see java.lang.Comparable#compareTo(java.lang.Object)
 		 */
+		@Override
 		public int compareTo(Object o) {
 			Result result = (Result) o;
 			if (this.time < result.time) {
@@ -196,6 +197,7 @@
 			/* (non-Javadoc)
 			 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
 			 */
+			@Override
 			public int compare(Object o1, Object o2) {
 				Result r1 = (Result) o1;
 				Result r2 = (Result) o2;
@@ -213,6 +215,7 @@
 		}
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java
index a3f68ff..29047b7 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java
@@ -24,6 +24,7 @@
 
 	ICompilationUnit workingCopy;
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(AST_INTERNAL_LATEST, false);
@@ -42,6 +43,7 @@
 		return buildModelTestSuite(TypeAnnotationsConverterTest.class);
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		super.tearDown();
 		if (this.workingCopy != null) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
index feb6274..76cab3c 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
@@ -79,6 +79,7 @@
 	public static Test suite() {
 		return buildModelTestSuite(TypeBindingTests308.class);
 	}
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(getAST8(), false);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/DecodeCodeFormatterPreferences.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/DecodeCodeFormatterPreferences.java
index 793a63c..4fc7d45 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/DecodeCodeFormatterPreferences.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/DecodeCodeFormatterPreferences.java
@@ -123,6 +123,7 @@
 	/* (non-Javadoc)
 	 * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
 	 */
+	@Override
 	public void startElement(String uri, String localName, String qName,
 			Attributes attributes) throws SAXException {
 
@@ -144,6 +145,7 @@
 	/* (non-Javadoc)
 	 * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
 	 */
+	@Override
 	public void endElement(String uri, String localName, String qName)
 			throws SAXException {
 		if ("profile".equals(qName) && this.record) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugs18Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugs18Tests.java
index eb72547..d09ee20 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugs18Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugs18Tests.java
@@ -30,6 +30,7 @@
 /**
  * Create project and set the jar placeholder.
  */
+@Override
 public void setUpSuite() throws Exception {
 	if (JAVA_PROJECT == null) {
 		JAVA_PROJECT = setUpJavaProject("FormatterBugs", "1.8"); //$NON-NLS-1$
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
index 1dc88ef..1fd9b9a 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterBugsTests.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2019 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -71,6 +71,7 @@
 /**
  * Create project and set the jar placeholder.
  */
+@Override
 public void setUpSuite() throws Exception {
 	if (JAVA_PROJECT == null) {
 		JAVA_PROJECT = setUpJavaProject("FormatterBugs", "1.5"); //$NON-NLS-1$
@@ -13106,4 +13107,23 @@
 		"	}\n" +
 		"}");
 }
+/**
+ * https://bugs.eclipse.org/560889 - [formatter] Unneeded wraps with "Format edited lines" save action
+ */
+public void testBug560889() {
+	this.formatterPrefs.page_width = 50;
+	formatSource(
+		"class C {\n" +
+		"	void f() {\n" +
+		"[#		doSomething(aaaaaaaaaaaaaaaaaa)#]\n" +
+		"				.andThen(ccccccccccccccccccc);\n" +
+		"	}\n" +
+		"}",
+		"class C {\n" +
+		"	void f() {\n" +
+		"		doSomething(aaaaaaaaaaaaaaaaaa)\n" +
+		"				.andThen(ccccccccccccccccccc);\n" +
+		"	}\n" +
+		"}");
+}
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java
index 5180219..1c71a4e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsBugsTest.java
@@ -46,6 +46,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.formatter.FormatterCommentsTests#getOutputFolder()
  */
+@Override
 IPath getOutputFolder() {
 	return OUTPUT_FOLDER;
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsClearBlankLinesTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsClearBlankLinesTests.java
index 02ba4d3..d840261 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsClearBlankLinesTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsClearBlankLinesTests.java
@@ -50,10 +50,12 @@
 	super(name);
 }
 
+@Override
 protected void setUp() throws Exception {
     super.setUp();
 }
 
+@Override
 DefaultCodeFormatter codeFormatter() {
 	this.formatterPrefs.comment_clear_blank_lines_in_block_comment = true;
 	this.formatterPrefs.comment_clear_blank_lines_in_javadoc_comment = true;
@@ -65,6 +67,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.formatter.FormatterCommentsTests#getOutputFolder()
  */
+@Override
 IPath getOutputFolder() {
 	return OUTPUT_FOLDER;
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsTests.java
index 9cb6aef..a613573 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterCommentsTests.java
@@ -17,6 +17,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -72,6 +73,7 @@
 /**
  * Create project and set the jar placeholder.
  */
+@Override
 public void setUpSuite() throws Exception {
 	if (JAVA_PROJECT == null) {
 		JAVA_PROJECT = setUpJavaProject("FormatterJavadoc", "1.5"); //$NON-NLS-1$
@@ -269,9 +271,7 @@
 		for (int k= 0; k < packages.length; k++) {
 			IPackageFragment pack = (IPackageFragment) packages[k];
 			ICompilationUnit[] units = pack.getCompilationUnits();
-			for (int u=0; u<units.length; u++) {
-				allUnits.add(units[u]);
-			}
+			allUnits.addAll(Arrays.asList(units));
 		}
 	}
 	return allUnits;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR308Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR308Tests.java
index 6a077a6..296f115 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR308Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR308Tests.java
@@ -92,6 +92,7 @@
 	/**
 	 * Init formatter preferences with Eclipse default settings.
 	 */
+	@Override
 	protected void setUp() throws Exception {
 	    super.setUp();
 		this.formatterPrefs = DefaultCodeFormatterOptions.getEclipseDefaultSettings();
@@ -106,6 +107,7 @@
 	/**
 	 * Create project and set the jar placeholder.
 	 */
+	@Override
 	public void setUpSuite() throws Exception {
 		// ensure autobuilding is turned off
 		IWorkspaceDescription description = getWorkspace().getDescription();
@@ -126,6 +128,7 @@
 	/**
 	 * Reset the jar placeholder and delete project.
 	 */
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteProject(JAVA_PROJECT); //$NON-NLS-1$
 		JAVA_PROJECT = null;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR335Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR335Tests.java
index ca501e9..a6368bb 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR335Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR335Tests.java
@@ -62,6 +62,7 @@
 	/**
 	 * Init formatter preferences with Eclipse default settings.
 	 */
+	@Override
 	protected void setUp() throws Exception {
 	    super.setUp();
 		this.formatterPrefs = DefaultCodeFormatterOptions.getEclipseDefaultSettings();
@@ -76,6 +77,7 @@
 	/**
 	 * Create project and set the jar placeholder.
 	 */
+	@Override
 	public void setUpSuite() throws Exception {
 		// ensure autobuilding is turned off
 		IWorkspaceDescription description = getWorkspace().getDescription();
@@ -92,6 +94,7 @@
 	/**
 	 * Reset the jar placeholder and delete project.
 	 */
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteProject(JAVA_PROJECT); //$NON-NLS-1$
 		JAVA_PROJECT = null;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJavadocDontIndentTagsDescriptionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJavadocDontIndentTagsDescriptionTests.java
index 434bac4..7b1b8b4 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJavadocDontIndentTagsDescriptionTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJavadocDontIndentTagsDescriptionTests.java
@@ -49,10 +49,12 @@
 	super(name);
 }
 
+@Override
 protected void setUp() throws Exception {
     super.setUp();
 }
 
+@Override
 DefaultCodeFormatter codeFormatter() {
 	this.formatterPrefs.comment_indent_parameter_description = false; // Eclipse default is true
 	DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(this.formatterPrefs);
@@ -62,6 +64,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.formatter.FormatterCommentsTests#getOutputFolder()
  */
+@Override
 IPath getOutputFolder() {
 	return OUTPUT_FOLDER;
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJavadocDontIndentTagsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJavadocDontIndentTagsTests.java
index 63bcd54..54889e6 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJavadocDontIndentTagsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJavadocDontIndentTagsTests.java
@@ -49,10 +49,12 @@
 	super(name);
 }
 
+@Override
 protected void setUp() throws Exception {
     super.setUp();
 }
 
+@Override
 DefaultCodeFormatter codeFormatter() {
 	this.formatterPrefs.comment_indent_root_tags = false; // Eclipse default is true
 	this.formatterPrefs.comment_indent_parameter_description = false;
@@ -63,6 +65,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.formatter.FormatterCommentsTests#getOutputFolder()
  */
+@Override
 IPath getOutputFolder() {
 	return OUTPUT_FOLDER;
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterMassiveRegressionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterMassiveRegressionTests.java
index 0234b4c..fcca192 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterMassiveRegressionTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterMassiveRegressionTests.java
@@ -347,6 +347,7 @@
 		int size() {
 			return this.failures.size();
 		}
+		@Override
 		public String toString() {
 			switch (this.kind) {
 				case  UNEXPECTED_FAILURE:
@@ -438,6 +439,7 @@
 
 		// Get files from input dir
 		FileFilter filter = new FileFilter() {
+			@Override
 			public boolean accept(File pathname) {
 				String path = pathname.getPath();
 				if (pathname.isDirectory()) {
@@ -1072,6 +1074,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.formatter.FormatterRegressionTests#setUpSuite()
  */
+@Override
 public void setUp() throws Exception {
 	super.setUp();
 
@@ -1144,6 +1147,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.formatter.FormatterRegressionTests#setUpSuite()
  */
+@Override
 public void setUpSuite() throws Exception {
 
 	// Init directories
@@ -1285,6 +1289,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.formatter.FormatterRegressionTests#tearDown()
  */
+@Override
 public void tearDown() throws Exception {
 	// verify whether the max failures has been reached or not
 	if (ASSERT_EQUALS_STRINGS && FAILURES != null) {
@@ -1295,6 +1300,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.formatter.FormatterRegressionTests#tearDownSuite()
  */
+@Override
 public void tearDownSuite() throws Exception {
 
 	// Display time measures
@@ -1383,6 +1389,7 @@
  * Note that 'expected' is assumed to have the '\n' line separator.
  * The line separators in 'actual' are converted to '\n' before the comparison.
  */
+@Override
 protected void assertSourceEquals(String message, String expected, String actual) {
 	if (expected == null) {
 		assertNull(message, actual);
@@ -1401,6 +1408,7 @@
 	}
 }
 
+@Override
 DefaultCodeFormatter codeFormatter() {
 	DefaultCodeFormatter codeFormatter = new DefaultCodeFormatter(this.preferences, getDefaultCompilerOptions());
 	return codeFormatter;
@@ -1590,6 +1598,7 @@
 	return false;
 }
 
+	@Override
 String runFormatter(CodeFormatter codeFormatter, String source, int kind, int indentationLevel, int offset, int length, String lineSeparator, boolean repeat) {
 	long timeStart = System.currentTimeMillis();
 	TextEdit edit = codeFormatter.format(kind, source, offset, length, indentationLevel, lineSeparator);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java
index 1748de1..5bc707d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java
@@ -208,6 +208,7 @@
 	/**
 	 * Init formatter preferences with Eclipse default settings.
 	 */
+	@Override
 	protected void setUp() throws Exception {
 	    super.setUp();
 		this.formatterPrefs = DefaultCodeFormatterOptions.getEclipseDefaultSettings();
@@ -219,6 +220,7 @@
 	/**
 	 * Create project and set the jar placeholder.
 	 */
+	@Override
 	public void setUpSuite() throws Exception {
 		// ensure autobuilding is turned off
 		IWorkspaceDescription description = getWorkspace().getDescription();
@@ -239,6 +241,7 @@
 	/**
 	 * Reset the jar placeholder and delete project.
 	 */
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteProject(JAVA_PROJECT); //$NON-NLS-1$
 		JAVA_PROJECT = null;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/CommentTestCase.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/CommentTestCase.java
index ef1af57..3f6806f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/CommentTestCase.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/CommentTestCase.java
@@ -53,6 +53,7 @@
 	/*
 	 * @see junit.framework.TestCase#tearDown()
 	 */
+	@Override
 	protected void tearDown() throws Exception {
 		this.userOptions= null;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/JavaDocTestCase.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/JavaDocTestCase.java
index 7328d68..154c3d3 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/JavaDocTestCase.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/JavaDocTestCase.java
@@ -42,46 +42,57 @@
 		super(name);
 	}
 
+	@Override
 	protected int getCommentKind() {
 		return CodeFormatter.K_JAVA_DOC;
 	}
 
+	@Override
 	public void testSingleLineComment1() {
 		assertEquals(PREFIX + DELIMITER + INFIX + "test" + DELIMITER + POSTFIX, testFormat(PREFIX + "\t\t" + DELIMITER + "*\t test*/")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	}
 
+	@Override
 	public void testSingleLineComment2() {
 		assertEquals(PREFIX + DELIMITER + INFIX + "test" + DELIMITER + POSTFIX, testFormat(PREFIX + "test" + DELIMITER + "\t" + POSTFIX)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	}
 
+	@Override
 	public void testSingleLineComment3() {
 		assertEquals(PREFIX + DELIMITER + INFIX + "test" + DELIMITER + POSTFIX, testFormat(PREFIX + DELIMITER + "* test\t*/")); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	@Override
 	public void testSingleLineComment4() {
 		assertEquals(PREFIX + DELIMITER + INFIX + "test" + DELIMITER + POSTFIX, testFormat(PREFIX + "test" + DELIMITER + POSTFIX)); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	@Override
 	public void testSingleLineCommentSpace1() {
 		assertEquals(PREFIX + " test" + POSTFIX, testFormat(PREFIX + "test*/")); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	@Override
 	public void testSingleLineCommentSpace2() {
 		assertEquals(PREFIX + " test" + POSTFIX, testFormat(PREFIX + "test" + POSTFIX)); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	@Override
 	public void testSingleLineCommentSpace3() {
 		assertEquals(PREFIX + " test" + POSTFIX, testFormat(PREFIX + "test*/")); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	@Override
 	public void testSingleLineCommentSpace4() {
 		assertEquals(PREFIX + " test test" + POSTFIX, testFormat(PREFIX + " test   test*/")); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	@Override
 	public void testSingleLineCommentTabs1() {
 		assertEquals(PREFIX + " test test" + POSTFIX, testFormat(PREFIX + "\ttest\ttest" + POSTFIX)); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
+	@Override
 	public void testSingleLineCommentTabs2() {
 		assertEquals(PREFIX + " test test" + POSTFIX, testFormat(PREFIX + "\ttest\ttest*/")); //$NON-NLS-1$ //$NON-NLS-2$
 	}
@@ -501,11 +512,13 @@
 		assertEquals(expected, result);
 	}
 
+	@Override
 	public void testNoChange1() {
 		String content= PREFIX + DELIMITER + POSTFIX;
 		assertEquals(content, testFormat(content));
 	}
 
+	@Override
 	public void testNoFormat1() {
 		setUserOption(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_JAVADOC_COMMENT, DefaultCodeFormatterConstants.FALSE);
 		String content= PREFIX + DELIMITER + INFIX + "test" + DELIMITER + INFIX + "test" + DELIMITER + POSTFIX;
@@ -755,6 +768,7 @@
 	}
 
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=75460
+	@Override
 	public void test75460() {
 		Map options = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
 		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_LINE_LENGTH, "200");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/MultiLineTestCase.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/MultiLineTestCase.java
index 5dbb5b9..4cd393a 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/MultiLineTestCase.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/MultiLineTestCase.java
@@ -39,6 +39,7 @@
 		super(name);
 	}
 
+	@Override
 	protected int getCommentKind() {
 		return CodeFormatter.K_MULTI_LINE_COMMENT;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/SingleLineTestCase.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/SingleLineTestCase.java
index fdf81f7..38ffee6 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/SingleLineTestCase.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/comment/SingleLineTestCase.java
@@ -36,6 +36,7 @@
 		super(name);
 	}
 
+	@Override
 	protected int getCommentKind() {
 		return CodeFormatter.K_SINGLE_LINE_COMMENT;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java
index 3371230..989100b 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelCompletionTests.java
@@ -74,6 +74,7 @@
 	String projectPath = '/' + project.getName() + '/';
 	removeClasspathEntry(javaProject, new Path(projectPath + jarName));
 }
+@Override
 public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
 	return super.getWorkingCopy(path, source, this.wcOwner);
 }
@@ -159,6 +160,7 @@
 	result.cursorLocation = cursorLocation;
 	return result;
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	this.oldOptions = JavaCore.getOptions();
@@ -168,10 +170,12 @@
 	JavaCore.setOptions(options);
 	waitUntilIndexesReady();
 }
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	this.wcOwner = new WorkingCopyOwner(){};
 }
+@Override
 public void tearDownSuite() throws Exception {
 	JavaCore.setOptions(this.oldOptions);
 	this.oldOptions = null;
@@ -186,6 +190,7 @@
 	}
 	super.tearDownSuite();
 }
+@Override
 protected void tearDown() throws Exception {
 	if(this.wc != null) {
 		this.wc.discardWorkingCopy();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java
index aeefbb4..be683c5 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java
@@ -352,6 +352,7 @@
 			return this.stackTraces.toString();
 		}
 
+		@Override
 		public synchronized String toString() {
 			StringBuilder buffer = new StringBuilder();
 			for (int i = 0, length= this.deltas.length; i < length; i++) {
@@ -3396,6 +3397,7 @@
 			}
 		}
 	}
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 
@@ -3406,6 +3408,7 @@
 			getWorkspace().setDescription(description);
 		}
 	}
+	@Override
 	protected void setUp () throws Exception {
 		super.setUp();
 
@@ -3586,6 +3589,7 @@
 	protected String toString(String[] strings) {
 		return org.eclipse.jdt.core.tests.util.Util.toString(strings, false/*don't add extra new line*/);
 	}
+	@Override
 	protected void tearDown() throws Exception {
 
 		super.tearDown();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchGenericTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchGenericTests.java
index 651e0cf..b9a44f6 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchGenericTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchGenericTests.java
@@ -33,6 +33,7 @@
 		this.matchRule = matchRule;
 	}
 
+	@Override
 	protected void setUp () throws Exception {
 		super.setUp();
 		this.resultCollector.showAccuracy(true);
@@ -63,6 +64,7 @@
 	 * Overridden to remove all last type arguments from expected string.
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#assertSearchResults(java.lang.String, java.lang.String, java.lang.Object)
 	 */
+	@Override
 	protected void assertSearchResults(String message, String expected, JavaSearchResultCollector collector) {
 		String actual = collector.toString();
 		String trimmed = cleanResults(expected);
@@ -81,12 +83,14 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(org.eclipse.jdt.core.IJavaElement, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor)
 	 */
+	@Override
 	protected void search(IJavaElement element, int limitTo) throws CoreException {
 		search(element, limitTo, this.matchRule, getJavaSearchScope15(), this.resultCollector);
 	}
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(java.lang.String, int, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor)
 	 */
+	@Override
 	protected void search(String patternString, int searchFor, int limitTo) throws CoreException {
 		search(patternString, searchFor, limitTo, this.matchRule, getJavaSearchScope15(), this.resultCollector);
 	}
@@ -94,12 +98,14 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(org.eclipse.jdt.core.IJavaElement, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor)
 	 */
+	@Override
 	protected void search(IJavaElement element, int limitTo, IJavaSearchScope scope) throws CoreException {
 		search(element, limitTo, this.matchRule, scope, this.resultCollector);
 	}
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(java.lang.String, int, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor)
 	 */
+	@Override
 	protected void search(String patternString, int searchFor, int limitTo, IJavaSearchScope scope) throws CoreException {
 		search(patternString, searchFor, limitTo, this.matchRule, scope, this.resultCollector);
 	}
@@ -107,12 +113,14 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(org.eclipse.jdt.core.IJavaElement, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor)
 	 */
+	@Override
 	protected void search(IJavaElement element, int limitTo, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException {
 		search(element, limitTo, this.matchRule, scope, requestor);
 	}
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#search(java.lang.String, int, int, org.eclipse.jdt.core.search.IJavaSearchScope, org.eclipse.jdt.core.search.SearchRequestor)
 	 */
+	@Override
 	protected void search(String patternString, int searchFor, int limitTo, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException {
 		search(patternString, searchFor, limitTo, this.matchRule, scope, requestor);
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchTests.java
index 07b673f..d216ef7 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchTests.java
@@ -139,6 +139,7 @@
 			this.results.addElement(buffer.toString());
 		}
 
+		@Override
 		public String toString(){
 			int length = this.results.size();
 			String[] strings = new String[length];
@@ -255,6 +256,7 @@
 			System.arraycopy(typeErasurename, 0, typeErasurename = new char[index], 0, index);
 			return typeErasurename;
 		}
+		@Override
 		public String toString(){
 			int length = this.results.size();
 			String[] strings = new String[length];
@@ -745,6 +747,7 @@
 	    	List displayedLines = new ArrayList(this.lines);
 	    	if (this.sorted) {
 	    		Collections.sort(displayedLines, new Comparator() {
+					@Override
 					public int compare(Object o1, Object o2) {
 						return o1.toString().compareTo(o2.toString());
 				    }
@@ -948,6 +951,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#copyDirectory(java.io.File, java.io.File)
 	 */
+	@Override
 	protected void copyDirectory(File sourceDir, File targetDir) throws IOException {
 		if (COPY_DIRS) {
 			super.copyDirectory(sourceDir, targetDir);
@@ -1019,6 +1023,7 @@
 	protected void search(IJavaElement element, int limitTo, int matchRule, IJavaSearchScope scope) throws CoreException {
 		search(element, limitTo, matchRule, scope, this.resultCollector);
 	}
+	@Override
 	protected void search(IJavaElement element, int limitTo, int matchRule, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException {
 		SearchPattern pattern = SearchPattern.createPattern(element, limitTo, matchRule);
 		assertNotNull("Pattern should not be null", pattern);
@@ -1047,6 +1052,7 @@
 	protected void search(String patternString, int searchFor, int limitTo, int matchRule, IJavaSearchScope scope) throws CoreException {
 		search(patternString, searchFor, limitTo, matchRule, scope, this.resultCollector);
 	}
+	@Override
 	protected void search(String patternString, int searchFor, int limitTo, int matchRule, IJavaSearchScope scope, SearchRequestor requestor) throws CoreException {
 		if (patternString.indexOf('*') != -1 || patternString.indexOf('?') != -1) {
 			matchRule |= SearchPattern.R_PATTERN_MATCH;
@@ -1232,6 +1238,7 @@
 	protected void searchDeclarationsOfSentMessages(IJavaElement enclosingElement, SearchRequestor requestor) throws JavaModelException {
 		new SearchEngine().searchDeclarationsOfSentMessages(enclosingElement, requestor, null);
 	}
+	@Override
 	protected void setUp () throws Exception {
 		super.setUp();
 		this.resultCollector = new JavaSearchResultCollector();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavadocCompletionModelTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavadocCompletionModelTest.java
index 1a736e9..db24474 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavadocCompletionModelTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavadocCompletionModelTest.java
@@ -367,6 +367,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#displayString(java.lang.String, int)
 	 */
+	@Override
 	protected String displayString(String toPrint, int indent) {
 		String toDisplay = super.displayString(toPrint, indent);
 		int openBracket = toDisplay.indexOf(", [");
@@ -419,6 +420,7 @@
 		}
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		if (COMPLETION_PROJECT == null)  {
@@ -433,11 +435,13 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#tearDown()
 	 */
+	@Override
 	protected void tearDown() throws Exception {
 		this.requestor = null;
 		super.tearDown();
 	}
 
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteFolder(new Path("/Completion/src/javadoc/tags"));
 		super.tearDownSuite();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AccessRestrictionsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AccessRestrictionsTests.java
index fd297d7..fece285 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AccessRestrictionsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AccessRestrictionsTests.java
@@ -32,6 +32,7 @@
 		}
 		ProblemRequestor() {
 		}
+		@Override
 		public void acceptProblem(IProblem problem) {
 			super.acceptProblem(problem);
 		}
@@ -58,11 +59,13 @@
 		return buildModelTestSuite(AccessRestrictionsTests.class);
 	}
 
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	setUpJavaProject("AccessRestrictions");
 }
 
+@Override
 public void tearDownSuite() throws Exception {
 	deleteProject("AccessRestrictions");
 	super.tearDownSuite();
@@ -72,10 +75,12 @@
 		assertProblems(message, expected, this.problemRequestor);
 	}
 
+	@Override
 	public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
 		return getWorkingCopy(path, source, this.wcOwner);
 	}
 
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.wcOwner = new WorkingCopyOwner() {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java
index ea9574f..bccb36f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java
@@ -108,6 +108,7 @@
 	parser.setWorkingCopyOwner(null);
 	return parser.createAST(null);
 }
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	attachSource(this.pkgFragmentRoot, "/AttachSourceTests/attachsrc.zip", "");
@@ -115,6 +116,7 @@
 /**
  * Create project and set the jar placeholder.
  */
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 
@@ -223,6 +225,7 @@
 	};
 	addLibrary("innerClasses.jar", "innerClassessrc.zip", pathAndContents, JavaCore.VERSION_1_4);
 }
+@Override
 protected void tearDown() throws Exception {
 	IPackageFragmentRoot[] roots = this.currentProject.getAllPackageFragmentRoots();
 	for (int i = 0; i < roots.length; i++) {
@@ -236,6 +239,7 @@
 /**
  * Reset the jar placeholder and delete project.
  */
+@Override
 public void tearDownSuite() throws Exception {
 	org.eclipse.jdt.core.tests.util.Util.flushDirectoryContent(new File(getExternalFolder()));
 	deleteProject(this.currentProject);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachedJavadocTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachedJavadocTests.java
index 99b9f39..a15c877 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachedJavadocTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachedJavadocTests.java
@@ -99,6 +99,7 @@
 	/**
 	 * Create project and set the jar placeholder.
 	 */
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 
@@ -129,6 +130,7 @@
 	/**
 	 * Reset the jar placeholder and delete project.
 	 */
+	@Override
 	public void tearDownSuite() throws Exception {
 		this.deleteProject("AttachedJavadocProject"); //$NON-NLS-1$
 		this.root = null;
@@ -759,6 +761,7 @@
 			final PerProjectInfo projectInfo = JavaModelManager.getJavaModelManager().getPerProjectInfoCheckExistence(this.project.getProject());
 			final Object varThis = this;
 			Thread thread = new Thread(){
+				@Override
 				public void run() {
 					Object javadocContent = projectInfo.javadocCache.get(type);
 					while(javadocContent == null || javadocContent == BinaryType.EMPTY_JAVADOC) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BPThread.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BPThread.java
index 0bba20e..345df38 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BPThread.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BPThread.java
@@ -68,6 +68,7 @@
 		this.thread = new Thread(runnable, this.name);
 		this.thread.start();
 	}
+	@Override
 	public String toString() {
 		return this.name;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BufferTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BufferTests.java
index 3f5be25..e9f4aa6 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BufferTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BufferTests.java
@@ -55,6 +55,7 @@
 /**
  * @see AbstractJavaModelTests#setUpSuite()
  */
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	try {
@@ -68,6 +69,7 @@
 /**
  * @see AbstractJavaModelTests#tearDownSuite()
  */
+@Override
 public void tearDownSuite() throws Exception {
 	super.tearDownSuite();
 	this.deleteProject("P");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java
index c869def..73ae627 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java
@@ -50,6 +50,7 @@
 	return buildModelTestSuite(ClassFileTests.class);
 }
 
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	IJavaProject javaProject = createJavaProject("P", new String[0], new String[] {"JCL15_LIB", "/P/lib"}, "", JavaCore.VERSION_1_5);
@@ -230,11 +231,13 @@
 	this.jarRoot = javaProject.getPackageFragmentRoot(getFile("/P/lib.jar"));
 }
 
+@Override
 public void tearDownSuite() throws Exception {
 	super.tearDownSuite();
 	deleteProject("P");
 }
 
+@Override
 protected void tearDown() throws Exception {
 	if (this.workingCopy != null)
 		this.workingCopy.discardWorkingCopy();
@@ -1652,6 +1655,7 @@
 						  "    void foo()";
 		class GetClassThread extends Thread {
 			public String childString;
+			@Override
 			public void run(){
 				IOrdinaryClassFile clazz = ClassFileTests.this.jarRoot.getPackageFragment("workingcopy").getOrdinaryClassFile("X.class");
 				try {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassNameTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassNameTests.java
index c077103..e17b649 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassNameTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassNameTests.java
@@ -67,6 +67,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#setUp()
  */
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	if (TEST_PROJECT == null) {
@@ -120,6 +121,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#tearDown()
  */
+@Override
 protected void tearDown() throws Exception {
 	TESTS_COUNT--;
 	if (TEST_PROJECT != null && TESTS_COUNT == 0) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java
index 3e75d99..c64fbbe 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathInitializerTests.java
@@ -50,6 +50,7 @@
 		}
 	}
 
+	@Override
 	public void initialize(String variable) throws JavaModelException {
 		if (this.variableValues == null) return;
 		JavaCore.setClasspathVariable(
@@ -63,9 +64,11 @@
 // (30920 - stackoverflow when setting container to null)
 public class NullContainerInitializer implements ContainerInitializer.ITestInitializer {
 	public boolean hasRun = false;
+	@Override
 	public boolean allowFailureContainer() {
 		return false; // allow the initializer to run again
 	}
+	@Override
 	public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 		this.hasRun = true;
 		JavaCore.setClasspathContainer(
@@ -92,6 +95,7 @@
 	// Range numbers of tests to run: all tests between "test<first>" and "test<last>" will be run for { first, last }
 //		TESTS_RANGE = new int[] { 16, -1 };
 }
+@Override
 protected void tearDown() throws Exception {
 	// Cleanup caches
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -324,6 +328,7 @@
 		boolean gotException = false;
 		try {
 			ContainerInitializer.setInitializer(new DefaultContainerInitializer(new String[] {"P1", "/P1/lib.jar"}) {
+				@Override
 				public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 					throw new OperationCanceledException("test");
 				}});
@@ -373,6 +378,7 @@
 					}
 				}
 			}
+			@Override
 			public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 				foo(500);
 				super.initialize(containerPath, project);
@@ -429,8 +435,10 @@
 public void testContainerInitializer09() throws CoreException {
 	try {
 		DefaultContainerInitializer initializer = new DefaultContainerInitializer(new String[] {"P1", "/P1/lib.jar"}) {
+			@Override
 			protected DefaultContainer newContainer(char[][] libPaths) {
 				return new DefaultContainer(libPaths) {
+					@Override
 					public IClasspathEntry[] getClasspathEntries() {
 						try {
 							getJavaProject("P1").getResolvedClasspath(true);
@@ -501,6 +509,7 @@
 		final IJavaProject p1 = createJavaProject("P1");
 		final IJavaProject p2 = createJavaProject("P2");
 		ContainerInitializer.setInitializer(new DefaultContainerInitializer(new String[] {"P3", "/P1"}) {
+			@Override
 	        public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 	            super.initialize(containerPath, project);
 	            getJavaModel().refreshExternalArchives(new IJavaElement[] {p1}, null);
@@ -566,6 +575,7 @@
 			"");
 		simulateExitRestart();
 		DefaultContainerInitializer initializer = new DefaultContainerInitializer(new String[] {}) {
+			@Override
 			public void initialize(IPath containerPath,IJavaProject project) throws CoreException {
 				assertTrue("Should not initialize container on shutdown", false);
 			}
@@ -603,6 +613,7 @@
 			public Initializer(String[] args) {
 				super(args);
 			}
+			@Override
 			public void initialize(IPath containerPath, IJavaProject p) throws CoreException {
 				super.initialize(containerPath, p);
 				this.initialized = true;
@@ -680,6 +691,7 @@
 			Container(String[] values) {
 				super(values);
 			}
+			@Override
 			public void initialize(IPath containerPath, IJavaProject project) 	throws CoreException {
 				this.initializeCount++;
 				super.initialize(containerPath, getJavaProject("P1"));
@@ -712,6 +724,7 @@
 			Container(String[] values) {
 				super(values);
 			}
+			@Override
 			public void initialize(IPath containerPath, IJavaProject project) 	throws CoreException {
 			}
 		}
@@ -792,6 +805,7 @@
 
 		// initialize to the same value
 		ContainerInitializer.setInitializer(new DefaultContainerInitializer(new String[] {"P2", "/P1/lib.jar", "P3", "/P1/lib.jar"}) {
+			@Override
 	        public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 	        	// simulate concurrency (another thread is initializing all containers in parallel and thus this flag is set to true)
 	        	JavaModelManager.getJavaModelManager().batchContainerInitializations = JavaModelManager.NEED_BATCH_INITIALIZATION;
@@ -880,6 +894,7 @@
 		IJavaProject p = createJavaProject("P");
 		final StringBuffer paths = new StringBuffer();
 		DefaultContainerInitializer initializer = new DefaultContainerInitializer(new String[] {"P", "/P/lib.jar"}) {
+			@Override
 			public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 				paths.append(containerPath);
 				paths.append('\n');
@@ -989,6 +1004,7 @@
 
 		JavaProject.addCPResolutionBPListener(listener);
 		thread.start(new Runnable() {
+			@Override
 			public void run() {
 				try {
 					project2.getResolvedClasspath();
@@ -1147,6 +1163,7 @@
 	try {
 		final StringBuffer buffer = new StringBuffer();
 		VariablesInitializer.setInitializer(new VariablesInitializer.ITestInitializer() {
+			@Override
 			public void initialize(String variable) throws JavaModelException {
 				buffer.append("Initializing " + variable + "\n");
 				IPath path = new Path(variable.toLowerCase());
@@ -1168,6 +1185,7 @@
 	try {
 		final StringBuffer buffer = new StringBuffer();
 		VariablesInitializer.setInitializer(new VariablesInitializer.ITestInitializer() {
+			@Override
 			public void initialize(String variable) throws JavaModelException {
 				buffer.append("Initializing " + variable + "\n");
 				IPath path = new Path(variable.toLowerCase());
@@ -1196,6 +1214,7 @@
 	try {
 		final StringBuffer buffer = new StringBuffer();
 		VariablesInitializer.setInitializer(new VariablesInitializer.ITestInitializer() {
+			@Override
 			public void initialize(String variable) {
 				// do nothing
 				buffer.append("Ignoring request to initialize");
@@ -1269,6 +1288,7 @@
 		boolean gotException = false;
 		try {
 			VariablesInitializer.setInitializer(new DefaultVariableInitializer(new String[] {"TEST_LIB", "/P1/lib.jar"}) {
+				@Override
 				public void initialize(String variable) throws JavaModelException {
 					throw new OperationCanceledException("test");
 				}
@@ -1292,6 +1312,7 @@
 public void testVariableInitializer09() throws CoreException {
 	try {
 		VariablesInitializer.setInitializer(new DefaultVariableInitializer(new String[] {"TEST_LIB", "/P1/lib.jar"}) {
+			@Override
 			public void initialize(String variable) throws JavaModelException {
 				JavaCore.removeClasspathVariable("TEST_LIB", null);
 			}
@@ -1314,6 +1335,7 @@
 public void testVariableInitializer10() throws CoreException {
 	try {
 		VariablesInitializer.setInitializer(new DefaultVariableInitializer(new String[] {"TEST_LIB", "/P1/lib.jar"}) {
+			@Override
 			public void initialize(String variable) throws JavaModelException {
 				// don't initialize
 			}
@@ -1713,6 +1735,7 @@
 		Semaphore s2=new Semaphore(0);
 
 		ContainerInitializer.setInitializer(new DefaultContainerInitializer(new String[] {"P2", "/P1/lib.jar", "P3", "/P1/lib.jar"}) {
+			@Override
 			public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 				if (Thread.currentThread() == helperThread) {
 					if (project.getElementName().equals("P2")) {
@@ -1806,6 +1829,7 @@
 		AtomicReference<IJavaProject> p2Project=new AtomicReference<>();
 
 		ContainerInitializer.setInitializer(new DefaultContainerInitializer(new String[] {"P2", "/P1/lib.jar", "P3", "/P1/lib.jar"}) {
+			@Override
 			public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 				if (Thread.currentThread() == helperThread) {
 					if (project.getElementName().equals("P2")) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
index 4b8edbc..91a8723 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java
@@ -113,6 +113,7 @@
 public static Test suite() {
 	return buildModelTestSuite(ClasspathTests.class, BYTECODE_DECLARATION_ORDER);
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	setupExternalJCL("jclMin");
@@ -4483,9 +4484,7 @@
 			IClasspathEntry[] oldClasspath = p[i].getRawClasspath();
 			IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+extraEntries[i].length];
 			System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length);
-			for (int j = 0; j < extraEntries[i].length; j++){
-				newClasspath[oldClasspath.length+j] = extraEntries[i][j];
-			}
+			System.arraycopy(extraEntries[i], 0, newClasspath, oldClasspath.length, extraEntries[i].length);
 			// set classpath
 			p[i].setRawClasspath(newClasspath, null);
 
@@ -4543,9 +4542,7 @@
 			IClasspathEntry[] oldClasspath = p[i].getRawClasspath();
 			IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+extraEntries[i].length];
 			System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length);
-			for (int j = 0; j < extraEntries[i].length; j++){
-				newClasspath[oldClasspath.length+j] = extraEntries[i][j];
-			}
+			System.arraycopy(extraEntries[i], 0, newClasspath, oldClasspath.length, extraEntries[i].length);
 			// set classpath
 			p[i].setRawClasspath(newClasspath, null);
 
@@ -4608,9 +4605,7 @@
 			IClasspathEntry[] oldClasspath = p[i].getRawClasspath();
 			IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+extraEntries[i].length];
 			System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length);
-			for (int j = 0; j < extraEntries[i].length; j++){
-				newClasspath[oldClasspath.length+j] = extraEntries[i][j];
-			}
+			System.arraycopy(extraEntries[i], 0, newClasspath, oldClasspath.length, extraEntries[i].length);
 			// set classpath
 			p[i].setRawClasspath(newClasspath, null);
 
@@ -4703,9 +4698,7 @@
 			IClasspathEntry[] oldClasspath = p[i].getRawClasspath();
 			IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+extraEntries[i].length];
 			System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length);
-			for (int j = 0; j < extraEntries[i].length; j++){
-				newClasspath[oldClasspath.length+j] = extraEntries[i][j];
-			}
+			System.arraycopy(extraEntries[i], 0, newClasspath, oldClasspath.length, extraEntries[i].length);
 			// set classpath
 			p[i].setRawClasspath(newClasspath, null);
 
@@ -4761,9 +4754,7 @@
 			IClasspathEntry[] oldClasspath = p[i].getRawClasspath();
 			IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+extraEntries[i].length];
 			System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length);
-			for (int j = 0; j < extraEntries[i].length; j++){
-				newClasspath[oldClasspath.length+j] = extraEntries[i][j];
-			}
+			System.arraycopy(extraEntries[i], 0, newClasspath, oldClasspath.length, extraEntries[i].length);
 			// set classpath
 			p[i].setRawClasspath(newClasspath, null);
 
@@ -4814,9 +4805,7 @@
 			IClasspathEntry[] oldClasspath = p[i].getRawClasspath();
 			IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+extraEntries[i].length];
 			System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length);
-			for (int j = 0; j < extraEntries[i].length; j++){
-				newClasspath[oldClasspath.length+j] = extraEntries[i][j];
-			}
+			System.arraycopy(extraEntries[i], 0, newClasspath, oldClasspath.length, extraEntries[i].length);
 			// set classpath
 			p[i].setRawClasspath(newClasspath, null);
 
@@ -5152,9 +5141,7 @@
 					IClasspathEntry[] oldClasspath = projects[i].getRawClasspath();
 					IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+extraEntries.length];
 					System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length);
-					for (int j = 0; j < extraEntries.length; j++){
-						newClasspath[oldClasspath.length+j] = extraEntries[j];
-					}
+					System.arraycopy(extraEntries, 0, newClasspath, oldClasspath.length, extraEntries.length);
 					// set classpath
 					projects[i].setRawClasspath(newClasspath, null);
 				}
@@ -5220,9 +5207,7 @@
 					IClasspathEntry[] oldClasspath = projects[i].getRawClasspath();
 					IClasspathEntry[] newClasspath = new IClasspathEntry[oldClasspath.length+extraEntries.length];
 					System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length);
-					for (int j = 0; j < extraEntries.length; j++){
-						newClasspath[oldClasspath.length+j] = extraEntries[j];
-					}
+					System.arraycopy(extraEntries, 0, newClasspath, oldClasspath.length, extraEntries.length);
 					// set classpath
 					long innerStart = System.currentTimeMillis(); // time spent in individual CP setting
 					projects[i].setRawClasspath(newClasspath, null);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTests.java
index d041eac..12ee5a7 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTests.java
@@ -66,6 +66,7 @@
 public static String[] getProjectNames() {
 	return new String[] {"Compiler", "CodeCorrection"};
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 
@@ -103,6 +104,7 @@
 		assertTrue("building failed", false);
 	}
 }
+@Override
 public void tearDownSuite() throws Exception {
 	deleteProject("CodeCorrection");
 
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java
index 665baad..d4ebf36 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CodeCorrectionTestsRequestor.java
@@ -31,6 +31,7 @@
 	}
 
 	class SuggestionComparator implements Comparator {
+		@Override
 		public int compare(Object o1,Object o2) {
 			Suggestion s1 = (Suggestion)o1;
 			Suggestion s2 = (Suggestion)o2;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompilationUnitTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompilationUnitTests.java
index a5d1739..3753612 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompilationUnitTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompilationUnitTests.java
@@ -54,6 +54,7 @@
  */
 /*package*/ static final int JLS3_INTERNAL = AST.JLS3;
 
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 
@@ -131,11 +132,13 @@
 public static Test suite() {
 	return buildModelTestSuite(CompilationUnitTests.class);
 }
+@Override
 protected void tearDown() throws Exception {
 	if (this.workingCopy != null)
 		this.workingCopy.discardWorkingCopy();
 	super.tearDown();
 }
+@Override
 public void tearDownSuite() throws Exception {
 	this.deleteProject("P");
 	super.tearDownSuite();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java
index dadb6be..835ccef 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests.java
@@ -26,6 +26,7 @@
 public CompletionContextTests(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion", "1.4");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests_1_5.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests_1_5.java
index 9c55278..340b034 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests_1_5.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionContextTests_1_5.java
@@ -23,6 +23,7 @@
 public CompletionContextTests_1_5(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion", "1.5");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java
index 421f937..48fade7 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests.java
@@ -51,6 +51,7 @@
 public CompletionTests(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion");
@@ -59,6 +60,7 @@
 	}
 	super.setUpSuite();
 }
+@Override
 public void tearDownSuite() throws Exception {
 	if (COMPLETION_SUITES == null) {
 		deleteProject("Completion");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests10.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests10.java
index 74af66b..1ea9c40 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests10.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests10.java
@@ -27,6 +27,7 @@
 public CompletionTests10(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion", "10");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests11.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests11.java
index bf955c8..b34ad05 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests11.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests11.java
@@ -21,6 +21,7 @@
 public CompletionTests11(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion", "11");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java
index e0d277c..554125d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java
@@ -39,6 +39,7 @@
 	super(name);
 }
 
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion", "1.8", true);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java
index 6efe0c5..1b7fe13 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java
@@ -133,9 +133,11 @@
 		protected DefaultContainer newContainer(final char[][] libPaths, final boolean[] areExperted, final String[] forbiddenRefrences) {
 			return new DefaultContainer(libPaths, areExperted, forbiddenRefrences);
 		}
+		@Override
 		public boolean allowFailureContainer() {
 			return true;
 		}
+		@Override
 		public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 			if (this.containerValues == null) return;
 			try {
@@ -153,6 +155,7 @@
 public CompletionTests2(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (AbstractJavaModelCompletionTests.COMPLETION_PROJECT == null)  {
 		AbstractJavaModelCompletionTests.COMPLETION_PROJECT = setUpJavaProject("Completion");
@@ -162,6 +165,7 @@
 	}
 	super.setUpSuite();
 }
+@Override
 public void tearDownSuite() throws Exception {
 	if (AbstractJavaModelCompletionTests.COMPLETION_SUITES == null) {
 		deleteProject("Completion");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests3.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests3.java
index a6130f0..a34a582 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests3.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests3.java
@@ -24,9 +24,11 @@
 public CompletionTests3(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 }
+@Override
 public void tearDownSuite() throws Exception {
 	super.tearDownSuite();
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests9.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests9.java
index 598fb37..77b6350 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests9.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests9.java
@@ -40,6 +40,7 @@
 	super(name);
 }
 
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion", "9", true);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTestsRequestor2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTestsRequestor2.java
index 148f875..fbfef08 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTestsRequestor2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTestsRequestor2.java
@@ -275,6 +275,7 @@
 	public String getReversedResults() {
 		if(this.proposalsPtr < 0) return "";
 		Arrays.sort(this.proposals, new Comparator() {
+			@Override
 			public int compare(Object o1, Object o2) {
 				if (o1 == o2)
 					return 0;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java
index 0cd6699..da05e29 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests_1_5.java
@@ -34,6 +34,7 @@
 public CompletionTests_1_5(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion", "1.5");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests.java
index f48010b..e243810 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests.java
@@ -27,6 +27,7 @@
 public CompletionWithMissingTypesTests(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests2.java
index 9d7867f..ce3c317 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests2.java
@@ -30,6 +30,7 @@
 public CompletionWithMissingTypesTests2(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (AbstractJavaModelCompletionTests.COMPLETION_PROJECT == null)  {
 		AbstractJavaModelCompletionTests.COMPLETION_PROJECT = setUpJavaProject("Completion");
@@ -39,6 +40,7 @@
 	}
 	super.setUpSuite();
 }
+@Override
 public void tearDownSuite() throws Exception {
 	if (AbstractJavaModelCompletionTests.COMPLETION_SUITES == null) {
 		deleteProject("Completion");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests_1_5.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests_1_5.java
index 1e20dd0..46c4586 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests_1_5.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionWithMissingTypesTests_1_5.java
@@ -25,6 +25,7 @@
 public CompletionWithMissingTypesTests_1_5(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	if (COMPLETION_PROJECT == null)  {
 		COMPLETION_PROJECT = setUpJavaProject("Completion", "1.5");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveElementsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveElementsTests.java
index ede3d0c..03d0227 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveElementsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveElementsTests.java
@@ -24,6 +24,7 @@
 public CopyMoveElementsTests(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 
@@ -42,6 +43,7 @@
 /**
  * Setup for the next test.
  */
+@Override
 public void setUp() throws Exception {
 	super.setUp();
 
@@ -62,10 +64,12 @@
 /**
  * Cleanup after the previous test.
  */
+@Override
 public void tearDown() throws Exception {
 	this.deleteProject("P");
 	super.tearDown();
 }
+@Override
 public void tearDownSuite() throws Exception {
 	this.deleteProject("BinaryProject");
 	super.tearDownSuite();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java
index 67cc712..ab024f7 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CopyMoveResourcesTests.java
@@ -36,6 +36,7 @@
  * and forcing. The operation should succeed, so any exceptions
  * encountered are thrown.
  */
+@Override
 public IJavaElement copyPositive(IJavaElement element, IJavaElement container, IJavaElement sibling, String rename, boolean force) throws JavaModelException {
 	DeltaListener listener = new DeltaListener();
 	try {
@@ -110,6 +111,7 @@
  * and forcing. The operation should succeed, so any exceptions
  * encountered are thrown.
  */
+@Override
 public void movePositive(IJavaElement[] elements, IJavaElement[] destinations, IJavaElement[] siblings, String[] names, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	DeltaListener listener = new DeltaListener();
 	try {
@@ -206,6 +208,7 @@
 /**
  * Setup for the next test.
  */
+@Override
 public void setUp() throws Exception {
 	super.setUp();
 
@@ -220,6 +223,7 @@
 /**
  * Cleanup after the previous test.
  */
+@Override
 public void tearDown() throws Exception {
 	this.deleteProject("P");
 
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateCompilationUnitTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateCompilationUnitTests.java
index 845f44f..4c8a0f4 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateCompilationUnitTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateCompilationUnitTests.java
@@ -31,12 +31,14 @@
 public static Test suite() {
 	return buildModelTestSuite(CreateCompilationUnitTests.class);
 }
+@Override
 public void setUp() throws Exception {
 	super.setUp();
 	createJavaProject("P");
 	createFolder("/P/p");
 	startDeltas();
 }
+@Override
 public void tearDown() throws Exception {
 	stopDeltas();
 	deleteProject("P");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateImportsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateImportsTests.java
index 68a75f5..6e4b68f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateImportsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateImportsTests.java
@@ -38,6 +38,7 @@
 	public static Test suite() {
 		return buildModelTestSuite(CreateImportsTests.class);
 	}
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		ICompilationUnit workingCopy = getCompilationUnit("P/X.java");
@@ -48,10 +49,12 @@
 			"}"
 		);
 	}
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		createJavaProject("P", new String[] {""}, new String[] {"JCL15_LIB"}, "", "1.5");
 	}
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteProject("P");
 		super.tearDownSuite();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java
index de21d21..4c1f690 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java
@@ -40,10 +40,12 @@
 	public static Test suite() {
 		return buildModelTestSuite(CreateMembersTests.class, ALPHABETICAL_SORT);
 	}
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		setUpJavaProject("CreateMembers", "1.5");
 	}
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteProject("CreateMembers");
 
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMethodSourceExamplesTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMethodSourceExamplesTests.java
index 069ce7c..a71709c 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMethodSourceExamplesTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMethodSourceExamplesTests.java
@@ -28,6 +28,7 @@
 public CreateMethodSourceExamplesTests(String name) {
 	super(name);
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	this.domFactory = new DOMFactory();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreatePackageTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreatePackageTests.java
index d9f29e3..749f4dc 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreatePackageTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreatePackageTests.java
@@ -28,12 +28,14 @@
 public static Test suite() {
 	return buildModelTestSuite(CreatePackageTests.class);
 }
+@Override
 public void setUp() throws Exception {
 	super.setUp();
 	createJavaProject("P");
 	createFolder("/P/p");
 	startDeltas();
 }
+@Override
 public void tearDown() throws Exception {
 	stopDeltas();
 	deleteProject("P");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateTypeSourceExamplesTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateTypeSourceExamplesTests.java
index 56b0254..12629f8 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateTypeSourceExamplesTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateTypeSourceExamplesTests.java
@@ -30,6 +30,7 @@
 public static Test suite() {
 	return buildModelTestSuite(CreateTypeSourceExamplesTests.class);
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	this.domFactory = new DOMFactory();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DefaultContainerInitializer.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DefaultContainerInitializer.java
index 1a1b1cb..7c31a99 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DefaultContainerInitializer.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DefaultContainerInitializer.java
@@ -77,9 +77,11 @@
 	protected DefaultContainerInitializer.DefaultContainer newContainer(final char[][] libPaths) {
 		return new DefaultContainer(libPaths);
 	}
+	@Override
 	public boolean allowFailureContainer() {
 		return true;
 	}
+	@Override
 	public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 		if (this.containerValues == null) return;
 		try {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DefaultJavaElementComparator.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DefaultJavaElementComparator.java
index ac8f7c8..5a1044c 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DefaultJavaElementComparator.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DefaultJavaElementComparator.java
@@ -224,6 +224,7 @@
 	 * by their original relative positions.
 	 * </p>
 	 */
+	@Override
 	public int compare(Object o1, Object o2) {
 		if (!(o1 instanceof BodyDeclaration) && !(o2 instanceof BodyDeclaration)) {
 			throw new ClassCastException();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DeleteTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DeleteTests.java
index d69bd71..a43e7f6 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DeleteTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/DeleteTests.java
@@ -34,11 +34,13 @@
 public DeleteTests(String name) {
 	super(name);
 }
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	// ensure that indexing is not going to interfer with deletion
 	waitUntilIndexesReady();
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	createJavaProject("P");
@@ -53,6 +55,7 @@
 //		TESTS_NUMBERS = new int[] { 2, 12 };
 //		TESTS_RANGE = new int[] { 16, -1 };
 }
+@Override
 public void tearDownSuite() throws Exception {
 	deleteProject("P");
 	super.tearDownSuite();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/EncodingTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/EncodingTests.java
index 3534c10..82315c9 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/EncodingTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/EncodingTests.java
@@ -71,6 +71,7 @@
 //		TESTS_RANGE = new int[] { 16, -1 };
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		wkspEncoding = getWorkspaceRoot().getDefaultCharset();
@@ -80,11 +81,13 @@
 		this.utf8File = (IFile) this.encodingProject.findMember("src/testUTF8/Test.java");
 	}
 
+	@Override
 	public void tearDownSuite() throws Exception {
 		super.tearDownSuite();
 		getWorkspaceRoot().setDefaultCharset(null, null);
 		deleteProject("Encoding");
 	}
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 	}
@@ -94,6 +97,7 @@
 	 * Reset UTF-8 file and project charset to default.
 	 * @see junit.framework.TestCase#tearDown()
 	 */
+	@Override
 	protected void tearDown() throws Exception {
 		this.encodingProject.setDefaultCharset(null, null);
 		if (this.utf8File.exists()) this.utf8File.setCharset(null, null);
@@ -130,6 +134,7 @@
 		}
 	}
 
+	@Override
 	public boolean convertToIndependantLineDelimiter(File file) {
 		return false; // don't convert to independant line delimiter as this make tests fail on linux
 	}
@@ -702,6 +707,7 @@
 			try {
 				InputStream in = new InputStream() {
 					int current = -1;
+					@Override
 					public int read() throws IOException {
 						int result;
 						if (this.current != -1) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java
index dce553f..028b7ad 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java
@@ -34,6 +34,7 @@
 protected void setClasspath(String[] sourceFoldersAndExclusionPatterns) throws JavaModelException {
 	this.project.setRawClasspath(createClasspath(sourceFoldersAndExclusionPatterns, false/*no inclusion*/, true/*exclusion*/), null);
 }
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	this.project = createJavaProject("P", new String[] {"src"}, "bin");
@@ -51,6 +52,7 @@
 	return buildModelTestSuite(ExclusionPatternsTests.class);
 }
 
+@Override
 protected void tearDown() throws Exception {
 	stopDeltas();
 	deleteProject("P");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations17Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations17Test.java
index 3a61913..a1ff780 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations17Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations17Test.java
@@ -73,15 +73,18 @@
 	/**
 	 * @deprecated indirectly uses deprecated class PackageAdmin
 	 */
+	@Override
 	protected Bundle[] getAnnotationBundles() {
 		return org.eclipse.jdt.core.tests.Activator.getPackageAdmin().getBundles("org.eclipse.jdt.annotation", "[1.1.0,2.0.0)");
 	}
 
+	@Override
 	public String getSourceWorkspacePath() {
 		// we read individual projects from within this folder:
 		return super.getSourceWorkspacePathBase()+"/ExternalAnnotations17";
 	}
 
+	@Override
 	public void test1FullBuild() throws Exception {
 		setupJavaProject("Test1");
 		this.project.setOption(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.ERROR);
@@ -100,6 +103,7 @@
 	}
 
 	/** Perform full build, annotations are found relative to a variable. */
+	@Override
 	public void test1FullBuildWithVariable() throws Exception {
 		setupJavaProject("Test1");
 		this.project.setOption(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.ERROR);
@@ -341,6 +345,7 @@
 	}
 
 	/** Reconcile an individual CU. */
+	@Override
 	public void test1Reconcile() throws Exception {
 		setupJavaProject("Test1");
 		this.project.setOption(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.ERROR);
@@ -361,6 +366,7 @@
 					new int[]{ 7, 8, 9});
 	}
 
+	@Override
 	public void testLibsWithFields() throws Exception {
 		myCreateJavaProject("TestLibs");
 		addLibraryWithExternalAnnotations(this.project, "lib1.jar", "annots", new String[] {
@@ -472,6 +478,7 @@
 	}
 
 
+	@Override
 	public void testAnnotateFieldWithParameterizedType() throws Exception {
 		myCreateJavaProject("TestLibs");
 		addLibraryWithExternalAnnotations(this.project, "lib1.jar", "annots", new String[] {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java
index 36b24d8..06ff023 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations18Test.java
@@ -94,6 +94,7 @@
 			public int getKind() { return 0; }
 		}
 
+		@Override
 		public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 			String[] jars = Util.getJavaClassLibs();
 			IClasspathEntry[] entries = new IClasspathEntry[jars.length];
@@ -112,6 +113,7 @@
 					new IClasspathContainer[] { new TestContainer(new Path(TEST_CONTAINER_NAME), entries) },
 					null);
 		}
+		@Override
 		public boolean allowFailureContainer() {
 			return false;
 		}
@@ -163,6 +165,7 @@
 		return buildModelTestSuite(ExternalAnnotations18Test.class, BYTECODE_DECLARATION_ORDER);
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 
@@ -192,11 +195,13 @@
 		return org.eclipse.jdt.core.tests.Activator.getPackageAdmin().getBundles("org.eclipse.jdt.annotation", "[2.0.0,3.0.0)");
 	}
 
+	@Override
 	public void tearDownSuite() throws Exception {
 		super.tearDownSuite();
 		ContainerInitializer.setInitializer(null);
 	}
 
+	@Override
 	public String getSourceWorkspacePath() {
 		// we read individual projects from within this folder:
 		return super.getSourceWorkspacePath()+"/ExternalAnnotations18";
@@ -258,6 +263,7 @@
 		assertNotNull("Should not be null", this.root); //$NON-NLS-1$
 	}
 
+	@Override
 	protected void tearDown() throws Exception {
 		if (this.project != null)
 			this.project.getProject().delete(true, true, null);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations9Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations9Test.java
index 5083ab3..5aa36ad 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations9Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExternalAnnotations9Test.java
@@ -55,6 +55,7 @@
 		return buildModelTestSuite(ExternalAnnotations9Test.class, BYTECODE_DECLARATION_ORDER);
 	}
 
+	@Override
 	public String getSourceWorkspacePath() {
 		// we read individual projects from within this folder:
 		return super.getSourceWorkspacePathBase()+"/ExternalAnnotations9";
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/GetSourceTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/GetSourceTests.java
index ce09175..835bb98 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/GetSourceTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/GetSourceTests.java
@@ -59,6 +59,7 @@
 		return field;
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		createJavaProject("P");
@@ -105,6 +106,7 @@
 		createFile("/P/p/Constants.java", cuSource);
 	}
 
+	@Override
 	public void tearDownSuite() throws Exception {
 		deleteProject("P");
 		super.tearDownSuite();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/InclusionPatternsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/InclusionPatternsTests.java
index ee8920f..5d2c0ba 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/InclusionPatternsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/InclusionPatternsTests.java
@@ -39,12 +39,14 @@
 protected void setClasspath(String[] sourceFoldersAndInclusionPatterns) throws JavaModelException {
 	this.project.setRawClasspath(createClasspath(sourceFoldersAndInclusionPatterns, true/*inclusion*/, false/*no exclusion*/), null);
 }
+@Override
 protected void setUp() throws Exception {
 	super.setUp();
 	this.project = createJavaProject( "P", new String[] {"src"}, new String[] {}, new String[] {}, new boolean[] {}, "bin", new String[] {"bin"}, new String[][] {new String[] {}}, new String[][] {new String[] {"**"}}, "1.4");
 	startDeltas();
 }
 
+@Override
 protected void tearDown() throws Exception {
 	stopDeltas();
 	deleteProject("P");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaLikeExtensionsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaLikeExtensionsTests.java
index be8804b..a729cf2 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaLikeExtensionsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaLikeExtensionsTests.java
@@ -41,6 +41,7 @@
 		return buildModelTestSuite(JavaLikeExtensionsTests.class);
 	}
 
+	@Override
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		Util.resetJavaLikeExtensions();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelTests.java
index e50b7d6..3464263 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelTests.java
@@ -550,6 +550,7 @@
 			public CancellingInitializer(String[] values) {
 				super(values);
 			}
+			@Override
 			public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 				super.initialize(containerPath, project);
 				if (--this.count == 0)
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java
index 9ca6a7e..c16931d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java
@@ -89,12 +89,14 @@
 
 	return suite;
 }
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	setUpJavaProject("JavaProjectTests");
 	setUpJavaProject("JavaProjectSrcTests");
 	setUpJavaProject("JavaProjectLibTests");
 }
+@Override
 public void tearDownSuite() throws Exception {
 	deleteProject("JavaProjectTests");
 	deleteProject("JavaProjectSrcTests");
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs10Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs10Tests.java
index c040ab6..a11dc85 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs10Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs10Tests.java
@@ -43,11 +43,13 @@
 	return buildModelTestSuite(JavaSearchBugs10Tests.class, BYTECODE_DECLARATION_ORDER);
 }
 class TestCollector extends JavaSearchResultCollector {
+	@Override
 	public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
 		super.acceptSearchMatch(searchMatch);
 	}
 }
 class ReferenceCollector extends JavaSearchResultCollector {
+	@Override
 	protected void writeLine() throws CoreException {
 		super.writeLine();
 		ReferenceMatch refMatch = (ReferenceMatch) this.match;
@@ -68,6 +70,7 @@
 
 }
 class TypeReferenceCollector extends ReferenceCollector {
+	@Override
 	protected void writeLine() throws CoreException {
 		super.writeLine();
 		TypeReferenceMatch typeRefMatch = (TypeReferenceMatch) this.match;
@@ -92,6 +95,7 @@
 	}
 }
 
+	@Override
 IJavaSearchScope getJavaSearchScope() {
 	return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearchBugs")});
 }
@@ -99,6 +103,7 @@
 	if (packageName == null) return getJavaSearchScope();
 	return getJavaSearchPackageScope("JavaSearchBugs", packageName, addSubpackages);
 }
+@Override
 public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
 	if (this.wcOwner == null) {
 		this.wcOwner = new WorkingCopyOwner() {};
@@ -110,10 +115,12 @@
 	super.setUpSuite();
 	JAVA_PROJECT = setUpJavaProject("JavaSearchBugs", "10");
 }
+@Override
 public void tearDownSuite() throws Exception {
 	deleteProject("JavaSearchBugs");
 	super.tearDownSuite();
 }
+@Override
 protected void setUp () throws Exception {
 	super.setUp();
 	this.resultCollector = new TestCollector();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs14Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs14Tests.java
index 231c55c..f52e17e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs14Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs14Tests.java
@@ -998,4 +998,30 @@
 				"src/X.java void cl.method1() [yz] EXACT_MATCH\n" +
 				"src/X.java void cl.method1() [yz] EXACT_MATCH");
 	}
+	public void testBug561132_033() throws CoreException {
+		this.workingCopies = new ICompilationUnit[1];
+		this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+				"public class cl {\n"+
+						"public cl() {\n"+
+						"	method1();\n"+
+						"}\n"+
+						"private void method1() {\n"+
+						"	String y= this.toString();\n"+
+						"	if (y instanceof String yz) {\n"+
+						"	      System.out.println(/*here*/yz.toLowerCase());\n"+
+						"	}\n"+
+						"}\n"+
+						"}\n"
+				);
+
+		String str = this.workingCopies[0].getSource();
+		String selection = "/*here*/yz";
+		int start = str.indexOf(selection);
+		int length = selection.length();
+
+		IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
+		assertTrue(elements.length ==1);
+		assertTrue((elements[0] instanceof LocalVariable));
+
+	}
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs8Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs8Tests.java
index 8cd2127..0c12d24 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs8Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs8Tests.java
@@ -60,11 +60,13 @@
 	return buildModelTestSuite(JavaSearchBugs8Tests.class, BYTECODE_DECLARATION_ORDER);
 }
 class TestCollector extends JavaSearchResultCollector {
+	@Override
 	public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
 		super.acceptSearchMatch(searchMatch);
 	}
 }
 class ReferenceCollector extends JavaSearchResultCollector {
+	@Override
 	protected void writeLine() throws CoreException {
 		super.writeLine();
 		ReferenceMatch refMatch = (ReferenceMatch) this.match;
@@ -85,6 +87,7 @@
 
 }
 class TypeReferenceCollector extends ReferenceCollector {
+	@Override
 	protected void writeLine() throws CoreException {
 		super.writeLine();
 		TypeReferenceMatch typeRefMatch = (TypeReferenceMatch) this.match;
@@ -109,6 +112,7 @@
 	}
 }
 
+@Override
 IJavaSearchScope getJavaSearchScope() {
 	return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearchBugs")});
 }
@@ -116,6 +120,7 @@
 	if (packageName == null) return getJavaSearchScope();
 	return getJavaSearchPackageScope("JavaSearchBugs", packageName, addSubpackages);
 }
+@Override
 public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
 	if (this.wcOwner == null) {
 		this.wcOwner = new WorkingCopyOwner() {};
@@ -125,14 +130,17 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.model.SuiteOfTestCases#setUpSuite()
  */
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	JAVA_PROJECT = setUpJavaProject("JavaSearchBugs", "1.8");
 }
+@Override
 public void tearDownSuite() throws Exception {
 	deleteProject("JavaSearchBugs");
 	super.tearDownSuite();
 }
+@Override
 protected void setUp () throws Exception {
 	super.setUp();
 	this.resultCollector = new TestCollector();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs9Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs9Tests.java
index a8c0148..b7e986d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs9Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs9Tests.java
@@ -72,11 +72,13 @@
 	return buildModelTestSuite(JavaSearchBugs9Tests.class, BYTECODE_DECLARATION_ORDER);
 }
 class TestCollector extends JavaSearchResultCollector {
+	@Override
 	public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
 		super.acceptSearchMatch(searchMatch);
 	}
 }
 class ReferenceCollector extends JavaSearchResultCollector {
+	@Override
 	protected void writeLine() throws CoreException {
 		super.writeLine();
 		ReferenceMatch refMatch = (ReferenceMatch) this.match;
@@ -97,6 +99,7 @@
 
 }
 class TypeReferenceCollector extends ReferenceCollector {
+	@Override
 	protected void writeLine() throws CoreException {
 		super.writeLine();
 		TypeReferenceMatch typeRefMatch = (TypeReferenceMatch) this.match;
@@ -121,6 +124,7 @@
 	}
 }
 
+@Override
 IJavaSearchScope getJavaSearchScope() {
 	return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearchBugs")});
 }
@@ -128,6 +132,7 @@
 	if (packageName == null) return getJavaSearchScope();
 	return getJavaSearchPackageScope("JavaSearchBugs", packageName, addSubpackages);
 }
+@Override
 public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
 	if (this.wcOwner == null) {
 		this.wcOwner = new WorkingCopyOwner() {};
@@ -137,14 +142,17 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.model.SuiteOfTestCases#setUpSuite()
  */
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	JAVA_PROJECT = setUpJavaProject("JavaSearchBugs", "9");
 }
+@Override
 public void tearDownSuite() throws Exception {
 	deleteProject("JavaSearchBugs");
 	super.tearDownSuite();
 }
+@Override
 protected void setUp () throws Exception {
 	super.setUp();
 	this.resultCollector = new TestCollector();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java
index bcafaf6..5698434 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java
@@ -123,12 +123,14 @@
 }
 class TestCollector extends JavaSearchResultCollector {
 	public List matches = new ArrayList();
+	@Override
 	public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
 		super.acceptSearchMatch(searchMatch);
 		this.matches.add(searchMatch);
 	}
 }
 class ReferenceCollector extends JavaSearchResultCollector {
+	@Override
 	protected void writeLine() throws CoreException {
 		super.writeLine();
 		ReferenceMatch refMatch = (ReferenceMatch) this.match;
@@ -149,6 +151,7 @@
 
 }
 class TypeReferenceCollector extends ReferenceCollector {
+	@Override
 	protected void writeLine() throws CoreException {
 		super.writeLine();
 		TypeReferenceMatch typeRefMatch = (TypeReferenceMatch) this.match;
@@ -173,6 +176,7 @@
 	}
 }
 
+@Override
 IJavaSearchScope getJavaSearchScope() {
 	return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearchBugs")});
 }
@@ -180,6 +184,7 @@
 	if (packageName == null) return getJavaSearchScope();
 	return getJavaSearchPackageScope("JavaSearchBugs", packageName, addSubpackages);
 }
+@Override
 public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
 	if (this.wcOwner == null) {
 		this.wcOwner = new WorkingCopyOwner() {};
@@ -189,6 +194,7 @@
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.tests.model.SuiteOfTestCases#setUpSuite()
  */
+@Override
 public void setUpSuite() throws Exception {
 	super.setUpSuite();
 	JAVA_PROJECT = setUpJavaProject("JavaSearchBugs", "1.5");
@@ -198,10 +204,12 @@
 	addLibraryEntry(JAVA_PROJECT, "/JavaSearchBugs/lib/b164791.jar", false);
 	addLibraryEntry(JAVA_PROJECT, "/JavaSearchBugs/lib/b166348.jar", false);
 }
+@Override
 public void tearDownSuite() throws Exception {
 	deleteProject("JavaSearchBugs");
 	super.tearDownSuite();
 }
+@Override
 protected void setUp () throws Exception {
 	super.setUp();
 	this.resultCollector = new TestCollector();
@@ -6999,6 +7007,7 @@
  */
 public void testBug127628() throws CoreException {
 	class DeprecatedTypesRequestor extends SearchTests.SearchTypeNameRequestor {
+		@Override
 		public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path) {
 			if ((modifiers & ClassFileConstants.AccDeprecated) != 0) {
 				char[] typeName =
@@ -8214,6 +8223,7 @@
 public void testBug160323() throws CoreException {
 	// Search all type names with TypeNameMatchRequestor
 	TypeNameMatchCollector collector = new TypeNameMatchCollector() {
+		@Override
 		public String toString(){
 			return toFullyQualifiedNamesString();
 		}
@@ -8255,6 +8265,7 @@
 	boolean debug = false;
 	// Search all type names with new API
 	TypeNameMatchCollector collector = new TypeNameMatchCollector() {
+		@Override
 		public String toString(){
 			return toFullyQualifiedNamesString();
 		}
@@ -8283,6 +8294,7 @@
 public void testBug160324b() throws CoreException {
 	// Search all type names with new API
 	TypeNameMatchCollector collector = new TypeNameMatchCollector() {
+		@Override
 		public String toString(){
 			return toFullyQualifiedNamesString();
 		}
@@ -8330,6 +8342,7 @@
 	};
 	// Search all type names with new API
 	TypeNameMatchCollector collector = new TypeNameMatchCollector() {
+		@Override
 		public String toString(){
 			return toFullyQualifiedNamesString();
 		}
@@ -8368,6 +8381,7 @@
 	};
 	// Search all type names with new API
 	TypeNameMatchCollector collector = new TypeNameMatchCollector() {
+		@Override
 		public String toString(){
 			return toFullyQualifiedNamesString();
 		}
@@ -8438,6 +8452,7 @@
 	};
 	// Search all type names with new API
 	TypeNameMatchCollector collector = new TypeNameMatchCollector() {
+		@Override
 		public String toString(){
 			return toFullyQualifiedNamesString();
 		}
@@ -8476,6 +8491,7 @@
 public void testBug163984() throws CoreException {
 	// Search all type names with TypeNameMatchRequestor
 	TypeNameMatchCollector collector = new TypeNameMatchCollector() {
+		@Override
 		public String toString(){
 			return toFullyQualifiedNamesString();
 		}
@@ -8556,6 +8572,7 @@
 public void testBug164791() throws CoreException {
 	IType type = getClassFile("JavaSearchBugs", "lib/b164791.jar", "pack", "ELPM.class").getType();
 	JavaSearchResultCollector collector = new JavaSearchResultCollector() {
+		@Override
 		public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
 			super.acceptSearchMatch(searchMatch);
 			IJavaElement element = (IJavaElement) searchMatch.getElement();
@@ -8613,6 +8630,7 @@
 	};
 	// Search all type names with TypeNameMatchRequestor
 	TypeNameMatchCollector collector = new TypeNameMatchCollector() {
+		@Override
 		public String toString(){
 			return toFullyQualifiedNamesString();
 		}
@@ -8679,6 +8697,7 @@
 		"}\n"
 	);
 	JavaSearchResultCollector testCollector = new JavaSearchResultCollector() {
+		@Override
 		public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
 	        super.acceptSearchMatch(searchMatch);
 	        assertTrue("Method reference match should be super invocation one!", ((MethodReferenceMatch)searchMatch).isSuperInvocation());
@@ -9019,6 +9038,7 @@
 
 	final String qualifiedType = "a.b.c.Foo196339";
 	JavaSearchResultCollector collector = new JavaSearchResultCollector() {
+		@Override
 		public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
         Object element = searchMatch.getElement();
         if (element instanceof IType) {
@@ -9072,8 +9092,10 @@
  */
 public void testBug199004_SystemLibraries() throws CoreException {
 	DefaultContainerInitializer intializer = new DefaultContainerInitializer(new String[] {"JavaSearchBugs", "/JavaSearchBugs/lib/b199004.jar"}) {
+		@Override
 		protected DefaultContainer newContainer(char[][] libPaths) {
 			return new DefaultContainer(libPaths) {
+				@Override
 				public int getKind() {
 					return IClasspathContainer.K_SYSTEM;
 				}
@@ -9096,8 +9118,10 @@
 }
 public void testBug199004_DefaultSystemLibraries() throws CoreException {
 	DefaultContainerInitializer intializer = new DefaultContainerInitializer(new String[] {"JavaSearchBugs", "/JavaSearchBugs/lib/b199004.jar"}) {
+		@Override
 		protected DefaultContainer newContainer(char[][] libPaths) {
 			return new DefaultContainer(libPaths) {
+				@Override
 				public int getKind() {
 					return IClasspathContainer.K_DEFAULT_SYSTEM;
 				}
@@ -9120,8 +9144,10 @@
 }
 public void testBug199004_ApplicationLibraries() throws CoreException {
 	DefaultContainerInitializer intializer = new DefaultContainerInitializer(new String[] {"JavaSearchBugs", "/JavaSearchBugs/lib/b199004.jar"}) {
+		@Override
 		protected DefaultContainer newContainer(char[][] libPaths) {
 			return new DefaultContainer(libPaths) {
+				@Override
 				public int getKind() {
 					return IClasspathContainer.K_SYSTEM;
 				}
@@ -9146,8 +9172,10 @@
 }
 public void testBug199004_NoMask() throws CoreException {
 	DefaultContainerInitializer intializer = new DefaultContainerInitializer(new String[] {"JavaSearchBugs", "/JavaSearchBugs/lib/b199004.jar"}) {
+		@Override
 		protected DefaultContainer newContainer(char[][] libPaths) {
 			return new DefaultContainer(libPaths) {
+				@Override
 				public int getKind() {
 					return IClasspathContainer.K_SYSTEM;
 				}
@@ -10712,6 +10740,7 @@
 		final SearchPattern pattern = SearchPattern.createPattern("X*", IJavaSearchConstants.DECLARATIONS, IJavaSearchConstants.TYPE, SearchPattern.R_PATTERN_MATCH);
 		final IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { javaProject });
 		Runnable search = new Runnable() {
+			@Override
 			public void run() {
 				try {
 					new SearchEngine().search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, requestor, null);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests2.java
index d9c801f..f680ef0 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests2.java
Binary files differ
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchFineGrainTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchFineGrainTests.java
index 389b2b9..7476f72 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchFineGrainTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchFineGrainTests.java
@@ -54,9 +54,11 @@
 //	org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true;
 }
 
+@Override
 IJavaSearchScope getJavaSearchScope() {
 	return super.getJavaSearchScope15();
 }
+@Override
 public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
 	if (this.wcOwner == null) {
 		this.wcOwner = new WorkingCopyOwner() {};
@@ -64,6 +66,7 @@
 	return getWorkingCopy(path, source, this.wcOwner);
 }
 
+@Override
 protected void setUp () throws Exception {
 	super.setUp();
 	this.resultCollector = new JavaSearchResultCollector();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorEquivalentTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorEquivalentTests.java
index 97b0eed..7c2656c 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorEquivalentTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorEquivalentTests.java
@@ -45,6 +45,7 @@
 	/*
 	 * Add line to result only if it is not an erasure match rule.
 	 */
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		if (!CharOperation.match(RESULT_ERASURE_MATCH, line, true)) {
 			super.addResultLine(buffer, line);
@@ -54,6 +55,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.JavaSearchGenericTypeTests#removeFirstTypeArgument(char[])
 	 */
+	@Override
 	long removeFirstTypeArgument(char[] line) {
 		return -1;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorExactTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorExactTests.java
index 35aaa86..4010f27 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorExactTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorExactTests.java
@@ -45,6 +45,7 @@
 	/*
 	 * Do not add line if this is not an exact match rule.
 	 */
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		if (CharOperation.match(RESULT_EXACT_MATCH, line, true)) {
 			super.addResultLine(buffer, line);
@@ -54,6 +55,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.JavaSearchGenericTypeTests#removeFirstTypeArgument(char[])
 	 */
+	@Override
 	long removeFirstTypeArgument(char[] line) {
 		return -1;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorTests.java
index 1a76c7f..077557a 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericConstructorTests.java
@@ -69,6 +69,7 @@
 		return ((long)start<<32) + idx;
 	}
 
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		long positions = removeFirstTypeArgument(line);
 		if (buffer.length() > 0) buffer.append('\n');
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericFieldTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericFieldTests.java
index c638e7e..121e6af 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericFieldTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericFieldTests.java
@@ -31,6 +31,7 @@
 	return buildModelTestSuite(JavaSearchGenericFieldTests.class);
 }
 
+@Override
 protected void setUp () throws Exception {
 	super.setUp();
 	this.resultCollector.showAccuracy(true);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodEquivalentTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodEquivalentTests.java
index 592c23d..20ddbfd 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodEquivalentTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodEquivalentTests.java
@@ -46,6 +46,7 @@
 	/*
 	 * Add line to result only if it is not an erasure match rule.
 	 */
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		if (!CharOperation.match(RESULT_ERASURE_MATCH, line, true) &&
 			!CharOperation.match(RESULT_POTENTIAL_MATCH, line, true)) {
@@ -56,6 +57,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.JavaSearchGenericTypeTests#removeFirstTypeArgument(char[])
 	 */
+	@Override
 	long removeFirstTypeArgument(char[] line) {
 		return -1;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodExactTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodExactTests.java
index 7e27f91..57ee599 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodExactTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodExactTests.java
@@ -45,6 +45,7 @@
 	/*
 	 * Do not add line if this is not an exact match rule.
 	 */
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		if (CharOperation.match(RESULT_EXACT_MATCH, line, true)) {
 			super.addResultLine(buffer, line);
@@ -54,6 +55,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.JavaSearchGenericTypeTests#removeFirstTypeArgument(char[])
 	 */
+	@Override
 	long removeFirstTypeArgument(char[] line) {
 		return -1;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodTests.java
index 820b247..dcdc928 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericMethodTests.java
@@ -69,6 +69,7 @@
 		return ((long)start<<32) + idx;
 	}
 
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		long positions = removeFirstTypeArgument(line);
 		if (buffer.length() > 0) buffer.append('\n');
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeEquivalentTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeEquivalentTests.java
index 1d7c972..79e17c4 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeEquivalentTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeEquivalentTests.java
@@ -47,6 +47,7 @@
 	/*
 	 * Add line to result only if it is not an erasure match rule.
 	 */
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		if (!CharOperation.match(RESULT_ERASURE_MATCH, line, true)) {
 			super.addResultLine(buffer, line);
@@ -56,6 +57,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.JavaSearchGenericTypeTests#removeLastTypeArgument(char[])
 	 */
+	@Override
 	int[] removeLastTypeArgument(char[] line) {
 		return null;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeExactTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeExactTests.java
index 20a9c06..6d8ff05 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeExactTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeExactTests.java
@@ -54,6 +54,7 @@
 	/*
 	 * Do not add line if this is not an exact match rule.
 	 */
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		if (CharOperation.match(RESULT_EXACT_MATCH, line, true)) {
 			super.addResultLine(buffer, line);
@@ -63,6 +64,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.JavaSearchGenericTypeTests#removeLastTypeArgument(char[])
 	 */
+	@Override
 	int[] removeLastTypeArgument(char[] line) {
 		return null;
 	}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeTests.java
index 084ca11..ba18733 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchGenericTypeTests.java
@@ -48,6 +48,7 @@
 		return buildModelTestSuite(JavaSearchGenericTypeTests.class);
 	}
 
+	@Override
 	protected void setUp () throws Exception {
 		super.setUp();
 		this.resultCollector.showAccuracy(true);
@@ -85,6 +86,7 @@
 		return null;
 	}
 
+	@Override
 	void addResultLine(StringBuffer buffer, char[] line) {
 		int[] positions = removeLastTypeArgument(line);
 		if (buffer.length() > 0) buffer.append('\n');
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchJavadocTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchJavadocTests.java
index 6996bd7..20057a5 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchJavadocTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchJavadocTests.java
@@ -42,6 +42,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.SuiteOfTestCases#setUpSuite()
 	 */
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
 		this.originalOptions = JAVA_PROJECT.getOptions(true);
@@ -52,6 +53,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.jdt.core.tests.model.SuiteOfTestCases#tearDownSuite()
 	 */
+	@Override
 	public void tearDown() throws Exception {
 		JAVA_PROJECT.setOptions(this.originalOptions);
 		super.tearDown();
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java
index 4260e36..a217d26 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java
@@ -892,6 +892,7 @@
 
 		// Search all type names with TypeNameMatchRequestor
 		AbstractJavaSearchTests.TypeNameMatchCollector collector = new AbstractJavaSearchTests.TypeNameMatchCollector() {
+			@Override
 			public String toString(){
 				return toFullyQualifiedNamesString();
 			}
@@ -1081,6 +1082,7 @@
 
 		// Search all type names with TypeNameMatchRequestor
 		AbstractJavaSearchTests.TypeNameMatchCollector collector = new AbstractJavaSearchTests.TypeNameMatchCollector() {
+			@Override
 			public String toString(){
 				return toFullyQualifiedNamesString();
 			}
@@ -1117,6 +1119,7 @@
 
 		// Search all type names with TypeNameMatchRequestor
 		AbstractJavaSearchTests.TypeNameMatchCollector collector = new AbstractJavaSearchTests.TypeNameMatchCollector() {
+			@Override
 			public String toString(){
 				return toFullyQualifiedNamesString();
 			}
@@ -1153,6 +1156,7 @@
 
 		// Search all type names with TypeNameMatchRequestor
 		AbstractJavaSearchTests.TypeNameMatchCollector collector = new AbstractJavaSearchTests.TypeNameMatchCollector() {
+			@Override
 			public String toString(){
 				return toFullyQualifiedNamesString();
 			}
@@ -1189,6 +1193,7 @@
 
 		// Search all type names with TypeNameMatchRequestor
 		AbstractJavaSearchTests.TypeNameMatchCollector collector = new AbstractJavaSearchTests.TypeNameMatchCollector() {
+			@Override
 			public String toString(){
 				return toFullyQualifiedNamesString();
 			}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchScopeTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchScopeTests.java
index fdc655c..1fa888a 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchScopeTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchScopeTests.java
@@ -51,6 +51,7 @@
 //	TESTS_RANGE = new int[] { 16, -1 };
 }
 
+@Override
 protected void tearDown() throws Exception {
 	// Cleanup caches
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -186,8 +187,10 @@
 public void testSystemLibraries() throws CoreException {
 	try {
 		DefaultContainerInitializer intializer = new DefaultContainerInitializer(new String[] {"P", "/P/lib.jar"}) {
+			@Override
 			protected DefaultContainer newContainer(char[][] libPaths) {
 				return new DefaultContainer(libPaths) {
+					@Override