Initial update to BETA_JAVA13 as of Y20190829-0900
diff --git a/org.eclipse.jdt.core.tests.model/JCL/jclMin13.jar b/org.eclipse.jdt.core.tests.model/JCL/jclMin13.jar
new file mode 100644
index 0000000..0f621d1
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/JCL/jclMin13.jar
Binary files differ
diff --git a/org.eclipse.jdt.core.tests.model/JCL/jclMin13src.zip b/org.eclipse.jdt.core.tests.model/JCL/jclMin13src.zip
new file mode 100644
index 0000000..bf05b46
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/JCL/jclMin13src.zip
Binary files differ
diff --git a/org.eclipse.jdt.core.tests.model/META-INF/MANIFEST.MF b/org.eclipse.jdt.core.tests.model/META-INF/MANIFEST.MF
index 18bc7cd..ee24351 100644
--- a/org.eclipse.jdt.core.tests.model/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.core.tests.model/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jdt.core.tests.model;singleton:=true
-Bundle-Version: 3.10.950.qualifier
+Bundle-Version: 3.10.951.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.jdt.core.tests,
@@ -18,6 +18,7 @@
  org.junit;bundle-version="3.8.1",
  org.eclipse.test.performance;bundle-version="[3.1.0,4.0.0)",
  org.eclipse.jdt.core.tests.compiler;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.jdt.compiler.apt.tests;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.jdt.core.tests.builder;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.jdt.launching;bundle-version="[3.10.0,4.0.0)",
  org.eclipse.team.core;bundle-version="[3.2.0,4.0.0)",
diff --git a/org.eclipse.jdt.core.tests.model/pom.xml b/org.eclipse.jdt.core.tests.model/pom.xml
index ce350db..c6d2ad4 100644
--- a/org.eclipse.jdt.core.tests.model/pom.xml
+++ b/org.eclipse.jdt.core.tests.model/pom.xml
@@ -20,7 +20,7 @@
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.core.tests.model</artifactId>
-  <version>3.10.950-SNAPSHOT</version>
+  <version>3.10.951-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
 
   <properties>
@@ -170,6 +170,37 @@
 			<tycho.surefire.argLine>--add-modules ALL-SYSTEM -Dcompliance=1.4,1.7,1.8,12</tycho.surefire.argLine>
 		</properties>
 	</profile>
+	<profile>
+		<id>test-on-javase-13</id>
+		<build>
+			<plugins>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-toolchains-plugin</artifactId>
+					<version>1.1</version>
+					<executions>
+						<execution>
+							<phase>validate</phase>
+							<goals>
+								<goal>toolchain</goal>
+							</goals>
+						</execution>
+					</executions>
+					<configuration>
+						<toolchains>
+							<jdk>
+								<id>JavaSE-13</id>
+							</jdk>
+						</toolchains>
+					</configuration>
+				</plugin>
+			</plugins>
+		</build>
+		<properties>
+			<!-- Overridden in https://ci.eclipse.org/jdt/job/eclipse.jdt.core-run.javac-13/configure  -->
+			<tycho.surefire.argLine>--add-modules ALL-SYSTEM -Dcompliance=1.4,1.7,1.8,13</tycho.surefire.argLine>
+		</properties>
+	</profile>
   </profiles>
 
 </project>
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunAllJava12Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunAllJava12Tests.java
index eabf761..60e0229 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunAllJava12Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunAllJava12Tests.java
@@ -6,6 +6,10 @@
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * SPDX-License-Identifier: EPL-2.0
  *Contributors:
  *     IBM Corporation - initial API and implementation
@@ -15,7 +19,6 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
-import org.eclipse.jdt.core.tests.dom.ASTConverter12Test;
 import org.eclipse.jdt.core.tests.dom.ConverterTestSetup;
 import org.eclipse.jdt.core.tests.util.AbstractCompilerTest;
 
@@ -35,12 +38,6 @@
 		};
 	}
 
-	public static Class[] getConverterTestClasses() {
-		return new Class[] {
-				ASTConverter12Test.class,
-		};
-	}
-
 	public static Class[] getCompilerClasses() {
 		return new Class[] {
 			org.eclipse.jdt.core.tests.eval.TestAll.class,
@@ -53,8 +50,6 @@
 
 		Class[] testClasses = getAllTestClasses();
 		addTestsToSuite(ts, testClasses);
-		testClasses = getConverterTestClasses();
-		addTestsToSuite(ts, testClasses);
 
 		AbstractCompilerTest.setpossibleComplianceLevels(AbstractCompilerTest.F_11);
 		addTestsToSuite(ts, getCompilerClasses());
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunAllJava13Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunAllJava13Tests.java
new file mode 100644
index 0000000..50c1dc3
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunAllJava13Tests.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2019 IBM Corporation 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/
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.core.tests;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.eclipse.jdt.core.tests.compiler.parser.ComplianceDiagnoseTest;
+import org.eclipse.jdt.core.tests.dom.ASTConverter13Test;
+import org.eclipse.jdt.core.tests.dom.ConverterTestSetup;
+import org.eclipse.jdt.core.tests.model.JavaSearchBugs13Tests;
+import org.eclipse.jdt.core.tests.rewrite.describing.ASTRewritingTest;
+import org.eclipse.jdt.core.tests.util.AbstractCompilerTest;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class RunAllJava13Tests extends TestCase {
+	
+	public RunAllJava13Tests(String name) {
+		super(name);
+	}
+	public static Class[] getAllTestClasses() {
+		return new Class[] {
+			JavaSearchBugs13Tests.class,
+			ComplianceDiagnoseTest.class,
+//			SwitchExpressionsYieldTest.class, //JDT bug: duplicate suite
+			org.eclipse.jdt.compiler.apt.tests.AllTests.class,
+		};
+	}
+	
+	public static Class[] getConverterTestClasses() {
+		return new Class[] {
+				ASTConverter13Test.class,
+				ASTRewritingTest.class,
+		};
+	}
+
+	public static Class[] getCompilerClasses() {
+		return new Class[] {
+			org.eclipse.jdt.core.tests.eval.TestAll.class,
+			org.eclipse.jdt.core.tests.compiler.regression.TestAll.class,
+		};
+	}
+
+	public static Test suite() {
+		TestSuite ts = new TestSuite(RunAllJava13Tests.class.getName());
+
+		Class[] testClasses = getAllTestClasses();
+		addTestsToSuite(ts, testClasses);
+		testClasses = getConverterTestClasses();
+		addTestsToSuite(ts, testClasses);
+
+		AbstractCompilerTest.setpossibleComplianceLevels(AbstractCompilerTest.F_13);
+		addTestsToSuite(ts, getCompilerClasses());
+		// ComplianceDiagnoseTest is already added to the test suite through getTestSuite
+		ts.addTest(org.eclipse.jdt.core.tests.compiler.parser.TestAll.getTestSuite(false));
+		return ts;
+	}
+	public static void addTestsToSuite(TestSuite suite, Class[] testClasses) {
+
+		for (int i = 0; i < testClasses.length; i++) {
+			Class testClass = testClasses[i];
+			// call the suite() method and add the resulting suite to the suite
+			try {
+				Method suiteMethod = testClass.getDeclaredMethod("suite", new Class[0]); //$NON-NLS-1$
+				Test test = (Test)suiteMethod.invoke(null, new Object[0]);
+				suite.addTest(test);
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			} catch (InvocationTargetException e) {
+				e.getTargetException().printStackTrace();
+			} catch (NoSuchMethodException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+	protected void tearDown() throws Exception {
+		ConverterTestSetup.PROJECT_SETUP = false;
+		super.tearDown();
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunOnlyJava12Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunOnlyJava12Tests.java
index 11bc2fa..c483773 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunOnlyJava12Tests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunOnlyJava12Tests.java
@@ -6,6 +6,10 @@
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * SPDX-License-Identifier: EPL-2.0
  *Contributors:
  *     IBM Corporation - initial API and implementation
@@ -14,10 +18,7 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
 
-import org.eclipse.jdt.core.tests.dom.ASTConverter12Test;
 import org.eclipse.jdt.core.tests.dom.ConverterTestSetup;
 
 import junit.framework.Test;
@@ -36,19 +37,11 @@
 		};
 	}
 	
-	public static Class[] getConverterTestClasses() {
-		return new Class[] {
-				ASTConverter12Test.class
-		};
-	}
 	public static Test suite() {
 		TestSuite ts = new TestSuite(RunOnlyJava12Tests.class.getName());
 
 		Class[] testClasses = getAllTestClasses();
 		addTestsToSuite(ts, testClasses);
-		testClasses = getConverterTestClasses();
-		ConverterTestSetup.TEST_SUITES = new ArrayList(Arrays.asList(testClasses));
-		addTestsToSuite(ts, testClasses);
 		return ts;
 	}
 	public static void addTestsToSuite(TestSuite suite, Class[] testClasses) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunOnlyJava13Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunOnlyJava13Tests.java
new file mode 100644
index 0000000..177d593
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunOnlyJava13Tests.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2019 IBM Corporation 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
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.core.tests;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.eclipse.jdt.core.tests.compiler.regression.SwitchExpressionsYieldTest;
+import org.eclipse.jdt.core.tests.dom.ASTConverter13Test;
+import org.eclipse.jdt.core.tests.dom.ConverterTestSetup;
+import org.eclipse.jdt.core.tests.model.JavaSearchBugs13Tests;
+import org.eclipse.jdt.core.tests.rewrite.describing.ASTRewritingTest;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class RunOnlyJava13Tests extends TestCase {
+	
+	public RunOnlyJava13Tests(String name) {
+		super(name);
+	}
+	public static Class[] getAllTestClasses() {
+		return new Class[] {
+			JavaSearchBugs13Tests.class,
+			SwitchExpressionsYieldTest.class,
+		};
+	}
+	
+	public static Class[] getConverterTestClasses() {
+		return new Class[] {
+				ASTConverter13Test.class,
+				ASTRewritingTest.class,
+		};
+	}
+	public static Test suite() {
+		TestSuite ts = new TestSuite(RunOnlyJava13Tests.class.getName());
+
+		Class[] testClasses = getAllTestClasses();
+		addTestsToSuite(ts, testClasses);
+		testClasses = getConverterTestClasses();
+		ConverterTestSetup.TEST_SUITES = new ArrayList(Arrays.asList(testClasses));
+		addTestsToSuite(ts, testClasses);
+		return ts;
+	}
+	public static void addTestsToSuite(TestSuite suite, Class[] testClasses) {
+
+		for (int i = 0; i < testClasses.length; i++) {
+			Class testClass = testClasses[i];
+			// call the suite() method and add the resulting suite to the suite
+			try {
+				Method suiteMethod = testClass.getDeclaredMethod("suite", new Class[0]); //$NON-NLS-1$
+				Test test = (Test)suiteMethod.invoke(null, new Object[0]);
+				suite.addTest(test);
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			} catch (InvocationTargetException e) {
+				e.getTargetException().printStackTrace();
+			} catch (NoSuchMethodException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+	protected void tearDown() throws Exception {
+		ConverterTestSetup.PROJECT_SETUP = false;
+		super.tearDown();
+	}
+}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter10Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter10Test.java
index e3d1479..595c1a5 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter10Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter10Test.java
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -34,9 +38,10 @@
 //	private static final String jcl9lib = "CONVERTER_JCL9_LIB";
 	
 
+	@SuppressWarnings("deprecation")
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
-		this.ast = AST.newAST(AST_INTERNAL_JLS11, true);
+		this.ast = AST.newAST(AST_INTERNAL_JLS10);
 	}
 
 	public ASTConverter10Test(String name) {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter11Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter11Test.java
index 1da1818..8e5c082 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter11Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter11Test.java
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -24,6 +28,7 @@
 	ICompilationUnit workingCopy;
 	
 
+	@SuppressWarnings("deprecation")
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
 		this.ast = AST.newAST(AST_INTERNAL_JLS11, true);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter12Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter13Test.java
similarity index 68%
rename from org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter12Test.java
rename to org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter13Test.java
index 9751f23..6dc9327 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter12Test.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter13Test.java
@@ -6,20 +6,27 @@
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * SPDX-License-Identifier: EPL-2.0
- *Contributors:
+ * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.jdt.core.tests.dom;
 
 import java.util.List;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.compiler.IProblem;
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.ASTParser;
 import org.eclipse.jdt.core.dom.Block;
 import org.eclipse.jdt.core.dom.BreakStatement;
 import org.eclipse.jdt.core.dom.CompilationUnit;
@@ -31,23 +38,26 @@
 import org.eclipse.jdt.core.dom.SwitchCase;
 import org.eclipse.jdt.core.dom.SwitchExpression;
 import org.eclipse.jdt.core.dom.SwitchStatement;
+import org.eclipse.jdt.core.dom.TextBlock;
 import org.eclipse.jdt.core.dom.Type;
 import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
 import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
+import org.eclipse.jdt.core.dom.YieldStatement;
 
 import junit.framework.Test;
 
 @SuppressWarnings("rawtypes")
-public class ASTConverter12Test extends ConverterTestSetup {
+public class ASTConverter13Test extends ConverterTestSetup {
 
 	ICompilationUnit workingCopy;
+	private static final String jclLib = "CONVERTER_JCL9_LIB";
 
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
-		this.ast = AST.newAST(getAST12(), true);
+		this.ast = AST.newAST(getAST13(), false);
 	}
 
-	public ASTConverter12Test(String name) {
+	public ASTConverter13Test(String name) {
 		super(name);
 	}
 
@@ -57,11 +67,11 @@
 //		TESTS_NAMES = new String[] {"test0001"};
 	}
 	public static Test suite() {
-		return buildModelTestSuite(ASTConverter12Test.class);
+		return buildModelTestSuite(ASTConverter13Test.class);
 	}
 	
-	static int getAST12() {
-		return AST.JLS12;
+	static int getAST13() {
+		return AST.JLS13;
 	}
 	protected void tearDown() throws Exception {
 		super.tearDown();
@@ -87,15 +97,15 @@
 			"    	case MONDAY  -> throw new NullPointerException();\n" + 
 			"    	case TUESDAY -> 1;\n" + 
 			"\n" +     
-			"	 	case WEDNESDAY -> {break 10;}\n" + 
+			"	 	case WEDNESDAY -> {yield 10;}\n" + 
 			"    	default      -> {\n" +
 			"        	int g = day.toString().length();\n" +
-			"        	break g;\n" +
+			"        	yield g;\n" +
 			"   	}};\n" +
 			"   	System.out.println(k);\n" +
 			"	}\n" +
 			"}" ;
-		this.workingCopy = getWorkingCopy("/Converter12/src/X.java", true/*resolve*/);
+		this.workingCopy = getWorkingCopy("/Converter13/src/X.java", true/*resolve*/);
 		IJavaProject javaProject = this.workingCopy.getJavaProject();
 		String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
 		try {
@@ -154,7 +164,7 @@
 			"		return today;\n" + 
 			"	}\n" + 
 			"}" ;
-		this.workingCopy = getWorkingCopy("/Converter12/src/X.java", true/*resolve*/);
+		this.workingCopy = getWorkingCopy("/Converter13/src/X.java", true/*resolve*/);
 		IJavaProject javaProject = this.workingCopy.getJavaProject();
 		String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
 		try {
@@ -199,16 +209,16 @@
 			"		String today = \"\";\n" +
 			"		today = switch (day) {\n" +
 			"			case SATURDAY,SUNDAY:\n" +
-			"				break \"Weekend day\";\n" +
+			"				yield \"Weekend day\";\n" +
 			"			case MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY:\n" +
-			"				break \"Week day\";\n" +
+			"				yield \"Week day\";\n" +
 			"			default:\n" +
-			"				break \"Any day\";\n" +
+			"				yield \"Any day\";\n" +
 			"		};\n" +
 			"		return today;\n" +
 			"	}\n" +
 			"}" ;
-		this.workingCopy = getWorkingCopy("/Converter12/src/X.java", true/*resolve*/);
+		this.workingCopy = getWorkingCopy("/Converter13/src/X.java", true/*resolve*/);
 		IJavaProject javaProject = this.workingCopy.getJavaProject();
 		String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
 		try {
@@ -236,16 +246,16 @@
 				"	String bb(Day day) throws Exception {\n" +
 				"		String today = switch (day) {\n" +
 				"			case SATURDAY,SUNDAY:\n" +
-				"				break \"Weekend day\";\n" +
+				"				yield \"Weekend day\";\n" +
 				"			case MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY:\n" +
-				"				break \"Week day\";\n" +
+				"				yield \"Week day\";\n" +
 				"			default:\n" +
-				"				break \"Any day\";\n" +
+				"				yield \"Any day\";\n" +
 				"		};\n" +
 				"		return today;\n" +
 				"	}\n" +
 				"}" ;
-		this.workingCopy = getWorkingCopy("/Converter12/src/X.java", true/*resolve*/);
+		this.workingCopy = getWorkingCopy("/Converter13/src/X.java", true/*resolve*/);
 		IJavaProject javaProject = this.workingCopy.getJavaProject();
 		String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
 		try {
@@ -271,7 +281,7 @@
 				assertEquals("incorrect name", "day", ((SimpleName) expression).getFullyQualifiedName());
 				List statements = ((SwitchExpression) initializer).statements();
 				assertEquals("incorrect no of statements", 6, statements.size());
-				BreakStatement brStmt = (BreakStatement) statements.get(1);
+				YieldStatement brStmt = (YieldStatement) statements.get(1);
 				Expression expression2 = brStmt.getExpression();
 				assertNotNull("should not null", expression2);
 				assertEquals("incorrect node type", ASTNode.STRING_LITERAL, expression2.getNodeType());
@@ -279,7 +289,7 @@
 				//default case:
 				SwitchCase caseStmt = (SwitchCase) statements.get(4);
 				assertTrue("not default", caseStmt.isDefault());
-				brStmt = (BreakStatement) statements.get(5);
+				brStmt = (YieldStatement) statements.get(5);
 				expression2 = brStmt.getExpression();
 				assertNotNull("should not null", expression2);
 				assertEquals("incorrect node type", ASTNode.STRING_LITERAL, expression2.getNodeType());
@@ -288,7 +298,8 @@
 			javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
 		}
 	}
-	public void test0005() throws JavaModelException {
+	@Deprecated
+	public void _test0005() throws JavaModelException {
 		String contents =
 				"public class X {\n" +
 				"	public String test001() {\n" + 
@@ -301,7 +312,7 @@
 				"		return ret;\n" + 
 				"	}" +
 				"}" ;
-		this.workingCopy = getWorkingCopy("/Converter12/src/X.java", true/*resolve*/);
+		this.workingCopy = getWorkingCopy("/Converter13/src/X.java", true/*resolve*/);
 		IJavaProject javaProject = this.workingCopy.getJavaProject();
 		String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
 		try {
@@ -356,7 +367,7 @@
 						"		return ret;\n" + 
 						"	}" +
 						"}" ;
-		this.workingCopy = getWorkingCopy("/Converter12/src/X.java", true/*resolve*/);
+		this.workingCopy = getWorkingCopy("/Converter13/src/X.java", true/*resolve*/);
 		IJavaProject javaProject = this.workingCopy.getJavaProject();
 		String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
 		try {
@@ -388,4 +399,139 @@
 			javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
 		}
 	}
+	// Moved over from ASTConverter9Test
+	public void testBug531714_015() throws CoreException {
+		// saw NPE in SwitchExpression.resolveType(SwitchExpression.java:423)
+		if (!isJRE13) {
+			System.err.println("Test "+getName()+" requires a JRE 13");
+			return;
+		}
+		IJavaProject p =  createJavaProject("Foo", new String[] {"src"}, new String[] {jclLib}, "bin", "13"); // FIXME jcl12?
+		p.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		p.setOption(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
+		try {
+			String source =
+				"import java.util.*;\n" +
+				"public class X {\n" +
+				"	void testForeach1(int i, List<String> list) {\n" + 
+				"		for (String s : switch(i) { case 1 -> list; default -> ; }) {\n" + 
+				"			\n" + 
+				"		}\n" +
+				"		Throwable t = switch (i) {\n" +
+				"			case 1 -> new Exception();\n" +
+				"			case 2 -> new RuntimeException();\n" + // trigger !typeUniformAcrossAllArms
+				"			default -> missing;\n" +
+				"		};\n" +
+				"	}\n" + 
+				"	void testForeach0(int i, List<String> list) {\n" + // errors in first arm
+				"		for (String s : switch(i) { case 1 -> ; default -> list; }) {\n" + 
+				"			\n" + 
+				"		}\n" +
+				"		Throwable t = switch (i) {\n" +
+				"			case 0 -> missing;\n" +
+				"			case 1 -> new Exception();\n" +
+				"			default -> new RuntimeException();\n" + // trigger !typeUniformAcrossAllArms
+				"		};\n" +
+				"	}\n" +
+				"	void testForeachAll(int i) {\n" + // only erroneous arms
+				"		Throwable t = switch (i) {\n" +
+				"			case 0 -> missing;\n" +
+				"			default -> absent;\n" +
+				"		};\n" +
+				"	}\n" +
+				"}\n";
+			createFile("Foo/src/X.java", source);
+			ICompilationUnit cuD = getCompilationUnit("/Foo/src/X.java");
+				
+			ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS13);
+			parser.setProject(p);
+			parser.setSource(cuD);
+			parser.setResolveBindings(true);
+			parser.setStatementsRecovery(true);
+			parser.setBindingsRecovery(true);
+			org.eclipse.jdt.core.dom.CompilationUnit cuAST = (org.eclipse.jdt.core.dom.CompilationUnit) parser.createAST(null);
+			IProblem[] problems = cuAST.getProblems();
+			assertProblems("Unexpected problems",
+					"1. ERROR in /Foo/src/X.java (at line 4)\n" + 
+					"	for (String s : switch(i) { case 1 -> list; default -> ; }) {\n" + 
+					"	                                                    ^^\n" + 
+					"Syntax error on token \"->\", Expression expected after this token\n" + 
+					"----------\n" + 
+					"2. ERROR in /Foo/src/X.java (at line 10)\n" + 
+					"	default -> missing;\n" + 
+					"	           ^^^^^^^\n" + 
+					"missing cannot be resolved to a variable\n" + 
+					"----------\n" + 
+					"3. ERROR in /Foo/src/X.java (at line 14)\n" + 
+					"	for (String s : switch(i) { case 1 -> ; default -> list; }) {\n" + 
+					"	                                   ^^\n" + 
+					"Syntax error on token \"->\", Expression expected after this token\n" + 
+					"----------\n" + 
+					"4. ERROR in /Foo/src/X.java (at line 18)\n" + 
+					"	case 0 -> missing;\n" + 
+					"	          ^^^^^^^\n" + 
+					"missing cannot be resolved to a variable\n" + 
+					"----------\n" + 
+					"5. ERROR in /Foo/src/X.java (at line 25)\n" + 
+					"	case 0 -> missing;\n" + 
+					"	          ^^^^^^^\n" + 
+					"missing cannot be resolved to a variable\n" + 
+					"----------\n" + 
+					"6. ERROR in /Foo/src/X.java (at line 26)\n" + 
+					"	default -> absent;\n" + 
+					"	           ^^^^^^\n" + 
+					"absent cannot be resolved to a variable\n" + 
+					"----------\n",
+					problems, source.toCharArray());
+		} finally {
+			deleteProject(p);
+		}
+	}
+	
+	public void test0007() throws JavaModelException {
+		String contents =
+				"public class X {\n" +
+						"	public String test001() {\n" + 
+						"		String s = \"\"\"\n" + 
+						"      	<html>\n" + 
+						"        <body>\n" + 
+						"            <p>Hello, world</p>\n" + 
+						"        </body>\n" + 
+						"    	</html>\n" + 
+						"    	\"\"\";\n" + 
+						"    	System.out.println(s);" +
+						"		return s;\n" + 
+						"	}" +
+						"}" ;
+		this.workingCopy = getWorkingCopy("/Converter13/src/X.java", true/*resolve*/);
+		IJavaProject javaProject = this.workingCopy.getJavaProject();
+		String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+		try {
+			javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+			javaProject.setOption(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
+			ASTNode node = buildAST(
+					contents,
+					this.workingCopy);
+			assertEquals("Not a compilation unit", ASTNode.COMPILATION_UNIT, node.getNodeType());
+			CompilationUnit compilationUnit = (CompilationUnit) node;
+			assertProblemsSize(compilationUnit, 0);
+			node = getASTNode(compilationUnit, 0, 0, 0);
+			assertEquals("Text block statement", node.getNodeType(), ASTNode.VARIABLE_DECLARATION_STATEMENT);
+			List fragments = ((VariableDeclarationStatement) node).fragments();
+			assertEquals("Incorrect no of fragments", 1, fragments.size());
+			node = (ASTNode) fragments.get(0);
+			assertEquals("Switch statement", node.getNodeType(), ASTNode.VARIABLE_DECLARATION_FRAGMENT);
+			VariableDeclarationFragment fragment = (VariableDeclarationFragment) node;
+			Expression initializer = fragment.getInitializer();
+			assertTrue("Initializer is not a TextBlock", initializer instanceof TextBlock);
+			String escapedValue = ((TextBlock) initializer).getEscapedValue();
+			System.out.println(escapedValue);
+
+			assertTrue("String should not be empty", escapedValue.length() != 0);
+			assertTrue("String should start with \"\"\"", escapedValue.startsWith("\"\"\""));
+
+		} finally {
+			javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+		}
+	}
 }
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 74a2b6c..212b1c0 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
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -1417,94 +1421,10 @@
 			deleteProject("Foo");
 		}
 	}
-	// TODO: should probably start a new test class
-	public void testBug531714_015() throws CoreException {
-		// saw NPE in SwitchExpression.resolveType(SwitchExpression.java:423)
-		if (!isJRE12) {
-			System.err.println("Test "+getName()+" requires a JRE 12");
-			return;
-		}
-		IJavaProject p =  createJavaProject("Foo", new String[] {"src"}, new String[] {jcl9lib}, "bin", "12"); // FIXME jcl12?
-		p.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		p.setOption(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
-		try {
-			String source =
-				"import java.util.*;\n" +
-				"public class X {\n" +
-				"	void testForeach1(int i, List<String> list) {\n" + 
-				"		for (String s : switch(i) { case 1 -> list; default -> ; }) {\n" + 
-				"			\n" + 
-				"		}\n" +
-				"		Throwable t = switch (i) {\n" +
-				"			case 1 -> new Exception();\n" +
-				"			case 2 -> new RuntimeException();\n" + // trigger !typeUniformAcrossAllArms
-				"			default -> missing;\n" +
-				"		};\n" +
-				"	}\n" + 
-				"	void testForeach0(int i, List<String> list) {\n" + // errors in first arm
-				"		for (String s : switch(i) { case 1 -> ; default -> list; }) {\n" + 
-				"			\n" + 
-				"		}\n" +
-				"		Throwable t = switch (i) {\n" +
-				"			case 0 -> missing;\n" +
-				"			case 1 -> new Exception();\n" +
-				"			default -> new RuntimeException();\n" + // trigger !typeUniformAcrossAllArms
-				"		};\n" +
-				"	}\n" +
-				"	void testForeachAll(int i) {\n" + // only erroneous arms
-				"		Throwable t = switch (i) {\n" +
-				"			case 0 -> missing;\n" +
-				"			default -> absent;\n" +
-				"		};\n" +
-				"	}\n" +
-				"}\n";
-			createFile("Foo/src/X.java", source);
-			ICompilationUnit cuD = getCompilationUnit("/Foo/src/X.java");
-				
-			ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS11);
-			parser.setProject(p);
-			parser.setSource(cuD);
-			parser.setResolveBindings(true);
-			parser.setStatementsRecovery(true);
-			parser.setBindingsRecovery(true);
-			org.eclipse.jdt.core.dom.CompilationUnit cuAST = (org.eclipse.jdt.core.dom.CompilationUnit) parser.createAST(null);
-			IProblem[] problems = cuAST.getProblems();
-			assertProblems("Unexpected problems",
-					"1. ERROR in /Foo/src/X.java (at line 4)\n" + 
-					"	for (String s : switch(i) { case 1 -> list; default -> ; }) {\n" + 
-					"	                                                    ^^\n" + 
-					"Syntax error on token \"->\", Expression expected after this token\n" + 
-					"----------\n" + 
-					"2. ERROR in /Foo/src/X.java (at line 10)\n" + 
-					"	default -> missing;\n" + 
-					"	           ^^^^^^^\n" + 
-					"missing cannot be resolved to a variable\n" + 
-					"----------\n" + 
-					"3. ERROR in /Foo/src/X.java (at line 14)\n" + 
-					"	for (String s : switch(i) { case 1 -> ; default -> list; }) {\n" + 
-					"	                                   ^^\n" + 
-					"Syntax error on token \"->\", Expression expected after this token\n" + 
-					"----------\n" + 
-					"4. ERROR in /Foo/src/X.java (at line 18)\n" + 
-					"	case 0 -> missing;\n" + 
-					"	          ^^^^^^^\n" + 
-					"missing cannot be resolved to a variable\n" + 
-					"----------\n" + 
-					"5. ERROR in /Foo/src/X.java (at line 25)\n" + 
-					"	case 0 -> missing;\n" + 
-					"	          ^^^^^^^\n" + 
-					"missing cannot be resolved to a variable\n" + 
-					"----------\n" + 
-					"6. ERROR in /Foo/src/X.java (at line 26)\n" + 
-					"	default -> absent;\n" + 
-					"	           ^^^^^^\n" + 
-					"absent cannot be resolved to a variable\n" + 
-					"----------\n",
-					problems, source.toCharArray());
-		} finally {
-			deleteProject(p);
-		}
-	}
+	/**
+	 * @deprecated
+	 * @throws Exception
+	 */
 	public void testBug542795() throws Exception {
 		IJavaProject p =  createJavaProject("Foo", new String[] {"src"}, new String[] {jcl9lib}, "bin", "11");
 		try {
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTStructuralPropertyTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTStructuralPropertyTest.java
index 92aada9..9405b8c 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTStructuralPropertyTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTStructuralPropertyTest.java
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Technical University Berlin - adapted for Object Teams
@@ -447,9 +451,9 @@
 		}
 // {ObjectTeams: adapted for OT specific ASTNodes		
 /* orig:
-		assertEquals("Wrong last known type", 100, hi); // last known one
+		assertEquals("Wrong last known type", 101, hi); // last known one
   :giro */
-		assertEquals("Wrong last known type", 116, hi); // last known one
+		assertEquals("Wrong last known type", 117, hi); // last known one
 // jwl}		
 		assertEquals("Wrong number of distinct types",  hi, classes.size()); // all classes are distinct
 	}
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 062e772..6f84160 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
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Technical University Berlin - adapted for Object Teams
@@ -28,6 +32,7 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.Test;
 
+import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.dom.*;
 
 // testing
@@ -1309,14 +1314,35 @@
 
 	}
 
+	@SuppressWarnings("deprecation")
+	private static int getApiLevel(String s) {
+		if (s == null)
+			return AST.JLS12;
+		switch (s) {
+		case JavaCore.VERSION_1_2 : return AST.JLS2; 
+        case JavaCore.VERSION_1_3: return AST.JLS3;
+        case JavaCore.VERSION_1_4: return AST.JLS4;
+        case JavaCore.VERSION_1_5: return AST.JLS4;
+        case JavaCore.VERSION_1_6: return AST.JLS4;
+        case JavaCore.VERSION_1_7: return AST.JLS4;
+        case JavaCore.VERSION_1_8: return AST.JLS8;
+        case JavaCore.VERSION_9: return AST.JLS9;
+        case JavaCore.VERSION_10: return AST.JLS10;
+        case JavaCore.VERSION_11: return AST.JLS11;
+        case JavaCore.VERSION_12: return AST.JLS12;
+        case JavaCore.VERSION_13: return AST.JLS13;
+        default:  return AST.JLS2;
+		}
+	}
 	/** @deprecated using deprecated code */
 	public void testAST() {
 
 		assertSame(AST.JLS2, 2);
 		assertSame(JLS3_INTERNAL, 3);
 
-		AST a0 = new AST(); // deprecated, but still 2.0
-		assertTrue(a0.apiLevel() == AST.JLS2);
+		AST a0 = new AST(); // deprecated, now 3 from JavaCore.defaultOptions
+		int apiLevelCal = ASTTest.getApiLevel(JavaCore.getDefaultOptions().get(JavaCore.COMPILER_SOURCE));
+		assertTrue(a0.apiLevel() == apiLevelCal);
 		AST a1 = new AST(new HashMap()); // deprecated, but still 2.0
 		assertTrue(a1.apiLevel() == AST.JLS2);
 		AST a2 = AST.newAST(AST.JLS2, false);
@@ -8879,6 +8905,7 @@
 			ASTNode.PROVIDES_DIRECTIVE,
 			ASTNode.MODULE_MODIFIER,
 			ASTNode.SWITCH_EXPRESSION,
+			ASTNode.TEXT_BLOCK,
 //{ObjectTeams:
 			ASTNode.METHOD_SPEC,
 			ASTNode.CALLIN_MAPPING_DECLARATION,
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 65102b4..8786ac3 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
@@ -6,6 +6,10 @@
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
@@ -493,7 +497,9 @@
 		String option = cu.getJavaProject().getOption(JavaCore.COMPILER_COMPLIANCE, true);
 		long jdkLevel = CompilerOptions.versionToJdkLevel(option);
 		int JLSLevel = AST_INTERNAL_JLS3;
-		if (jdkLevel >= ClassFileConstants.getComplianceLevelForJavaVersion(ClassFileConstants.MAJOR_VERSION_12)) {
+		if (jdkLevel >= ClassFileConstants.getComplianceLevelForJavaVersion(ClassFileConstants.MAJOR_VERSION_13)) {
+			JLSLevel = AST_INTERNAL_JLS13;
+		} else if (jdkLevel >= ClassFileConstants.getComplianceLevelForJavaVersion(ClassFileConstants.MAJOR_VERSION_12)) {
 			JLSLevel = AST_INTERNAL_JLS12;
 		} else if (jdkLevel >= ClassFileConstants.getComplianceLevelForJavaVersion(ClassFileConstants.MAJOR_VERSION_11)) {
 			JLSLevel = AST_INTERNAL_JLS11;			
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 47ab610..ae8e498 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
@@ -6,6 +6,10 @@
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
@@ -105,7 +109,7 @@
 			this.deleteProject("Converter9"); //$NON-NLS-1$
 			this.deleteProject("Converter10"); //$NON-NLS-1$
 			this.deleteProject("Converter11"); //$NON-NLS-1$
-			this.deleteProject("Converter12"); //$NON-NLS-1$
+			this.deleteProject("Converter13"); //$NON-NLS-1$
 			PROJECT_SETUP = false;
 		} else {
 			TEST_SUITES.remove(getClass());
@@ -118,7 +122,7 @@
 				this.deleteProject("Converter9"); //$NON-NLS-1$
 				this.deleteProject("Converter10"); //$NON-NLS-1$
 				this.deleteProject("Converter11"); //$NON-NLS-1$
-				this.deleteProject("Converter12"); //$NON-NLS-1$
+				this.deleteProject("Converter13"); //$NON-NLS-1$
 				PROJECT_SETUP = false;
 			}
 		}
@@ -212,7 +216,7 @@
 			setUpJavaProject("Converter9", "9"); //$NON-NLS-1$ //$NON-NLS-2$
 			setUpJavaProject("Converter10", "10"); //$NON-NLS-1$ //$NON-NLS-2$
 			setUpJavaProject("Converter11", "11"); //$NON-NLS-1$ //$NON-NLS-2$
-			setUpJavaProject("Converter12", "12"); //$NON-NLS-1$ //$NON-NLS-2$
+			setUpJavaProject("Converter13", "13"); //$NON-NLS-1$ //$NON-NLS-2$
 			waitUntilIndexesReady(); // needed to find secondary types
 			PROJECT_SETUP = true;
 		}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/RunConverterTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/RunConverterTests.java
index f12cc67..cdaed01 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/RunConverterTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/RunConverterTests.java
@@ -52,7 +52,7 @@
 		TypeAnnotationsConverterTest.class,
 		ASTConverter18Test.class,
 		ASTConverter9Test.class,
-		ASTConverter12Test.class,
+		ASTConverter13Test.class,
 	};
 }
 public static Test suite() {
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 1da23d2..e9b0d74 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
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -26,7 +30,7 @@
 
 	public void setUpSuite() throws Exception {
 		super.setUpSuite();
-		this.ast = AST.newAST(AST_INTERNAL_JLS11, false);
+		this.ast = AST.newAST(AST_INTERNAL_LATEST, false);
 	}
 
 	public TypeAnnotationsConverterTest(String name) {
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 71ad555..320fe9a 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
@@ -14850,7 +14850,7 @@
  * https://bugs.eclipse.org/543818 - [12] Formatter Support for Switch Expressions
  */
 public void testBug543818a() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	this.formatterPrefs.insert_space_before_comma_in_switch_case_expressions = true;
 	this.formatterPrefs.insert_space_before_colon_in_case = true;
 	this.formatterPrefs.indent_switchstatements_compare_to_switch = true;
@@ -14861,7 +14861,7 @@
  * https://bugs.eclipse.org/543818 - [12] Formatter Support for Switch Expressions
  */
 public void testBug543818b() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	this.formatterPrefs.insert_space_after_comma_in_switch_case_expressions = false;
 	this.formatterPrefs.insert_space_before_closing_paren_in_switch = true;
 	this.formatterPrefs.indent_switchstatements_compare_to_cases = false;
@@ -14872,7 +14872,7 @@
  * https://bugs.eclipse.org/543818 - [12] Formatter Support for Switch Expressions
  */
 public void testBug543818c() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	this.formatterPrefs.insert_space_before_arrow_in_switch_case = false;
 	this.formatterPrefs.insert_space_before_opening_paren_in_switch = false;
 	this.formatterPrefs.indent_breaks_compare_to_cases = false;
@@ -14883,7 +14883,7 @@
  * https://bugs.eclipse.org/543818 - [12] Formatter Support for Switch Expressions
  */
 public void testBug543818d() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	this.formatterPrefs.insert_space_after_arrow_in_switch_case = false;
 	this.formatterPrefs.insert_space_after_opening_paren_in_switch = true;
 	this.formatterPrefs.insert_space_before_opening_brace_in_block = false;
@@ -14895,7 +14895,7 @@
  * https://bugs.eclipse.org/543818 - [12] Formatter Support for Switch Expressions
  */
 public void testBug543818e() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	this.formatterPrefs.insert_space_before_arrow_in_switch_default = false;
 	this.formatterPrefs.insert_space_before_colon_in_default = true;
 	this.formatterPrefs.parenthesis_positions_in_switch_statement = DefaultCodeFormatterConstants.SEPARATE_LINES;
@@ -14906,7 +14906,7 @@
  * https://bugs.eclipse.org/543818 - [12] Formatter Support for Switch Expressions
  */
 public void testBug543818f() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	this.formatterPrefs.insert_space_after_arrow_in_switch_default = false;
 	this.formatterPrefs.insert_space_before_opening_brace_in_switch = false;
 	this.formatterPrefs.insert_space_before_opening_brace_in_block = false;
@@ -14917,7 +14917,7 @@
  * https://bugs.eclipse.org/543818 - [12] Formatter Support for Switch Expressions
  */
 public void testBug543818g() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	String input = getCompilationUnit("Formatter", "", "test543818", "in.java").getSource();
 	formatSource(input, getCompilationUnit("Formatter", "", "test543818", "G_out.java").getSource());
 }
@@ -15230,7 +15230,7 @@
  * https://bugs.eclipse.org/390720 - [formatter] Add setting for blank line between case blocks (after break) for switch statement
  */
 public void testBug390720a() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	this.formatterPrefs.blank_lines_between_statement_groups_in_switch = 2;
 	formatSourceInWorkspace("test390720", "in.java", "A_out.java");
 }
@@ -15238,7 +15238,7 @@
  * https://bugs.eclipse.org/390720 - [formatter] Add setting for blank line between case blocks (after break) for switch statement
  */
 public void testBug390720b() throws JavaModelException {
-	setComplianceLevel(CompilerOptions.VERSION_12);
+	setComplianceLevel(CompilerOptions.VERSION_13);
 	this.formatterPrefs.blank_lines_between_statement_groups_in_switch = ~0;
 	formatSourceInWorkspace("test390720", "in.java", "B_out.java");
 }
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 3bc7436..07a741c 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
@@ -6,6 +6,10 @@
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
@@ -77,6 +81,7 @@
 	protected static boolean isJRE10 = false;
 	protected static boolean isJRE11 = false;
 	protected static boolean isJRE12 = false;
+	protected static boolean isJRE13 = false;
 	protected static String DEFAULT_MODULES = null;
 	static {
 		String javaVersion = System.getProperty("java.version");
@@ -90,7 +95,10 @@
 			}
 		}
 		long jdkLevel = CompilerOptions.versionToJdkLevel(javaVersion.length() > 3 ? javaVersion.substring(0, 3) : javaVersion);
-		if (jdkLevel >= ClassFileConstants.getLatestJDKLevel()) {
+		if (jdkLevel >= ClassFileConstants.JDK13) {
+			isJRE13 = true;
+		}
+		if (jdkLevel >= ClassFileConstants.JDK12) {
 			isJRE12 = true;
 		}
 		if (jdkLevel >= ClassFileConstants.JDK11) {
@@ -143,14 +151,29 @@
 	/**
 	 * Internal synonym for constant AST.JSL12
 	 * to alleviate deprecation warnings once AST.JLS12 is deprecated in future.
+	 * @deprecated
 	 */
 	protected static final int AST_INTERNAL_JLS12 = AST.JLS12;
+	
+	/**
+	 * Internal synonym for constant AST.JSL13
+	 * to alleviate deprecation warnings once AST.JLS13 is deprecated in future.
+	 */
+	protected static final int AST_INTERNAL_JLS13 = AST.JLS13;
 
 	/**
 	 * Internal synonym for constant AST.JSL11
 	 * to alleviate deprecation warnings once AST.JLS11 is deprecated in future.
+	 * @deprecated
 	 */
 	protected static final int AST_INTERNAL_JLS11 = AST.JLS11;
+
+	/**
+	 * Internal synonym for the latest AST level.
+	 * 
+	 */
+	protected static final int AST_INTERNAL_LATEST = AST.JLS13;
+
 	public static class BasicProblemRequestor implements IProblemRequestor {
 		public void acceptProblem(IProblem problem) {}
 		public void beginReporting() {}
@@ -2054,6 +2077,12 @@
 					options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_12);
 					options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_12);
 					javaProject.setOptions(options);
+				} else if ("13".equals(compliance)) {
+					Map options = new HashMap();
+					options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_13);
+					options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_13);
+					options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_13);
+					javaProject.setOptions(options);
 				}
 				result[0] = javaProject;
 			}
@@ -3147,7 +3176,10 @@
 			newJclLibString = "JCL18_FULL";
 			newJclSrcString = "JCL18_SRC"; // Use the same source
 		} else {
-			if (compliance.equals("12")) {
+			if (compliance.equals("13")) {
+				newJclLibString = "JCL13_LIB";
+				newJclSrcString = "JCL13_SRC";
+			} else if (compliance.equals("12")) {
 				newJclLibString = "JCL12_LIB";
 				newJclSrcString = "JCL12_SRC";
 			} else if (compliance.equals("11")) {
@@ -3208,10 +3240,12 @@
 		IPath jcl10Lib = new Path("JCL10_LIB");
 		IPath jcl11Lib = new Path("JCL11_LIB");
 		IPath jcl12Lib = new Path("JCL12_LIB");
+		IPath jcl13Lib = new Path("JCL13_LIB");
 		IPath jclFull = new Path("JCL18_FULL");
 
 		return path.equals(jclLib) || path.equals(jcl5Lib) || path.equals(jcl8Lib) || path.equals(jcl9Lib)
-				|| path.equals(jcl10Lib) ||  path.equals(jcl11Lib) || path.equals(jcl12Lib) || path.equals(jclFull);
+				|| path.equals(jcl10Lib) ||  path.equals(jcl11Lib) || path.equals(jcl12Lib) || path.equals(jcl13Lib)
+				|| path.equals(jclFull);
 	}
 	public void setUpJCLClasspathVariables(String compliance) throws JavaModelException, IOException {
 		setUpJCLClasspathVariables(compliance, false);
@@ -3282,6 +3316,14 @@
 					new IPath[] {getExternalJCLPath("12"), getExternalJCLSourcePath("12"), getExternalJCLRootSourcePath()},
 					null);
 			}
+		} else if ("13".equals(compliance)) {
+			if (JavaCore.getClasspathVariable("JCL13_LIB") == null) {
+				setupExternalJCL("jclMin13"); // No need for an explicit jclmin13, just use the same old one.
+				JavaCore.setClasspathVariables(
+					new String[] {"JCL13_LIB", "JCL13_SRC", "JCL_SRCROOT"},
+					new IPath[] {getExternalJCLPath("13"), getExternalJCLSourcePath("13"), getExternalJCLRootSourcePath()},
+					null);
+			}
 		} else {
 			if (JavaCore.getClasspathVariable("JCL_LIB") == null) {
 				setupExternalJCL("jclMin");
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 cd8839b..aadc76d 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
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -1172,7 +1176,7 @@
 		
 		createFolder("/P2/src/p2");
 		createFile("/P2/src/p2/Z.java", src);
-		ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS12);
+		ASTParser parser = ASTParser.newParser(AST_INTERNAL_LATEST);
 		parser.setProject(p2);
 		parser.setSource((ITypeRoot)p2.findElement(new Path("p2/Z.java")));
 		parser.setResolveBindings(true);
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 827e9f1..7aaed4f 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
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - contribution for bug 337868 - [compiler][model] incomplete support for package-info.java when using SearchableEnvironment
@@ -2656,7 +2660,7 @@
 				"public class X {}\n");
 		ICompilationUnit cuD = getCompilationUnit("/P/src/X.java");
 		
-		ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS11);
+		ASTParser parser = ASTParser.newParser(AST_INTERNAL_LATEST);
 		parser.setProject(this.testProject);
 		parser.setSource(cuD);
 		parser.setResolveBindings(true);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests12.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests12.java
deleted file mode 100644
index ea03702..0000000
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests12.java
+++ /dev/null
@@ -1,856 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 IBM 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
- * 
- *******************************************************************************/
-package org.eclipse.jdt.core.tests.model;
-
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.internal.codeassist.RelevanceConstants;
-
-import junit.framework.Test;
-
-public class CompletionTests12 extends AbstractJavaModelCompletionTests {
-
-	static {
-//		TESTS_NAMES = new String[]{"test018e"};
-	}
-
-	public CompletionTests12(String name) {
-		super(name);
-	}
-	public void setUpSuite() throws Exception {
-		if (COMPLETION_PROJECT == null)  {
-			COMPLETION_PROJECT = setUpJavaProject("Completion", "12");
-		} else {
-			setUpProjectCompliance(COMPLETION_PROJECT, "12");
-		}
-		super.setUpSuite();
-	}
-	public static Test suite() {
-		return buildModelTestSuite(CompletionTests12.class);
-	}
-	public void test001() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (day) {\n" + 
-						"		case SATURDAY, SUN ->\n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-				"enum MyDay { SATURDAY, SUNDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "SATURDAY, SUN";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"SUNDAY[FIELD_REF]{SUNDAY, LMyDay;, LMyDay;, SUNDAY, null, "+ 
-						(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
-								RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
-								RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
-								RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
-						requestor.getResults());
-	}
-	public void test002() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (day) {\n" + 
-						"		case SATURDAY, SUN :\n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-				"enum MyDay { SATURDAY, SUNDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "SATURDAY, SUN";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"SUNDAY[FIELD_REF]{SUNDAY, LMyDay;, LMyDay;, SUNDAY, null, "+ 
-						(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
-								RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
-								RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
-								RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
-						requestor.getResults());
-	}
-	public void test003() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (day) {\n" + 
-						"		case SATU -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-				"enum MyDay { SATURDAY, SUNDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "SATU";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"SATURDAY[FIELD_REF]{SATURDAY, LMyDay;, LMyDay;, SATURDAY, null, "+ 
-						(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
-								RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
-								RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
-								RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
-						requestor.getResults());
-	}
-	public void test004() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (day) {\n" + 
-						"		case SATURDAY, SUNDAY, MOND -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-				"enum MyDay { SATURDAY, SUNDAY, MONDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "MOND";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"MONDAY[FIELD_REF]{MONDAY, LMyDay;, LMyDay;, MONDAY, null, "+ 
-						(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
-								RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
-								RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
-								RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
-						requestor.getResults());
-	}
-	public void test005() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (day) {\n" + 
-						"		case SATURDAY, SUND, MONDAY -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-				"enum MyDay { SATURDAY, SUNDAY, MONDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "SUND";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"SUNDAY[FIELD_REF]{SUNDAY, LMyDay;, LMyDay;, SUNDAY, null, "+ 
-						(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
-								RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
-								RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
-								RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
-						requestor.getResults());
-	}
-	public void test005a() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (day) {\n" + 
-						"		case SATURDAY, SUNDAY -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		case MON -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-				"enum MyDay { SATURDAY, SUNDAY, MONDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "case MON";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"MONDAY[FIELD_REF]{MONDAY, LMyDay;, LMyDay;, MONDAY, null, "+ 
-						(RelevanceConstants.R_DEFAULT + RelevanceConstants.R_RESOLVED + RelevanceConstants.R_INTERESTING+
-								RelevanceConstants.R_CASE + RelevanceConstants.R_EXACT_EXPECTED_TYPE +
-								RelevanceConstants.R_ENUM + RelevanceConstants.R_ENUM_CONSTANT +
-								RelevanceConstants.R_UNQUALIFIED + RelevanceConstants.R_NON_RESTRICTED)+ "}",
-						requestor.getResults());
-	}
-	public void test006() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (day.toS) {\n" + 
-						"		case \"SATURDAY\" -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-						"enum MyDay { SATURDAY, SUNDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "day.toS";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"toString[METHOD_REF]{toString(), Ljava.lang.Object;, ()Ljava.lang.String;, toString, null, 60}",
-						requestor.getResults());
-	}
-	public void test007() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (day.o) {\n" + 
-						"		case 0 -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-						"enum MyDay { SATURDAY, SUNDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "day.o";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"ordinal[METHOD_REF]{ordinal(), Ljava.lang.Enum<LMyDay;>;, ()I, ordinal, null, 60}",
-						requestor.getResults());
-	}
-	public void test008() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (1 + day.o) {\n" + 
-						"		case 0 -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-						"enum MyDay { SATURDAY, SUNDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "day.o";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"ordinal[METHOD_REF]{ordinal(), Ljava.lang.Enum<LMyDay;>;, ()I, ordinal, null, 90}",
-						requestor.getResults());
-	}
-	public void test009() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (1 + da) {\n" + 
-						"		case 0 -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-						"enum MyDay { SATURDAY, SUNDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "1 + da";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"day[LOCAL_VARIABLE_REF]{day, null, LMyDay;, day, null, 52}",
-						requestor.getResults());
-	}
-	public void test010() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(MyDay day) {\n" + 
-						"		switch (1 + da + 1) {\n" + 
-						"		case 0 -> \n" + 
-						"			System.out.println(day.toString());\n" + 
-						"		}\n" + 
-						"	}\n" + 
-						"	public static void main(String[] args) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n" + 
-						"enum MyDay { SATURDAY, SUNDAY}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "1 + da";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"day[LOCAL_VARIABLE_REF]{day, null, LMyDay;, day, null, 52}",
-						requestor.getResults());
-	}
-	public void test011() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(int arg0) {\n" + 
-						"		foo(\n" + 
-						"		switch (arg) {\n" + 
-						"		case 1 -> 1;\n" + 
-						"		default -> 0;\n" +
-						"		}\n" + 
-						"	});\n" + 
-						"	public static void foo(int arg0) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "switch (arg";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
-						requestor.getResults());
-	}
-	public void test012() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(int arg0) {\n" + 
-						"		foo(\n" + 
-						"		switch (arg0) {\n" + 
-						"		case 1 -> arg;\n" + 
-						"		default -> 0;\n" +
-						"		}\n" + 
-						"	});\n" + 
-						"	public static void foo(int arg0) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "-> arg";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
-						requestor.getResults());
-	}
-	public void test013() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/Switch.java",
-				"public class Switch {\n" + 
-						"	public static void bar(int arg0) {\n" + 
-						"		foo(\n" + 
-						"		switch (0 + arg) {\n" + 
-						"		case 1 -> 1;\n" + 
-						"		default -> 0;\n" +
-						"		}\n" + 
-						"	});\n" + 
-						"	public static void foo(int arg0) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "0 + arg";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 82}",
-						requestor.getResults());
-	}
-	public void test014() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"public class X {\n" + 
-						"	public static void bar(int arg0) {\n" + 
-						"		foo(\n" + 
-						"		swi);\n" + 
-						"	public static void foo(int arg0) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "swi";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"switch[KEYWORD]{switch, null, null, switch, null, 49}",
-						requestor.getResults());
-	}
-	public void _test015() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"public class Switch {\n" + 
-						"	public static void bar(int arg0) {\n" + 
-						"		foo(\n" + 
-						"		switch (0 + arg0) {\n" + 
-						"		case 1 -> {break ar;}\n" + 
-						"		default -> 0;\n" +
-						"		}\n" + 
-						"	});\n" + 
-						"	public static void foo(int arg0) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "break ar";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
-						requestor.getResults());
-	}
-	public void test016() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"public class Switch {\n" + 
-						"	public static void bar(int arg0) {\n" + 
-						"		foo(\n" + 
-						"		switch (0 + arg0) {\n" + 
-						"		case 1 -> {break 1;}\n" + 
-						"		default -> ar;\n" +
-						"		}\n" + 
-						"	});\n" + 
-						"	public static void foo(int arg0) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "-> ar";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
-						requestor.getResults());
-	}
-	public void _test017() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"public class Switch {\n" + 
-						"	public static void bar(int arg0) {\n" + 
-						"		int arg1 = 0;\n" + 
-						"		foo(\n" + 
-						"		switch (0 + arg0) {\n" + 
-						"		case 1 -> 1;\n" + 
-						"		default -> {break ar;}\n" +
-						"		}\n" + 
-						"	});\n" + 
-						"	public static void foo(int arg0) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "break ar";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}",
-						requestor.getResults());
-	}
-	public void _test017a() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"public class Switch {\n" + 
-						"	public static void bar(int arg0) {\n" + 
-						"		foo(\n" + 
-						"		argLabel: switch (0 + arg0) {\n" + 
-						"		case 1 -> 1;\n" + 
-						"		default -> {break ar;}\n" +
-						"		}\n" + 
-						"	});\n" + 
-						"	public static void foo(int arg0) {\n" + 
-						"		bar(MyDay.SUNDAY);\n" + 
-						"	}\n" + 
-						"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "break ar";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"arg0[LOCAL_VARIABLE_REF]{arg0, null, I, arg0, null, 52}\n" +
-				"argLabel[LABEL_REF]{argLabel, null, null, argLabel, null, 49}",
-						requestor.getResults());
-	}
-	public void test018a() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"import org.eclipse.jdt.annotation.*;\n" + 
-				"import java.util.function.*;\n" + 
-				"interface IN0 {} \n" + 
-				"interface IN1 extends IN0 {} \n" + 
-				"interface IN2 extends IN0 {}\n" + 
-				"public class X {\n" + 
-				"	@NonNull IN1 n_1() { return new IN1() {}; } \n" + 
-				"	IN2 n_2() { return null; } \n" + 
-				"	<M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" + 
-				"	void testSw(int i) { \n" + 
-				"		m(switch(i) { \n" + 
-				"			case 1 -> this::n_; \n" + 
-				"			case 2 -> () -> n1(); \n" + 
-				"			case 3 -> null; \n" + 
-				"			case 4 -> () -> n2(); \n" + 
-				"			default -> this::n2; }); \n" + 
-				"	}\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "this::n_";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"n_1[METHOD_NAME_REFERENCE]{n_1, LX;, ()LIN1;, n_1, null, 60}\n" + 
-				"n_2[METHOD_NAME_REFERENCE]{n_2, LX;, ()LIN2;, n_2, null, 60}",
-						requestor.getResults());
-	}
-	public void test018b() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"import org.eclipse.jdt.annotation.*;\n" + 
-				"interface IN0 {} \n" + 
-				"interface IN1 extends IN0 {} \n" + 
-				"interface IN2 extends IN0 {}\n" + 
-				"public class X {\n" + 
-				"	@NonNull IN1 n_1() { return new IN1() {}; } \n" + 
-				"	IN2 n_2() { return null; } \n" + 
-				"	<M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" + 
-				"	void testSw(int i) { \n" + 
-				"		m(switch(i) { \n" + 
-				"			case 2 -> () -> n_; \n" + 
-				"	}\n" + 
-				"}\n" +
-				"interface Supplier<T> {\n" + 
-				"    T get();\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "-> n_";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"n_1[METHOD_REF]{n_1(), LX;, ()LIN1;, n_1, null, 52}\n" + 
-				"n_2[METHOD_REF]{n_2(), LX;, ()LIN2;, n_2, null, 52}",
-						requestor.getResults());
-	}
-	public void test018c() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"import org.eclipse.jdt.annotation.*;\n" + 
-				"interface IN0 {} \n" + 
-				"interface IN1 extends IN0 {} \n" + 
-				"interface IN2 extends IN0 {}\n" + 
-				"public class X {\n" + 
-				"	@NonNull IN1 n_1() { return new IN1() {}; } \n" + 
-				"	IN2 n_2() { return null; } \n" + 
-				"	<M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" + 
-				"	void testSw(int i) { \n" + 
-				"		m(switch(i) { \n" + 
-				"			default -> this::n_; }); \n" + 
-				"	}\n" + 
-				"}\n" +
-				"interface Supplier<T> {\n" + 
-				"    T get();\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "this::n_";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"n_1[METHOD_NAME_REFERENCE]{n_1, LX;, ()LIN1;, n_1, null, 60}\n" + 
-				"n_2[METHOD_NAME_REFERENCE]{n_2, LX;, ()LIN2;, n_2, null, 60}",
-						requestor.getResults());
-	}
-	public void test018d() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"import org.eclipse.jdt.annotation.*;\n" + 
-				"interface IN0 {} \n" + 
-				"interface IN1 extends IN0 {} \n" + 
-				"interface IN2 extends IN0 {}\n" + 
-				"public class X {\n" + 
-				"	@NonNull IN1 n_1() { return new IN1() {}; } \n" + 
-				"	IN2 n_2() { return null; } \n" + 
-				"	<M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" + 
-				"	void testSw(int i) { \n" + 
-				"		m(switch(i) { \n" + 
-				"			default -> () -> n_; }); \n" + 
-				"	}\n" + 
-				"}\n" +
-				"interface Supplier<T> {\n" + 
-				"    T get();\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "() -> n_";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"n_1[METHOD_REF]{n_1(), LX;, ()LIN1;, n_1, null, 52}\n" + 
-				"n_2[METHOD_REF]{n_2(), LX;, ()LIN2;, n_2, null, 52}",
-						requestor.getResults());
-	}
-	public void test018e() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"import org.eclipse.jdt.annotation.*;\n" + 
-				"interface IN0 {} \n" + 
-				"interface IN1 extends IN0 {} \n" + 
-				"interface IN2 extends IN0 {}\n" + 
-				"public class X {\n" + 
-				"	@NonNull IN1 n_1() { return new IN1() {}; } \n" + 
-				"	IN2 n_2() { return null; } \n" + 
-				"	<M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" + 
-				"	void testSw(int i) { \n" + 
-				"		m(switch(i) { \n" + 
-				"			case 1 -> this::n_1; \n" + 
-				"			case 2 -> () -> n_; \n" + 
-				"	}\n" + 
-				"}\n" +
-				"interface Supplier<T> {\n" + 
-				"    T get();\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "() -> n_";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"n_1[LOCAL_VARIABLE_REF]{n_1, null, Ljava.lang.Object;, n_1, null, 51}\n" + 
-				"n_1[METHOD_REF]{n_1(), LX;, ()LIN1;, n_1, null, 52}\n" + 
-				"n_2[METHOD_REF]{n_2(), LX;, ()LIN2;, n_2, null, 52}",
-						requestor.getResults());
-	}
-	public void test018f() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"import org.eclipse.jdt.annotation.*;\n" + 
-				"interface IN0 {} \n" + 
-				"interface IN1 extends IN0 {} \n" + 
-				"interface IN2 extends IN0 {}\n" + 
-				"public class X {\n" + 
-				"	@NonNull IN1 n_1() { return new IN1() {}; } \n" + 
-				"	IN2 n_2() { return null; } \n" + 
-				"	<M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" + 
-				"	void testSw(int i) { \n" + 
-				"		m(switch(i) { \n" + 
-				"			case 1 -> () -> n_1; \n" + 
-				"			case 2 -> this::n_; \n" + 
-				"	}\n" + 
-				"}\n" +
-				"interface Supplier<T> {\n" + 
-				"    T get();\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "this::n_";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"n_1[METHOD_NAME_REFERENCE]{n_1, LX;, ()LIN1;, n_1, null, 60}\n" + 
-				"n_2[METHOD_NAME_REFERENCE]{n_2, LX;, ()LIN2;, n_2, null, 60}",
-						requestor.getResults());
-	}
-	public void test019() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"import org.eclipse.jdt.annotation.*;\n" + 
-				"	<M> void m(@NonNull Supplier<@NonNull M> m2) { } \n" + 
-				"public class X {\n" + 
-				"	void testSw(int i) { \n" + 
-				"		m(swi);\n" + 
-				"}\n" +
-				"interface Supplier<T> {\n" + 
-				"    T get();\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "swi";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"switch[KEYWORD]{switch, null, null, switch, null, 49}",
-						requestor.getResults());
-	}
-	public void test020() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"public class X {\n" + 
-				"	static final String MONDAY = \"MONDAY\";\n" + 
-				"	static final String TUESDAY = \"TUESDAY\";\n" + 
-				"	static final String WEDNESDAY = \"WEDNESDAY\";\n" + 
-				"	static final String THURSDAY = \"THURSDAY\";\n" + 
-				"	static final String FRIDAY = \"FRIDAY\";\n" + 
-				"	static final String SATURDAY = \"SATURDAY\";\n" + 
-				"	static final String SUNDAY = \"SUNDAY\"; \n" + 
-				"	@SuppressWarnings(\"preview\")\n" + 
-				"	public static void main(String[] args) {\n" + 
-				"		String day = \"MONDAY\";\n" + 
-				"		switch (day) {\n" + 
-				"		    case MONDAY, FRIDAY, SUNDAY  -> System.out.println(6);\n" + 
-				"		    case TUESDAY           		 -> System.out.println(7);\n" + 
-				"		    case THURSDAY, SATURDAY     -> System.out.println(8);\n" + 
-				"		    case WEDNESDAY              -> System.out.println(9);\n" + 
-				"		}\n" + 
-				"		int k = switch (day) {\n" + 
-				"	    case MONDAY  -> throw new NullPointerException();\n" + 
-				"	    case TUESDAY -> 1;\n" + 
-				"	    case WEDNESDAY -> {break 10;}\n" + 
-				"	    default      -> {\n" + 
-				"	        int g = day.h();\n" + 
-				"	        int result = f(g);\n" + 
-				"	        break result;\n" + 
-				"	    }};\n" + 
-				"	}\n" + 
-				"	static int f(int k) {\n" + 
-				"		return k*k;\n" + 
-				"	}\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "day.h";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"hashCode[METHOD_REF]{hashCode, Ljava.lang.Object;, ()I, hashCode, null, 90}",
-						requestor.getResults());
-	}
-	public void test021() throws JavaModelException {
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/Completion/src/X.java",
-				"public class X {\n" + 
-				"	static final String MONDAY = \"MONDAY\";\n" + 
-				"	static final String TUESDAY = \"TUESDAY\";\n" + 
-				"	static final String WEDNESDAY = \"WEDNESDAY\";\n" + 
-				"	static final String THURSDAY = \"THURSDAY\";\n" + 
-				"	static final String FRIDAY = \"FRIDAY\";\n" + 
-				"	static final String SATURDAY = \"SATURDAY\";\n" + 
-				"	static final String SUNDAY = \"SUNDAY\"; \n" + 
-				"	@SuppressWarnings(\"preview\")\n" + 
-				"	public static void main(String[] args) {\n" + 
-				"		String day = \"MONDAY\";\n" + 
-				"		int k = switch (day) {\n" + 
-				"	    case MONDAY  -> throw new NullPointerException();\n" + 
-				"	    case TUESDAY -> 1;\n" + 
-				"	    case WEDNESDAY -> {break 10;}\n" + 
-				"	    default      -> {\n" + 
-				"	        int g = day.h();\n" + 
-				"	        int result = f(g);\n" + 
-				"	        break result;\n" + 
-				"	    }};\n" + 
-				"	}\n" + 
-				"	static int f(int k) {\n" + 
-				"		return k*k;\n" + 
-				"	}\n" + 
-				"}");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.allowAllRequiredProposals();
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "day.h";
-		int cursorLocation = str.indexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"hashCode[METHOD_REF]{hashCode, Ljava.lang.Object;, ()I, hashCode, null, 90}",
-						requestor.getResults());
-	}
-}
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 bdae724..77022c6 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
@@ -39,7 +39,7 @@
 //https://bugs.eclipse.org/bugs/show_bug.cgi?id=338398
 public void testBug338398a() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[2];
 		this.workingCopies[0] = getWorkingCopy(
 			"/P/src/a/A.java",
@@ -74,7 +74,7 @@
 }
 public void _testBug338398b() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[2];
 		this.workingCopies[0] = getWorkingCopy(
 			"/P/src/a/A_CLASS.java",
@@ -100,7 +100,7 @@
 }
 public void _testBug338398c() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[2];
 		this.workingCopies[0] = getWorkingCopy(
 			"/P/src/a/A_CLASS.java",
@@ -126,7 +126,7 @@
 }
 public void testBug504095() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[2];
 		this.workingCopies[0] = getWorkingCopy(
 			"/P/src/a/Bug504095.java",
@@ -155,7 +155,7 @@
 }
 public void testBug425035a() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -196,7 +196,7 @@
 }
 public void testBug425035b() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -236,7 +236,7 @@
 }
 public void testBug425035c() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -277,7 +277,7 @@
 }
 public void testBug425035d() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -317,7 +317,7 @@
 }
 public void testBug425035e() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -357,7 +357,7 @@
 }
 public void testBug425035f() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -398,7 +398,7 @@
 }
 public void testBug425035_method_a() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -442,7 +442,7 @@
 }
 public void testBug425035_method_b() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -485,7 +485,7 @@
 }
 public void testBug425035_method_c() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -529,7 +529,7 @@
 }
 public void testBug425035_method_d() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -572,7 +572,7 @@
 }
 public void testBug425035_method_e() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -615,7 +615,7 @@
 }
 public void testBug425035_method_f() throws CoreException {
 	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
+		createJavaProject("P", new String[] {"src"}, new String[]{"JCL_LIB"}, "bin", "1.7");
 		this.workingCopies = new ICompilationUnit[3];
 		this.workingCopies[0] = getWorkingCopy(
 				"/P/src/a/Values.java",
@@ -657,37 +657,4 @@
 		deleteProject("P");
 	}
 }
-public void testBug547256() throws CoreException {
-	try {
-		createJavaProject("P", new String[] {"src"}, new String[]{"JCL17_LIB"}, "bin", "1.7");
-		this.workingCopies = new ICompilationUnit[1];
-		this.workingCopies[0] = getWorkingCopy(
-				"/P/src/jdt/Something.java",
-				"package jdt;\n" + 
-				"public class Something {\n" + 
-				"	public static void main(String[] args) {\n" + 
-				"		done: for (int i = 0; i < 5; ++i) {\n" + 
-				"			if (i == 3) {\n" + 
-				"				break done;\n" + 
-				"			}\n" + 
-				"			System.out.println(i);\n" + 
-				"		}\n" +
-				"		arg\n" + 
-				"		System.out.println(\"done\");\n" + 
-				"	}\n" + 
-				"}\n");
-		CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true);
-		requestor.setAllowsRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_REF, true);
-		String str = this.workingCopies[0].getSource();
-		String completeBehind = "arg";
-		int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length();
-		this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner);
-		assertResults(
-				"args[LOCAL_VARIABLE_REF]{args, null, [Ljava.lang.String;, args, null, 52}",
-				requestor.getResults());
-
-	} finally {
-		deleteProject("P");
-	}
-}
 }
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java
index 0567191..65b052d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaModelManagerTests.java
@@ -23,17 +23,11 @@
 import org.eclipse.jdt.internal.core.JavaElement;
 import org.eclipse.jdt.internal.core.nd.indexer.Indexer;
 
-import junit.framework.Test;
-
 public class JavaModelManagerTests extends AbstractJavaModelTests {
 
 	private static final IProgressMonitor NULL_MONITOR = new NullProgressMonitor();
 	private static final String PROJECT_NAME = JavaModelManagerTests.class.getSimpleName();
 
-	public static Test suite() {
-		return buildModelTestSuite(JavaModelManagerTests.class);
-	}
-
 	public JavaModelManagerTests(String name) {
 		super(name);
 	}
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 03ba5f5..765a045 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
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann <stephan@cs.tu-berlin.de> - inconsistent initialization of classpath container backed by external class folder, see https://bugs.eclipse.org/320618
@@ -2684,7 +2688,7 @@
 		proj.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null);
 
 		try {
-			ASTParser parser= ASTParser.newParser(AST_INTERNAL_JLS11);
+			ASTParser parser= ASTParser.newParser(AST_INTERNAL_LATEST);
 			parser.setSource(unit);
 			parser.setResolveBindings(true);
 			ASTNode node = parser.createAST(null);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs12Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs12Tests.java
deleted file mode 100644
index c1fced3..0000000
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs12Tests.java
+++ /dev/null
@@ -1,626 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2019 IBM Corporation 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jdt.core.tests.model;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IPackageFragment;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.WorkingCopyOwner;
-import org.eclipse.jdt.core.search.IJavaSearchScope;
-import org.eclipse.jdt.core.search.ReferenceMatch;
-import org.eclipse.jdt.core.search.SearchEngine;
-import org.eclipse.jdt.core.search.SearchMatch;
-import org.eclipse.jdt.core.search.TypeReferenceMatch;
-
-import junit.framework.Test;
-
-public class JavaSearchBugs12Tests extends AbstractJavaSearchTests {
-
-	static {
-//	 org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true;
-//		TESTS_NUMBERS = new int[] { 19 };
-//		TESTS_RANGE = new int[] { 1, -1 };
-//		TESTS_NAMES = new String[] {"testBug542559_001"};
-}
-
-public JavaSearchBugs12Tests(String name) {
-	super(name);
-	this.endChar = "";
-}
-public static Test suite() {
-	return buildModelTestSuite(JavaSearchBugs12Tests.class, BYTECODE_DECLARATION_ORDER);
-}
-class TestCollector extends JavaSearchResultCollector {
-	public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
-		super.acceptSearchMatch(searchMatch);
-	}
-}
-class ReferenceCollector extends JavaSearchResultCollector {
-	protected void writeLine() throws CoreException {
-		super.writeLine();
-		ReferenceMatch refMatch = (ReferenceMatch) this.match;
-		IJavaElement localElement = refMatch.getLocalElement();
-		if (localElement != null) {
-			this.line.append("+[");
-			if (localElement.getElementType() == IJavaElement.ANNOTATION) {
-				this.line.append('@');
-				this.line.append(localElement.getElementName());
-				this.line.append(" on ");
-				this.line.append(localElement.getParent().getElementName());
-			} else {
-				this.line.append(localElement.getElementName());
-			}
-			this.line.append(']');
-		}
-	}
-
-}
-class TypeReferenceCollector extends ReferenceCollector {
-	protected void writeLine() throws CoreException {
-		super.writeLine();
-		TypeReferenceMatch typeRefMatch = (TypeReferenceMatch) this.match;
-		IJavaElement[] others = typeRefMatch.getOtherElements();
-		int length = others==null ? 0 : others.length;
-		if (length > 0) {
-			this.line.append("+[");
-			for (int i=0; i<length; i++) {
-				IJavaElement other = others[i];
-				if (i>0) this.line.append(',');
-				if (other.getElementType() == IJavaElement.ANNOTATION) {
-					this.line.append('@');
-					this.line.append(other.getElementName());
-					this.line.append(" on ");
-					this.line.append(other.getParent().getElementName());
-				} else {
-					this.line.append(other.getElementName());
-				}
-			}
-			this.line.append(']');
-		}
-	}
-}
-
-IJavaSearchScope getJavaSearchScope() {
-	return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearchBugs")});
-}
-IJavaSearchScope getJavaSearchScopeBugs(String packageName, boolean addSubpackages) throws JavaModelException {
-	if (packageName == null) return getJavaSearchScope();
-	return getJavaSearchPackageScope("JavaSearchBugs", packageName, addSubpackages);
-}
-public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
-	if (this.wcOwner == null) {
-		this.wcOwner = new WorkingCopyOwner() {};
-	}
-	return getWorkingCopy(path, source, this.wcOwner);
-}
-@Override
-public void setUpSuite() throws Exception {
-	super.setUpSuite();
-	JAVA_PROJECT = setUpJavaProject("JavaSearchBugs", "12");
-}
-public void tearDownSuite() throws Exception {
-	deleteProject("JavaSearchBugs");
-	super.tearDownSuite();
-}
-protected void setUp () throws Exception {
-	super.setUp();
-	this.resultCollector = new TestCollector();
-	this.resultCollector.showAccuracy(true);
-}
-
-public void testBug542559_001() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-			"	int switch_expr_field = 10;\n" +
-			"	int twice(int i) {\n" +
-			"		int tw = switch (i) {\n" +
-			"			case 0 -> switch_expr_field * 0;\n" +
-			"			case 1 -> 2;\n" +
-			"			default -> 3;\n" +
-			"		};\n" +
-			"		return tw;\n" +
-			"	}\n" +
-			"	public static void main(String... args) {\n" +
-			"		System.out.print(new X().twice(3));\n" +
-			"	}\n" +
-			"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("switch_expr_field", FIELD, REFERENCES);
-		assertSearchResults("src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH");
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-public void testBug542559_002() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-			"	int switch_expr_field = 10;\n" +
-			"	int twice(int i) {\n" +
-			"		int tw = switch (i) {\n" +
-			"			case 0 -> switch_expr_field * 0;\n" +
-			"			case 1 -> { break switch_expr_field; }\n" +
-			"			default -> 3;\n" +
-			"		};\n" +
-			"		return tw;\n" +
-			"	}\n" +
-			"	public static void main(String... args) {\n" +
-			"		System.out.print(new X().twice(3));\n" +
-			"	}\n" +
-			"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("switch_expr_field", FIELD, REFERENCES);
-		assertSearchResults(
-				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH\n" +
-				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH"
-		);
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-public void testBug542559_003() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-			"        int switch_expr_field = 10; \n" +
-			"        int twice(int i) throws Exception {      \n" +
-			"                int tw = switch (i) {   \n" +
-			"                        case 0 -> { break switch_expr_field; }  \n" +
-			"                        case 4 -> throw new MyException();  \n" +
-			"                        default -> 3;           \n" +
-			"                };      \n" +
-			"                return tw;              \n" +
-			"        }               \n" +
-			"        public static void main(String[] args) {\n" +
-			"                try {\n" +
-			"                                       System.out.print(new X().twice(3));\n" +
-			"                               } catch (Exception e) {\n" +
-			"                                       // TODO Auto-generated catch block\n" +
-			"                                       e.printStackTrace();\n" +
-			"                               }\n" +
-			"        }               \n" +
-			"}\n" +
-			"class MyException extends Exception {\n" +
-			"       private static final long serialVersionUID = 3461899582505930474L;\n" +
-			"       \n" +
-			"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		IType type = this.workingCopies[0].getType("MyException");
-		search(type, REFERENCES);
-		assertSearchResults(
-				"src/X.java int X.twice(int) [MyException] EXACT_MATCH"
-		);
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-/*
- * java search reference for an integer in default block of switch expression
- */
-public void testBug542559_004() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-			"	int switch_expr_field = 10;\n" +
-			"	int twice(int i) {\n" +
-			"		int tw = switch (i) {\n" +
-			"			case 0 -> switch_expr_field * 0;\n" +
-			"			case 1 -> 2;\n" +
-			"			default ->{ \n" +
-			"			switch_expr_field*9; \n" +
-			"		}};\n" +
-			"		return tw;\n" +
-			"	}\n" +
-			"	public static void main(String... args) {\n" +
-			"		System.out.print(new X().twice(3));\n" +
-			"	}\n" +
-			"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("switch_expr_field", FIELD, REFERENCES);
-		assertSearchResults(
-				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH\n" +
-				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH"
-		);
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-
-/*
- * java search reference for an integer in default of switch expression
- */
-public void testBug542559_005() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-			"	int switch_expr_field = 10;\n" +
-			"	int twice(int i) {\n" +
-			"		int tw = switch (i) {\n" +
-			"			case 0 -> switch_expr_field * 0;\n" +
-			"			case 1 -> 2;\n" +
-			"			default -> switch_expr_field*9;\n" +
-			"		};\n" +
-			"		return tw;\n" +
-			"	}\n" +
-			"	public static void main(String... args) {\n" +
-			"		System.out.print(new X().twice(3));\n" +
-			"	}\n" +
-			"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("switch_expr_field", FIELD, REFERENCES);
-		assertSearchResults(
-				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH\n" +
-				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH"
-		);
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-
-/*
- * java search reference for simple multi constant case statement for enum
- */
-public void testBug542559_006() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-					"enum Day { SATURDAY, SUNDAY, MONDAY;}\n" +
-					"public static void bar(Day day) {\n" +
-					"		switch (day) {\n" +
-					"		case SATURDAY, SUNDAY: \n" +
-					"			System.out.println(Day.SUNDAY);\n" +
-					"			break;\n" +
-					"		case MONDAY : System.out.println(Day.MONDAY);\n" +
-					"					break;\n" +
-					"		}\n" +
-					"	}" +
-					"	public static void main(String[] args) {\n" +
-					"		bar(Day.SATURDAY);\n" +
-					"	}\n"
-					+
-					"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("SATURDAY", FIELD, REFERENCES);
-		assertSearchResults(
-				"src/X.java void X.bar(Day) [SATURDAY] EXACT_MATCH\n"+
-				"src/X.java void X.main(String[]) [SATURDAY] EXACT_MATCH"
-		);
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-/*
- * java search reference for simple multi constant case statement for enum, 2nd case
- */
-public void testBug542559_007() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-					"enum Day { SATURDAY, SUNDAY, MONDAY;}\n" +
-					"public static void bar(Day day) {\n" +
-					"		switch (day) {\n" +
-					"		case SATURDAY, SUNDAY: \n" +
-					"			System.out.println(Day.SUNDAY);\n" +
-					"			break;\n" +
-					"		case MONDAY : System.out.println(Day.MONDAY);\n" +
-					"					break;\n" +
-					"		}\n" +
-					"	}" +
-					"	public static void main(String[] args) {\n" +
-					"		bar(Day.SATURDAY);\n" +
-					"	}\n"
-					+
-					"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("SUNDAY", FIELD, REFERENCES);
-		assertSearchResults(
-				"src/X.java void X.bar(Day) [SUNDAY] EXACT_MATCH\n"+
-				"src/X.java void X.bar(Day) [SUNDAY] EXACT_MATCH"
-		);
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-
-/*
- * java search reference for class file reference in switch expression
- */
-public void testBug542559_008() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X2.java",
-			"public class X2 {\n" +
-			"   String s = new String();        \n" +
-			"	int switch_expr_field = 10;\n" +
-			"	int twice(int i) {\n" +
-			"		int tw = switch (i) {\n" +
-			"			case 0 -> switch_expr_field * 0;\n" +
-			"			case 1 -> 2;\n" +
-			"			default -> new X2().toString().length();\n" +
-			"		};\n" +
-			"		return tw;\n" +
-			"	}\n" +
-			"	public static void main(String... args) {\n" +
-			"		System.out.print(new X2().twice(3));\n" +
-			"	}\n" +
-			"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("X2", CLASS, REFERENCES);
-		assertSearchResults(
-		"src/X2.java int X2.twice(int) [X2] EXACT_MATCH\n"+
-		"src/X2.java void X2.main(String ...) [X2] EXACT_MATCH");
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-
-/*
- * java search reference for class file reference in case and default blocks
- */
-public void testBug542559_009() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-					"	Integer abcd\n" +
-					"	public static int foo(int i) {\n" +
-					"		final int k;\n" +
-					"\n" +
-					"		int it = switch (i) { \n" +
-					"		case 1  ->   {\n" +
-					"			k = 1;\n" +
-					"			abcd.toString();\n" +
-					"			break k ;\n" +
-					"		}\n" +
-					"		case 2  ->   {\n" +
-					"			abcd.toString();\n" +
-					"			break k ;\n" +
-					"		}\n" +
-					"		default -> {\n" +
-					"			k = 3;\n" +
-					"			abcd.toString();\n" +
-					"			break k;\n" +
-					"		}\n" +
-					"		};\n" +
-					"		return k;\n" +
-					"	}\n" +
-					"\n" +
-					"	public boolean bar() {\n" +
-					"		return true;\n" +
-					"	}\n" +
-					"	public static void main(String[] args) {\n" +
-					"		System.out.println(foo(3));\n" +
-					"	}\n" +
-					"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("abcd", FIELD, REFERENCES);
-		assertSearchResults(
-				"src/X.java int X.foo(int) [abcd] EXACT_MATCH\n" +
-				"src/X.java int X.foo(int) [abcd] EXACT_MATCH\n" +
-				"src/X.java int X.foo(int) [abcd] EXACT_MATCH"
-		);
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-
-/*
- * java search reference for string constant in switch expression and switch statement
- */
-public void testBug542559_0010() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"public class X {\n" +
-					"	static final String MONDAY = \"MONDAY\";\n" +
-					"	static final String TUESDAY = \"TUESDAY\";\n" +
-					"	static final String WEDNESDAY = \"WEDNESDAY\";\n" +
-					"	static final String THURSDAY = \"THURSDAY\";\n" +
-					"	static final String FRIDAY = \"FRIDAY\";\n" +
-					"	static final String SATURDAY = \"SATURDAY\";\n" +
-					"	static final String SUNDAY = \"SUNDAY\"; \n" +
-					"	@SuppressWarnings(\"preview\")\n" +
-					"	public static void main(String[] args) {\n" +
-					"		String day = \"MONDAY\";\n" +
-					"		switch (day) {\n" +
-					"		    case MONDAY, FRIDAY, SUNDAY  -> System.out.println(6);\n" +
-					"		    case TUESDAY           		 -> System.out.println(7);\n" +
-					"		    case THURSDAY, SATURDAY     -> System.out.println(8);\n" +
-					"		    case WEDNESDAY              -> System.out.println(9);\n" +
-					"		}\n" +
-					"		int k = switch (day) {\n" +
-					"	    case SATURDAY  -> throw new NullPointerException();\n" +
-					"	    case TUESDAY -> 1;\n" +
-					"	    case WEDNESDAY -> {break 10;}\n" +
-					"	    default      -> {\n" +
-					"	        int g = day.h();\n" +
-					"	        int result = f(g);\n" +
-					"	        break result;\n" +
-					"	    }};\n" +
-					"	}\n" +
-					"	static int f(int k) {\n" +
-					"		return k*k;\n" +
-					"	}\n" +
-					"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("SATURDAY", FIELD, REFERENCES);
-		assertSearchResults(
-				"src/X.java void X.main(String[]) [SATURDAY] EXACT_MATCH\n" +
-				"src/X.java void X.main(String[]) [SATURDAY] EXACT_MATCH"
-		);
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-/*
- * java search a javatype reference from another java project if that is in switch expression
- */
-public void testBug542559_0011() throws CoreException {
-	try {
-
-		IJavaProject project1 = createJavaProject("JavaSearchBugs12", new String[] {"src"}, new String[] {"JCL12_LIB"}, "bin", "12");
-		project1.open(null);
-		createFolder("/JavaSearchBugs12/src/pack1");
-		createFile("/JavaSearchBugs12/src/pack1/X11.java",
-				"package pack1;\n" +
-				"public class X11 { \n" +
-				"	static final String MONDAY = \"MONDAY\";\n" +
-				"	static final String TUESDAY = \"TUESDAY\";\n" +
-				"	static final String WEDNESDAY = \"WEDNESDAY\";\n" +
-				"	static final String THURSDAY = \"THURSDAY\";\n" +
-				"	static final String FRIDAY = \"FRIDAY\";\n" +
-				"	static final String SATURDAY = \"SATURDAY\";\n" +
-				"	static final String SUNDAY = \"SUNDAY\"; \n" +
-				"	@SuppressWarnings(\"preview\")\n" +
-				"	public static void main(String[] args) {\n" +
-				"		String day = \"MONDAY\";\n" +
-				"		switch (day) {\n" +
-				"		    case MONDAY, FRIDAY, SUNDAY  -> System.out.println(6);\n" +
-				"		    case TUESDAY           		 -> System.out.println(7);\n" +
-				"		    case THURSDAY, SATURDAY     -> System.out.println(8);\n" +
-				"		    case WEDNESDAY              -> System.out.println(9);\n" +
-				"		}\n" +
-				"		int k = switch (day) {\n" +
-				"	    case SATURDAY  -> throw new NullPointerException();\n" +
-				"	    case TUESDAY -> 1;\n" +
-				"	    case WEDNESDAY -> {break 10;}\n" +
-				"	    default      -> {\n" +
-				"	        pack2.X22.a2=99;\n" +
-				"	        int result = f(g);\n" +
-				"	        break result;\n" +
-				"	    }};\n" +
-				"	}\n" +
-				"	static int f(int k) {\n" +
-				"		return k*k;\n" +
-				"	}\n" +
-				 "}\n");
-
-		IJavaProject project2 = createJavaProject("second", new String[] {"src"},new String[] {"JCL12_LIB"}, "bin", "12");
-		project2.open(null);
-		createFolder("/second/src/pack2");
-		createFile("/second/src/pack2/X22.java",
-				"package pack2;\n" +
-				"public class X22 {public static int a2=9;}\n");
-		addClasspathEntry(project1, JavaCore.newProjectEntry(project2.getPath()));
-		project1.close(); // sync
-		project2.close();
-		project2.open(null);
-		project1.open(null);
-		IPackageFragment pkg = getPackageFragment("second", "src", "pack2");
-
-		IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaProject[]
-				{getJavaProject("JavaSearchBugs12")});
-
-		search(
-			pkg,
-			ALL_OCCURRENCES,
-			scope,
-			this.resultCollector);
-		String exp = "src/pack1/X11.java void pack1.X11.main(String[]) [pack2] EXACT_MATCH\n"
-		+"src/pack2 pack2 EXACT_MATCH";
-		assertSearchResults(
-			exp,
-			this.resultCollector);
-
-	}
-	finally {
-		deleteProject("JavaSearchBugs12");
-		deleteProject("second");
-	}
-
-}
-/*
- * java search a method reference in switch expression
- */
-public void testBug542559_0012() throws CoreException {
-	this.workingCopies = new ICompilationUnit[1];
-	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
-			"import java.util.function.Supplier;\n" +
-			"interface I0 { void i(); }\n" +
-			"interface I1 extends I0 {}\n" +
-			"interface I2 extends I0 {}\n" +
-			"public class X {\n" +
-			"	I1 n1() { return null; }\n" +
-			"	<I extends I2> I n2() { return null; }\n" +
-			"	<M> M m(Supplier<M> m) { return m.get(); }\n" +
-			"	void test(int i, boolean b) {\n" +
-			"		m(switch (i) {\n" +
-			"			case 1 -> this::n1;\n" +
-			"			default -> this::n2;\n" +
-			"		}).i(); \n" +
-			"	}\n" +
-			"	public static void main(String[] args) {\n" +
-			"		try {\n" +
-			"			new X().test(1, true);\n" +
-			"		} catch (NullPointerException e) {\n" +
-			"			System.out.println(\"NPE as expected\");\n" +
-			"		}\n" +
-			"	}\n" +
-			"}\n"
-			);
-	IJavaProject javaProject = this.workingCopies[0].getJavaProject();//assuming single project for all working copies
-	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
-	try {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
-		search("n1", METHOD, REFERENCES);
-		assertSearchResults("src/X.java void X.test(int, boolean) [n1] EXACT_MATCH");
-	} finally {
-		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
-	}
-}
-
-}
\ No newline at end of file
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs13Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs13Tests.java
new file mode 100644
index 0000000..c0f0e30
--- /dev/null
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs13Tests.java
@@ -0,0 +1,1051 @@
+/*******************************************************************************
+ * Copyright (c) 2019 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.core.tests.model;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.ILocalVariable;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.WorkingCopyOwner;
+import org.eclipse.jdt.core.search.IJavaSearchScope;
+import org.eclipse.jdt.core.search.ReferenceMatch;
+import org.eclipse.jdt.core.search.SearchEngine;
+import org.eclipse.jdt.core.search.SearchMatch;
+import org.eclipse.jdt.core.search.TypeReferenceMatch;
+
+import junit.framework.Test;
+
+public class JavaSearchBugs13Tests extends AbstractJavaSearchTests {
+
+	static {
+//	 org.eclipse.jdt.internal.core.search.BasicSearchEngine.VERBOSE = true;
+//		TESTS_NUMBERS = new int[] { 19 };
+//		TESTS_RANGE = new int[] { 1, -1 };
+//		TESTS_NAMES = new String[] {"testBug542559_001"};
+}
+
+public JavaSearchBugs13Tests(String name) {
+	super(name);
+	this.endChar = "";
+}
+public static Test suite() {
+	return buildModelTestSuite(JavaSearchBugs13Tests.class, BYTECODE_DECLARATION_ORDER);
+}
+class TestCollector extends JavaSearchResultCollector {
+	public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
+		super.acceptSearchMatch(searchMatch);
+	}
+}
+class ReferenceCollector extends JavaSearchResultCollector {
+	protected void writeLine() throws CoreException {
+		super.writeLine();
+		ReferenceMatch refMatch = (ReferenceMatch) this.match;
+		IJavaElement localElement = refMatch.getLocalElement();
+		if (localElement != null) {
+			this.line.append("+[");
+			if (localElement.getElementType() == IJavaElement.ANNOTATION) {
+				this.line.append('@');
+				this.line.append(localElement.getElementName());
+				this.line.append(" on ");
+				this.line.append(localElement.getParent().getElementName());
+			} else {
+				this.line.append(localElement.getElementName());
+			}
+			this.line.append(']');
+		}
+	}
+
+}
+class TypeReferenceCollector extends ReferenceCollector {
+	protected void writeLine() throws CoreException {
+		super.writeLine();
+		TypeReferenceMatch typeRefMatch = (TypeReferenceMatch) this.match;
+		IJavaElement[] others = typeRefMatch.getOtherElements();
+		int length = others==null ? 0 : others.length;
+		if (length > 0) {
+			this.line.append("+[");
+			for (int i=0; i<length; i++) {
+				IJavaElement other = others[i];
+				if (i>0) this.line.append(',');
+				if (other.getElementType() == IJavaElement.ANNOTATION) {
+					this.line.append('@');
+					this.line.append(other.getElementName());
+					this.line.append(" on ");
+					this.line.append(other.getParent().getElementName());
+				} else {
+					this.line.append(other.getElementName());
+				}
+			}
+			this.line.append(']');
+		}
+	}
+}
+
+IJavaSearchScope getJavaSearchScope() {
+	return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearchBugs")});
+}
+IJavaSearchScope getJavaSearchScopeBugs(String packageName, boolean addSubpackages) throws JavaModelException {
+	if (packageName == null) return getJavaSearchScope();
+	return getJavaSearchPackageScope("JavaSearchBugs", packageName, addSubpackages);
+}
+public ICompilationUnit getWorkingCopy(String path, String source) throws JavaModelException {
+	if (this.wcOwner == null) {
+		this.wcOwner = new WorkingCopyOwner() {};
+	}
+	return getWorkingCopy(path, source, this.wcOwner);
+}
+@Override
+public void setUpSuite() throws Exception {
+	super.setUpSuite();
+	JAVA_PROJECT = setUpJavaProject("JavaSearchBugs", "13");
+}
+public void tearDownSuite() throws Exception {
+	deleteProject("JavaSearchBugs");
+	super.tearDownSuite();
+}
+protected void setUp () throws Exception {
+	super.setUp();
+	this.resultCollector = new TestCollector();
+	this.resultCollector.showAccuracy(true);
+}
+
+//copy from JavaSearchBugs12Tests starts ( after deleting break with value tests since that is discarded)
+
+public void testBug542559_001() throws CoreException {
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n" +
+			"	int switch_expr_field = 10;\n" +
+			"	int twice(int i) {\n" +
+			"		int tw = switch (i) {\n" +
+			"			case 0 -> switch_expr_field * 0;\n" +
+			"			case 1 -> 2;\n" +
+			"			default -> 3;\n" +
+			"		};\n" +
+			"		return tw;\n" +
+			"	}\n" +
+			"	public static void main(String... args) {\n" +
+			"		System.out.print(new X().twice(3));\n" +
+			"	}\n" +
+			"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("switch_expr_field", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+/*
+ * java search reference for an integer in default block of switch expression
+ */
+public void testBug542559_004() throws CoreException {
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n" +
+			"	int switch_expr_field = 10;\n" +
+			"	int twice(int i) {\n" +
+			"		int tw = switch (i) {\n" +
+			"			case 0 -> switch_expr_field * 0;\n" +
+			"			case 1 -> 2;\n" +
+			"			default ->{ \n" +
+			"			switch_expr_field*9; \n" +
+			"		}};\n" +
+			"		return tw;\n" +
+			"	}\n" +
+			"	public static void main(String... args) {\n" +
+			"		System.out.print(new X().twice(3));\n" +
+			"	}\n" +
+			"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("switch_expr_field", FIELD, REFERENCES);
+		assertSearchResults(
+				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH\n" +
+				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH"
+		);
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+/*
+ * java search reference for an integer in default of switch expression
+ */
+public void testBug542559_005() throws CoreException {
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n" +
+			"	int switch_expr_field = 10;\n" +
+			"	int twice(int i) {\n" +
+			"		int tw = switch (i) {\n" +
+			"			case 0 -> switch_expr_field * 0;\n" +
+			"			case 1 -> 2;\n" +
+			"			default -> switch_expr_field*9;\n" +
+			"		};\n" +
+			"		return tw;\n" +
+			"	}\n" +
+			"	public static void main(String... args) {\n" +
+			"		System.out.print(new X().twice(3));\n" +
+			"	}\n" +
+			"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("switch_expr_field", FIELD, REFERENCES);
+		assertSearchResults(
+				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH\n" +
+				"src/X.java int X.twice(int) [switch_expr_field] EXACT_MATCH"
+		);
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+/*
+ * java search reference for simple multi constant case statement for enum
+ */
+public void testBug542559_006() throws CoreException {
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n" +
+					"enum Day { SATURDAY, SUNDAY, MONDAY;}\n" +
+					"public static void bar(Day day) {\n" +
+					"		switch (day) {\n" +
+					"		case SATURDAY, SUNDAY: \n" +
+					"			System.out.println(Day.SUNDAY);\n" +
+					"			break;\n" +
+					"		case MONDAY : System.out.println(Day.MONDAY);\n" +
+					"					break;\n" +
+					"		}\n" +
+					"	}" +
+					"	public static void main(String[] args) {\n" +
+					"		bar(Day.SATURDAY);\n" +
+					"	}\n"
+					+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("SATURDAY", FIELD, REFERENCES);
+		assertSearchResults(
+				"src/X.java void X.bar(Day) [SATURDAY] EXACT_MATCH\n"+
+				"src/X.java void X.main(String[]) [SATURDAY] EXACT_MATCH"
+		);
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+/*
+ * java search reference for simple multi constant case statement for enum, 2nd case
+ */
+public void testBug542559_007() throws CoreException {
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n" +
+					"enum Day { SATURDAY, SUNDAY, MONDAY;}\n" +
+					"public static void bar(Day day) {\n" +
+					"		switch (day) {\n" +
+					"		case SATURDAY, SUNDAY: \n" +
+					"			System.out.println(Day.SUNDAY);\n" +
+					"			break;\n" +
+					"		case MONDAY : System.out.println(Day.MONDAY);\n" +
+					"					break;\n" +
+					"		}\n" +
+					"	}" +
+					"	public static void main(String[] args) {\n" +
+					"		bar(Day.SATURDAY);\n" +
+					"	}\n"
+					+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("SUNDAY", FIELD, REFERENCES);
+		assertSearchResults(
+				"src/X.java void X.bar(Day) [SUNDAY] EXACT_MATCH\n"+
+				"src/X.java void X.bar(Day) [SUNDAY] EXACT_MATCH"
+		);
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+/*
+ * java search reference for class file reference in switch expression
+ */
+public void testBug542559_008() throws CoreException {
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X2.java",
+			"public class X2 {\n" +
+			"   String s = new String();        \n" +
+			"	int switch_expr_field = 10;\n" +
+			"	int twice(int i) {\n" +
+			"		int tw = switch (i) {\n" +
+			"			case 0 -> switch_expr_field * 0;\n" +
+			"			case 1 -> 2;\n" +
+			"			default -> new X2().toString().length();\n" +
+			"		};\n" +
+			"		return tw;\n" +
+			"	}\n" +
+			"	public static void main(String... args) {\n" +
+			"		System.out.print(new X2().twice(3));\n" +
+			"	}\n" +
+			"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("X2", CLASS, REFERENCES);
+		assertSearchResults(
+		"src/X2.java int X2.twice(int) [X2] EXACT_MATCH\n"+
+		"src/X2.java void X2.main(String ...) [X2] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+
+/*
+ * java search a method reference in switch expression
+ */
+public void testBug542559_0012() throws CoreException {
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"import java.util.function.Supplier;\n" +
+			"interface I0 { void i(); }\n" +
+			"interface I1 extends I0 {}\n" +
+			"interface I2 extends I0 {}\n" +
+			"public class X {\n" +
+			"	I1 n1() { return null; }\n" +
+			"	<I extends I2> I n2() { return null; }\n" +
+			"	<M> M m(Supplier<M> m) { return m.get(); }\n" +
+			"	void test(int i, boolean b) {\n" +
+			"		m(switch (i) {\n" +
+			"			case 1 -> this::n1;\n" +
+			"			default -> this::n2;\n" +
+			"		}).i(); \n" +
+			"	}\n" +
+			"	public static void main(String[] args) {\n" +
+			"		try {\n" +
+			"			new X().test(1, true);\n" +
+			"		} catch (NullPointerException e) {\n" +
+			"			System.out.println(\"NPE as expected\");\n" +
+			"		}\n" +
+			"	}\n" +
+			"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject();//assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("n1", METHOD, REFERENCES);
+		assertSearchResults("src/X.java void X.test(int, boolean) [n1] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+// copy from JavaSearchBugs12Tests ends
+
+public void testBug549413_001() throws CoreException {
+	// field reference in yield
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n" +
+			"int switch_expr_field = 10; \n" +
+			"public static int foo(int val) {\n" +
+			"int k = switch (val) {\n" +
+			"case 1 -> { yield switch_expr_field; }\n" +
+			"default -> { yield 2; }\n" +
+			"};\n" +
+			"return k;\n" +
+			"}\n" +
+			"	public static void main(String... args) {\n" +
+			"		System.out.println(X.foo(2));\n" +
+			"	}\n" +
+			"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("switch_expr_field", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [switch_expr_field] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+public void testBug549413_002() throws CoreException {
+	//field all occurrences in yield
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n" +
+			"int switch_expr_field = 10; \n" +
+			"public static int foo(int val) {\n" +
+			"int k = switch (val) {\n" +
+			"case 1 -> { yield switch_expr_field; }\n" +
+			"default -> { yield 2; }\n" +
+			"};\n" +
+			"return k;\n" +
+			"}\n" +
+			"	public static void main(String... args) {\n" +
+			"		System.out.println(X.foo(2));\n" +
+			"	}\n" +
+			"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("switch_expr_field", FIELD, ALL_OCCURRENCES);
+		assertSearchResults("src/X.java X.switch_expr_field [switch_expr_field] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [switch_expr_field] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_003() throws CoreException {
+	//METHOD named yield -  all occurrences in yield
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"\n"+
+					"	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"+
+					"		default -> { yield 2; }\n"+
+					"		};\n"+
+					"		return k;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(1));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", METHOD, ALL_OCCURRENCES);
+		assertSearchResults("src/X.java int X.yield() [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+public void testBug549413_004() throws CoreException {
+	//METHOD yield - references in yield
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"\n"+
+					"	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 X.yield(); }\n"+
+					"		default -> { yield 2; }\n"+
+					"		};\n"+
+					"		return k;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(1));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", METHOD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield()] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_005() throws CoreException {
+	//field yield - references in yield
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"	public static int yield;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public static int foo(int val) {\n"+
+					"		int k = switch (val) {\n"+
+					"		case 1 -> { yield yield; }\n"+
+					"		default -> { yield 2; }\n"+
+					"		};\n"+
+					"		return k;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(1));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+public void testBug549413_006() throws CoreException {
+	//field yield - all occurrence in yield
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"	public static int yield;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public static int foo(int val) {\n"+
+					"		int k = switch (val) {\n"+
+					"		case 1 -> { yield yield; }\n"+
+					"		default -> { yield 2; }\n"+
+					"		};\n"+
+					"		return k;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(1));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, ALL_OCCURRENCES);
+		assertSearchResults("src/X.java X.yield [yield] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+public void testBug549413_007() throws CoreException {
+	//field yield - all reference of identifier in yield statement
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"	public static int yield;\n"+
+					"	public static int abc;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public static int foo(int val) {\n"+
+					"		int k = switch (val) {\n"+
+					"		case 1 -> { abc=0;yield yield; }\n"+
+					"		default -> { yield 2; }\n"+
+					"		};\n"+
+					"		return k;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(1));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("abc", FIELD, ALL_OCCURRENCES);
+		assertSearchResults("src/X.java X.abc [abc] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [abc] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+public void testBug549413_008() throws CoreException {
+	//field yield - all reference of identifier in yield statement ( yield -1 without braces)
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"	static int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public  static int foo(int i) {\n"+
+					"		int r = switch(i) {\n"+
+					"			default -> yield - 1;\n"+
+					"		};\n"+
+					"		return r;\n"+
+					"	}\n"+
+					"	public  int yield() {\n"+
+					"		return 0;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(0));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_009() throws CoreException {
+	//field yield - all reference of identifier in yield statement ( yield -1 with braces)
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"	int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public  static int foo(int i) {\n"+
+					"		int r = switch(i) {\n"+
+					"			default ->{ yield - 1;}\n"+
+					"		};\n"+
+					"		return r;\n"+
+					"	}\n"+
+					"	public  int yield() {\n"+
+					"		return 0;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(0));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_010() throws CoreException {
+	//method - break label
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"\n"+
+					"	static int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public  static int foo(int i) {\n"+
+					"	int r = switch(i) {\n"+
+					"			default -> X.yield();\n"+
+					"		};\n"+
+					"		return r;\n"+
+					"	}\n"+
+					"	public static  int yield() {\n"+
+					"		yield: while (X.yield == 100) {\n"+
+					"			yield = 256;\n"+
+					"			break yield;\n"+
+					"		}\n"+
+					"		return yield;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(0));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", METHOD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield()] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+public void testBug549413_011() throws CoreException {
+	//break label in combination with yield field
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"\n"+
+					"	static int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public  static int foo(int i) {\n"+
+					"	int r = switch(i) {\n"+
+					"			default -> X.yield();\n"+
+					"		};\n"+
+					"		return r;\n"+
+					"	}\n"+
+					"	public static  int yield() {\n"+
+					"		yield: while (X.yield == 100) {\n"+
+					"			yield = 256;\n"+
+					"			break yield;\n"+
+					"		}\n"+
+					"		return yield;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(0));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.yield() [yield] EXACT_MATCH\n" +
+				"src/X.java int X.yield() [yield] EXACT_MATCH\n" +
+				"src/X.java int X.yield() [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_012() throws CoreException {
+	//field yield - multiple yield references
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"\n"+
+					"	static	int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public  static int foo(int i) {\n"+
+					"		int r = switch(i) {\n"+
+					"			default -> {yield yield + yield + yield * yield;}\n"+
+					"		};\n"+
+					"		return r;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(0));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [yield] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [yield] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_013() throws CoreException {
+	//field yield -another yield field test
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"\n"+
+					"	static	int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public  static int foo(int i) {\n"+
+					"		int r = switch(i) {\n"+
+					"			default ->0 + yield + 10;\n"+
+					"		};\n"+
+					"		return r;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(0));\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_014() throws CoreException {
+	//field yield - ternary operator
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"	int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public   int foo(int i) {\n"+
+					"		int r = switch(i) {\n"+
+					"			 case 0 : yield 100;\n"+
+					"			 case 1 : yield yield;\n"+
+					"			 default: yield 0;\n"+
+					"		};\n"+
+					"		return r > 100 ? yield + 1 : yield + 200;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [yield] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_015() throws CoreException {
+	//field yield - another test case
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"	int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public   int foo(int i) {\n"+
+					"		int r = switch(i) {\n"+
+					"			 case 0 : yield 100;\n"+
+					"			 case 1 : yield yield;\n"+
+					"			 default: yield 0;\n"+
+					"		};\n"+
+					"		return r > 100 ? yield() + 1 : yield + 200;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"	}\n"+
+					"	public static int yield() {\n"+
+					"		return 1;\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield] EXACT_MATCH\n" +
+				"src/X.java int X.foo(int) [yield] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+
+public void testBug549413_016() throws CoreException {
+	//method yield -method references
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+			"public class X {\n"+
+					"	int yield = 100;\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public   int foo(int i) {\n"+
+					"		int r = switch(i) {\n"+
+					"			 case 0 : yield 100;\n"+
+					"			 case 1 : yield yield;\n"+
+					"			 default: yield 0;\n"+
+					"		};\n"+
+					"		return r > 100 ? yield() + 1 : yield + 200;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"	}\n"+
+					"	public static int yield() {\n"+
+					"		return 1;\n"+
+					"	}\n"+
+					"}\n"
+			);
+	IJavaProject javaProject = this.workingCopies[0].getJavaProject(); //assuming single project for all working copies
+	String old = javaProject.getOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, true);
+	try {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+		search("yield", METHOD, REFERENCES);
+		assertSearchResults("src/X.java int X.foo(int) [yield()] EXACT_MATCH");
+	} finally {
+		javaProject.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, old);
+	}
+}
+
+public void testBug549413_017() throws CoreException {
+	//select local variable and find the declaration
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+					"public class X {\n"+
+					"\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public  static int foo(int i) {\n"+
+					"		int yield = 100;\n"+
+					"		int r = switch(i) {\n"+
+					"			default -> {yield /* here*/ yield + yield + yield * yield;}\n"+
+					"		};\n"+
+					"		return r;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(0));\n"+
+					"	}\n"+
+					"}\n"
+	);
+
+	String str = this.workingCopies[0].getSource();
+	String selection = "/* here*/ yield";
+	int start = str.indexOf(selection);
+	int length = selection.length();
+
+	IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
+	ILocalVariable local = (ILocalVariable) elements[0];
+	search(local, DECLARATIONS, EXACT_RULE);
+	assertSearchResults(
+			"src/X.java int X.foo(int).yield [yield] EXACT_MATCH");
+}
+
+
+public void testBug549413_018() throws CoreException {
+	//select local variable and find the declaration
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+					"public class X {\n"+
+					"	@SuppressWarnings(\"preview\")\n"+
+					"	public  static int foo(int i) {\n"+
+					"		int localVar = 100;\n"+
+					"		int r = switch(i) {\n"+
+					"			default -> {yield /* here*/ localVar + localVar + localVar * localVar;}\n"+
+					"		};\n"+
+					"		return r;\n"+
+					"	}\n"+
+					"	public static void main(String[] args) {\n"+
+					"		System.out.println(X.foo(0));\n"+
+					"	}\n"+
+					"}\n"
+	);
+
+	String str = this.workingCopies[0].getSource();
+	String selection = "/* here*/ localVar";
+	int start = str.indexOf(selection);
+	int length = selection.length();
+
+	IJavaElement[] elements = this.workingCopies[0].codeSelect(start, length);
+	ILocalVariable local = (ILocalVariable) elements[0];
+	search(local, DECLARATIONS, EXACT_RULE);
+	assertSearchResults(
+			"src/X.java int X.foo(int).localVar [localVar] EXACT_MATCH");
+}
+// add non-preview stuff involving yield field and method
+
+public void testBug549413_019() throws CoreException {
+	//old style switch case without preview search for yield field.
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+		"public class X {\n"+
+		 " static int  yield;\n"+
+		 " public static int   yield() { \n"+
+		 "	  return 7; \n"+
+		 " } \n"+
+		 "  public static void main(String[] args) { \n"+
+		 "     int week = 1;	\n"+
+		 "    switch (week) { \n"+
+		 "      case 1:       \n"+
+		 "     	 yield = 88; \n"+
+		 "    	 break; \n"+
+		 "     case 2:  \n"+
+		 "   	 yield = yield();\n"+
+		 "   	 break; \n"+
+		 "    default:  \n"+
+		 "  	 yield = 88; \n"+
+		 "     break; \n" +
+		 " } \n" +
+		 " System.out.println(yield); \n"+
+		 "	}\n"+
+		 "}\n"
+);
+
+
+	try {
+		search("yield", FIELD, REFERENCES);
+		assertSearchResults("src/X.java void X.main(String[]) [yield] EXACT_MATCH\n" + 
+				"src/X.java void X.main(String[]) [yield] EXACT_MATCH\n" +
+				"src/X.java void X.main(String[]) [yield] EXACT_MATCH\n" +
+				"src/X.java void X.main(String[]) [yield] EXACT_MATCH");
+	} finally {
+	}
+}
+
+public void testBug549413_020() throws CoreException {
+	//old style switch case without preview search for yield method.
+	this.workingCopies = new ICompilationUnit[1];
+	this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/X.java",
+		"public class X {\n"+
+		 " static int  yield;\n"+
+		 " public static int   yield() { \n"+
+		 "	  return 7; \n"+
+		 " } \n"+
+		 "  public static void main(String[] args) { \n"+
+		 "     int week = 1;	\n"+
+		 "    switch (week) { \n"+
+		 "      case 1:       \n"+
+		 "     	 yield = 88; \n"+
+		 "    	 break; \n"+
+		 "     case 2:  \n"+
+		 "   	 yield = yield();\n"+
+		 "   	 break; \n"+
+		 "    default:  \n"+
+		 "  	 yield = 88; \n"+
+		 "     break; \n" +
+		 " } \n" +
+		 " System.out.println(yield); \n"+
+		 "	}\n"+
+		 "}\n"
+);
+
+
+	try {
+		search("yield", METHOD, REFERENCES);
+		assertSearchResults("src/X.java void X.main(String[]) [yield()] EXACT_MATCH");
+	} finally {
+	}
+}
+
+}
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java
index 54d85a1..7a9a19d 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NullAnnotationModelTests.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011, 2016 GK Software AG and others.
+ * Copyright (c) 2011, 2019 GK Software AG and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     Stephan Herrmann - initial API and implementation
  *******************************************************************************/
@@ -298,7 +302,7 @@
 					"Buildpath problem: the type invalid, which is configured as a null annotation type, cannot be resolved\n" +
 					"----------\n");
 
-			ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS11);
+			ASTParser parser = ASTParser.newParser(AST_INTERNAL_LATEST);
 			parser.setProject(p);
 			parser.setResolveBindings(true);
 			parser.setSource(unit);
@@ -361,7 +365,7 @@
 			assertEquals("Should have no markers", 0, markers.length);
 
 			// Challenge CompilationUnitResolver:
-			ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS11);
+			ASTParser parser = ASTParser.newParser(AST_INTERNAL_LATEST);
 			parser.setProject(p);
 			parser.setResolveBindings(true);
 			parser.setSource(unit);
@@ -432,7 +436,7 @@
 			assertEquals("Unexpected marker path", "/P/p1/C1.java", markers[0].getResource().getFullPath().toString());
 
 			// Challenge CompilationUnitResolver:
-			ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS11);
+			ASTParser parser = ASTParser.newParser(AST_INTERNAL_LATEST);
 			parser.setProject(p);
 			parser.setResolveBindings(true);
 			parser.setSource(unit);
@@ -485,7 +489,7 @@
 			final ICompilationUnit unit = getCompilationUnit("/P/p1/C1.java").getWorkingCopy(this.wcOwner, null);
 			assertNoProblem(c1SourceString.toCharArray(), unit);
 
-			ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS11);
+			ASTParser parser = ASTParser.newParser(AST_INTERNAL_LATEST);
 			parser.setProject(p);
 			parser.setResolveBindings(true);
 			parser.setSource(unit);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java
index 55168e7..022d22b 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2019 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Technical University Berlin - adapted for Object Teams
@@ -80,7 +84,7 @@
 		}
 	}
 	
-	/*package*/ static final int JLS_LATEST = AST.JLS11;
+	/*package*/ static final int JLS_LATEST = AST.JLS13;
 
 	static class ReconcileParticipant extends CompilationParticipant {
 		IJavaElementDelta delta;
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java
index 4f85147..b49ffdc 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *		IBM Corporation - initial API and implementation
  *		Stephan Herrmann - Copy-adjusted structure from ReconcilerTests, filled with new content
@@ -43,7 +47,7 @@
 	protected ICompilationUnit workingCopy;
 	protected ProblemRequestor problemRequestor;
 	
-	/*package*/ static final int JLS_LATEST = AST.JLS11;
+	/*package*/ static final int JLS_LATEST = AST.JLS13;
 
 /**
  */
@@ -436,7 +440,7 @@
 					"}\n");
 		this.workingCopy = getCompilationUnit("client/src/p/X.java").getWorkingCopy(this.wcOwner, null);
 		this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
-		this.workingCopy.reconcile(AST_INTERNAL_JLS11, true, this.wcOwner, null);
+		this.workingCopy.reconcile(JLS_LATEST, true, this.wcOwner, null);
 		assertProblems("Expecting no problems",
 						"----------\n" + 
 						"----------\n",
@@ -501,7 +505,7 @@
 
 		this.workingCopy = getCompilationUnit("p/src/test/Test.java").getWorkingCopy(this.wcOwner, null);
 		this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
-		this.workingCopy.reconcile(AST_INTERNAL_JLS11, true, this.wcOwner, null);
+		this.workingCopy.reconcile(JLS_LATEST, true, this.wcOwner, null);
 		assertProblems("Expecting no problems",
 						"----------\n" + 
 						"----------\n",
@@ -560,7 +564,7 @@
 
 		this.workingCopy = getCompilationUnit("p/src/test/Test.java").getWorkingCopy(this.wcOwner, null);
 		this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
-		this.workingCopy.reconcile(AST_INTERNAL_JLS11, true, this.wcOwner, null);
+		this.workingCopy.reconcile(JLS_LATEST, true, this.wcOwner, null);
 		assertProblems("Expecting no problems",
 						"----------\n" + 
 						"1. ERROR in /p/src/test/Test.java (at line 3)\n" + 
@@ -641,7 +645,7 @@
 		ICompilationUnit wc = getCompilationUnit(pathExample).getWorkingCopy(this.wcOwner, null);
 		wc.getBuffer().append(" ");
 		this.problemRequestor.initialize((sourceExample+" ").toCharArray());
-		wc.reconcile(AST_INTERNAL_JLS11, true, this.wcOwner, null);
+		wc.reconcile(JLS_LATEST, true, this.wcOwner, null);
 		assertProblems("Expecting no problems",
 						"----------\n" + 
 						"----------\n",
@@ -676,7 +680,7 @@
 		this.problemRequestor.initialize(testSrc.toCharArray());
 		this.workingCopy = getCompilationUnit("testproj/src/test/Test.java").getWorkingCopy(this.wcOwner, null);
 		this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
-		this.workingCopy.reconcile(AST_INTERNAL_JLS11, true, this.wcOwner, null);
+		this.workingCopy.reconcile(JLS_LATEST, true, this.wcOwner, null);
 		assertProblems("Expecting no problems", "----------\n" + "----------\n", this.problemRequestor);
 
 		IMarker[] markers = p.getProject().findMarkers(null, true, IResource.DEPTH_INFINITE);
@@ -792,7 +796,7 @@
 		this.problemRequestor.initialize(testSource.toCharArray());
 		this.workingCopy = getCompilationUnit("p/src-test/test/Test.java").getWorkingCopy(this.wcOwner, null);
 		this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
-		this.workingCopy.reconcile(AST_INTERNAL_JLS11, true, this.wcOwner, null);
+		this.workingCopy.reconcile(JLS_LATEST, true, this.wcOwner, null);
 		assertProblems("Expecting no problems", "----------\n" + "----------\n", this.problemRequestor);
 
 		markers = p.getProject().findMarkers(null, true, IResource.DEPTH_INFINITE);
@@ -843,7 +847,7 @@
 		this.workingCopy.discardWorkingCopy();
 		this.workingCopy = getCompilationUnit("p2/src-test/p2/Test.java").getWorkingCopy(this.wcOwner, null);
 		this.problemRequestor.initialize(testSource.toCharArray());
-		this.workingCopy.reconcile(AST_INTERNAL_JLS11, true, this.wcOwner, null);
+		this.workingCopy.reconcile(JLS_LATEST, true, this.wcOwner, null);
 		assertProblems("Expecting no problems", "----------\n" + "----------\n", this.problemRequestor);
 		this.workingCopy.discardWorkingCopy();
 	} finally {
@@ -934,7 +938,7 @@
 		this.problemRequestor.initialize(cSource.toCharArray());
 		this.workingCopy = getCompilationUnit("c/src/com/example/c/C.java").getWorkingCopy(this.wcOwner, null);
 		this.problemRequestor.initialize(this.workingCopy.getSource().toCharArray());
-		this.workingCopy.reconcile(AST_INTERNAL_JLS11, true, this.wcOwner, null);
+		this.workingCopy.reconcile(AST_INTERNAL_JLS13, true, this.wcOwner, null);
 		assertProblems("Expecting no problems",
 				"----------\n" +
 				"----------\n",
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RunCompletionModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RunCompletionModelTests.java
index 348ad9c..992ad6f 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RunCompletionModelTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/RunCompletionModelTests.java
@@ -41,7 +41,6 @@
 			COMPLETION_SUITES.add(CompletionTests9.class);
 			COMPLETION_SUITES.add(CompletionTests10.class);
 			COMPLETION_SUITES.add(CompletionTests11.class);
-			COMPLETION_SUITES.add(CompletionTests12.class);
 			COMPLETION_SUITES.add(CompletionContextTests.class);
 			COMPLETION_SUITES.add(CompletionContextTests_1_5.class);
 			COMPLETION_SUITES.add(CompletionWithMissingTypesTests.class);
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java
index ae8f5e5..2406a51 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingStatementsTest.java
@@ -6,6 +6,10 @@
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
@@ -104,10 +108,10 @@
 		return createSuite(ASTRewritingStatementsTest.class);
 	}
 
- 	@Override
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
-		if (this.apiLevel == AST.JLS12 ) {
+		if (this.apiLevel == AST.JLS13 ) {
 			this.project1.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
 			this.project1.setOption(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
 		}
@@ -3615,7 +3619,7 @@
 			assertTrue("Number of statements not 0", statements.size() == 0);
 
 			SwitchCase caseStatement1= ast.newSwitchCase();
-			if (this.apiLevel < AST.JLS12) {
+			if (this.apiLevel < AST.JLS13) {
 				caseStatement1.setExpression(ast.newNumberLiteral("1"));
 			}
 			else {
@@ -3625,7 +3629,7 @@
 			Statement statement1= ast.newReturnStatement();
 
 			SwitchCase caseStatement2= ast.newSwitchCase(); // default
-			if (this.apiLevel < AST.JLS12) {
+			if (this.apiLevel < AST.JLS13) {
 				caseStatement2.setExpression(null);
 			}
 
@@ -3650,7 +3654,7 @@
 			// change case statement
 			SwitchCase caseStatement= (SwitchCase) statements.get(3);
 			Expression newCaseExpression= ast.newNumberLiteral("10");
-			if (this.apiLevel != AST.JLS12) {
+			if (this.apiLevel < AST.JLS13) {
 				rewrite.replace(caseStatement.getExpression(), newCaseExpression, null);
 			} else {
 				List expressions = caseStatement.expressions();
@@ -3663,7 +3667,7 @@
 			{
 				// insert case statement
 				SwitchCase caseStatement2= ast.newSwitchCase();
-				if (this.apiLevel < AST.JLS12) {
+				if (this.apiLevel < AST.JLS13) {
 					caseStatement2.setExpression(ast.newNumberLiteral("11"));
 				}
 				else {
@@ -3679,7 +3683,7 @@
 			{
 				// insert case statement
 				SwitchCase caseStatement2= ast.newSwitchCase();
-				if (this.apiLevel < AST.JLS12) {
+				if (this.apiLevel < AST.JLS13) {
 					caseStatement2.setExpression(ast.newNumberLiteral("12"));
 				}
 				else {
@@ -3774,7 +3778,7 @@
 				assertTrue("Number of statements not 0", statements.size() == 0);
 	
 				SwitchCase caseStatement1= ast.newSwitchCase();
-				if (this.apiLevel < AST.JLS12) {
+				if (this.apiLevel < AST.JLS13) {
 					caseStatement1.setExpression(ast.newNumberLiteral("1"));
 				}
 				else {
@@ -3784,7 +3788,7 @@
 				Statement statement1= ast.newReturnStatement();
 	
 				SwitchCase caseStatement2= ast.newSwitchCase(); // default
-				if (this.apiLevel < AST.JLS12) {
+				if (this.apiLevel < AST.JLS13) {
 					caseStatement2.setExpression(null);
 				}
 	
@@ -3809,7 +3813,7 @@
 				// change case statement
 				SwitchCase caseStatement= (SwitchCase) statements.get(3);
 				Expression newCaseExpression= ast.newNumberLiteral("10");
-				if (this.apiLevel < AST.JLS12) {
+				if (this.apiLevel < AST.JLS13) {
 					rewrite.replace(caseStatement.getExpression(), newCaseExpression, null);
 				} else {
 					List expressions = caseStatement.expressions();
@@ -3822,7 +3826,7 @@
 				{
 					// insert case statement
 					SwitchCase caseStatement2= ast.newSwitchCase();
-					if (this.apiLevel < AST.JLS12) {
+					if (this.apiLevel < AST.JLS13) {
 						caseStatement2.setExpression(ast.newNumberLiteral("11"));
 					}
 					else {
@@ -3839,7 +3843,7 @@
 				{
 					// insert case statement
 					SwitchCase caseStatement2= ast.newSwitchCase();
-					if (this.apiLevel < AST.JLS12) {
+					if (this.apiLevel < AST.JLS13) {
 						caseStatement2.setExpression(ast.newNumberLiteral("12"));
 					}
 					else {
@@ -4150,7 +4154,7 @@
 				ExpressionStatement assignment = (ExpressionStatement)statements.get(1); // i= 1;:
 				
 				SwitchCase switchCase = ast.newSwitchCase();
-				if (this.apiLevel < AST.JLS12) {
+				if (this.apiLevel < AST.JLS13) {
 					switchCase.setExpression(ast.newNumberLiteral("2"));
 				}
 				else {
@@ -4298,7 +4302,7 @@
 				ExpressionStatement assignment = (ExpressionStatement)statements.get(1); // i= 1;
 				
 				SwitchCase switchCase = ast.newSwitchCase();
-				if (this.apiLevel < AST.JLS12) {
+				if (this.apiLevel < AST.JLS13) {
 					switchCase.setExpression(ast.newNumberLiteral("2"));
 				}
 				else {
@@ -4622,7 +4626,7 @@
 			SwitchStatement switchStmt = (SwitchStatement) blockStatements.get(1);
 
 			SwitchCase caseStatement1= ast.newSwitchCase();
-			if (this.apiLevel < AST.JLS12) {
+			if (this.apiLevel < AST.JLS13) {
 				caseStatement1.setExpression(ast.newNumberLiteral("100"));
 			} else {
 				caseStatement1.expressions().add(ast.newNumberLiteral("100"));
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java
index 1775481..95464da 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingSwitchExpressionsTest.java
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -54,15 +58,15 @@
 		return createSuite(ASTRewritingSwitchExpressionsTest.class);
 	}
 
- 	@Override
+	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
-		if (this.apiLevel == AST.JLS12 ) {
+		if (this.apiLevel == AST.JLS13 ) {
 			this.project1.setOption(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
 			this.project1.setOption(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
-			this.project1.setOption(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_12);
-			this.project1.setOption(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_12);
-			this.project1.setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_12);
+			this.project1.setOption(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_13);
+			this.project1.setOption(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_13);
+			this.project1.setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_13);
 		}
 	}
 	 	
@@ -169,8 +173,9 @@
 		buf.append("}\n");
 		assertEqualString(preview, buf.toString());
 	}
+	@Deprecated
 	@SuppressWarnings("rawtypes")
-	public void testSwitchExpressions_02_since_12() throws Exception {
+	public void _testSwitchExpressions_02_since_12() throws Exception {
 		IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null);
 		StringBuffer buf= new StringBuffer();
 		buf.append("package test1;\n");
@@ -228,8 +233,9 @@
 		assertEqualString(preview, buf.toString());
 	}
 
+	@Deprecated
 	@SuppressWarnings("rawtypes")
-	public void testSwitchExpressions_03_since_12() throws Exception {
+	public void _testSwitchExpressions_03_since_12() throws Exception {
 		IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null);
 		String s	=
 				"package test1;\n"+
@@ -300,7 +306,9 @@
 		buf.append(" 				int z = 100;\n");
 		buf.append(" 				break z;\n");
 		buf.append("			}\n");
-		buf.append("			case 100, 200 -> {break 2048;}\n");
+		buf.append("			case 100, 200 -> {\n");
+		buf.append("    break 2048;\n");
+		buf.append("}\n");
 		buf.append("            default -> {\n");
 		buf.append("				break 12;\n");
 		buf.append("			}\n");
@@ -315,7 +323,7 @@
 	}
 
 	@SuppressWarnings("rawtypes")
-	public void testSwitchStatement_Bug543720_since_12() throws Exception {
+	public void _testSwitchStatement_Bug543720_since_12() throws Exception {
 		IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null);
 		String s	=
 				"package test1;\n"+
@@ -396,7 +404,7 @@
 		assertEqualString(preview, buf.toString());
 	}
 	@SuppressWarnings("rawtypes")
-	public void testSwitchExpressions_04_since_12() throws Exception {
+	public void _testSwitchExpressions_04_since_12() throws Exception {
 		IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null);
 		String s	= "package test1;\n"+
 				"public class X {\n"+
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java
index 5437dbb..1b2a7a7 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTest.java
@@ -6,6 +6,10 @@
  * which accompanies this distribution, and is available at
  * https://www.eclipse.org/legal/epl-2.0/
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * SPDX-License-Identifier: EPL-2.0
  *
  * Contributors:
@@ -83,9 +87,9 @@
 	/** @deprecated using deprecated code */
 	private final static int JLS10_INTERNAL = AST.JLS10;
 	
-	private final static int JLS12_INTERNAL = AST.JLS12;
+	private final static int JLS13_INTERNAL = AST.JLS13;
 
-	private final static int[] JLS_LEVELS = { JLS2_INTERNAL, JLS3_INTERNAL, JLS4_INTERNAL, JLS8_INTERNAL, JLS9_INTERNAL, JLS10_INTERNAL, JLS12_INTERNAL };
+	private final static int[] JLS_LEVELS = { JLS2_INTERNAL, JLS3_INTERNAL, JLS4_INTERNAL, JLS8_INTERNAL, JLS9_INTERNAL, JLS10_INTERNAL, JLS13_INTERNAL };
 
 	private static final String ONLY_AST_STRING = "_only";
 	private static final String SINCE_AST_STRING = "_since";
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java
index ecf0daa..dd32ff1 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ImportRewriteTest.java
@@ -8,6 +8,10 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ * 
  * Contributors:
  *		IBM Corporation - initial API and implementation
  *		Stephan Herrmann - Contribution for Bug 378024 - Ordering of comments between imports not preserved
@@ -4959,7 +4963,7 @@
 				"}\n";
 		ICompilationUnit cu = pack1.createCompilationUnit("X.java", contents, false, null);
 
-		ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS11);
+		ASTParser parser = ASTParser.newParser(AST_INTERNAL_LATEST);
 		parser.setSource(cu);
 		parser.setResolveBindings(true);
 		parser.setStatementsRecovery(true);
@@ -4984,7 +4988,7 @@
 				"}\n";
 		ICompilationUnit cu = pack1.createCompilationUnit("X.java", contents, false, null);
 
-		ASTParser parser = ASTParser.newParser(AST_INTERNAL_JLS11);
+		ASTParser parser = ASTParser.newParser(AST_INTERNAL_LATEST);
 		parser.setSource(cu);
 		parser.setResolveBindings(true);
 		parser.setStatementsRecovery(true);
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Converter12/.classpath b/org.eclipse.jdt.core.tests.model/workspace/Converter13/.classpath
similarity index 100%
rename from org.eclipse.jdt.core.tests.model/workspace/Converter12/.classpath
rename to org.eclipse.jdt.core.tests.model/workspace/Converter13/.classpath
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Converter12/.project b/org.eclipse.jdt.core.tests.model/workspace/Converter13/.project
similarity index 100%
rename from org.eclipse.jdt.core.tests.model/workspace/Converter12/.project
rename to org.eclipse.jdt.core.tests.model/workspace/Converter13/.project
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Converter12/src/X.java b/org.eclipse.jdt.core.tests.model/workspace/Converter13/src/X.java
similarity index 100%
rename from org.eclipse.jdt.core.tests.model/workspace/Converter12/src/X.java
rename to org.eclipse.jdt.core.tests.model/workspace/Converter13/src/X.java
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/A_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/A_out.java
index 683eafb..f1db906 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/A_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/A_out.java
@@ -16,7 +16,7 @@
 
 
 		case 4: {
-			// break missing, oh well...
+			// yield missing, oh well...
 		}
 
 
@@ -33,13 +33,13 @@
 
 		int c = switch (b) {
 		case 444:
-			break a + b;
+			yield a + b;
 
 
 		case 555:
 		case 666:
 			doSoemthing();
-			break 777;
+			yield 777;
 
 
 		default:
@@ -52,7 +52,7 @@
 		case 1 -> 6;
 		case 2 -> {
 			int f = a + b;
-			break f * f;
+			yield f * f;
 		}
 		default -> 55;
 		};
@@ -79,32 +79,32 @@
 				doSomething(switch (a * b * c * d) {
 				case 888:
 					aaa();
-					break bbb();
+					yield bbb();
 
 
 				// comment
 				case 999:
 					aaa();
-					break bbb();
+					yield bbb();
 				// comment
 
 
 				case 101010:
 					aaa();
-					break bbb();
+					yield bbb();
 
 
 				// comment
 				case 111111:
 					aaa();
-					break bbb();
+					yield bbb();
 
 				// comment
 
 
 				case 121212:
 					aaa();
-					break bbb();
+					yield bbb();
 
 				// comment
 
@@ -113,14 +113,14 @@
 
 				case 131313:
 					aaa();
-					break bbb();
+					yield bbb();
 
 
 				// comment
 				// comment
 				default:
 					aaa();
-					break bbb();
+					yield bbb();
 				});
 			}
 		}
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/B_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/B_out.java
index b428dfc..68d73ba 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/B_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/B_out.java
@@ -12,7 +12,7 @@
 			doSomeOtherThing();
 			break;
 		case 4: {
-			// break missing, oh well...
+			// yield missing, oh well...
 		}
 		case 5: {
 			doSomething(55);
@@ -25,11 +25,11 @@
 
 		int c = switch (b) {
 		case 444:
-			break a + b;
+			yield a + b;
 		case 555:
 		case 666:
 			doSoemthing();
-			break 777;
+			yield 777;
 		default:
 			doSomeOtherSomething();
 			return;
@@ -40,7 +40,7 @@
 		case 1 -> 6;
 		case 2 -> {
 			int f = a + b;
-			break f * f;
+			yield f * f;
 		}
 		default -> 55;
 		};
@@ -63,37 +63,37 @@
 				doSomething(switch (a * b * c * d) {
 				case 888:
 					aaa();
-					break bbb();
+					yield bbb();
 				// comment
 				case 999:
 					aaa();
-					break bbb();
+					yield bbb();
 				// comment
 				case 101010:
 					aaa();
-					break bbb();
+					yield bbb();
 
 				// comment
 				case 111111:
 					aaa();
-					break bbb();
+					yield bbb();
 
 				// comment
 				case 121212:
 					aaa();
-					break bbb();
+					yield bbb();
 
 				// comment
 
 				// comment
 				case 131313:
 					aaa();
-					break bbb();
+					yield bbb();
 				// comment
 				// comment
 				default:
 					aaa();
-					break bbb();
+					yield bbb();
 				});
 			}
 		}
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/in.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/in.java
index 6072466..967b5c9 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/in.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test390720/in.java
@@ -13,7 +13,7 @@
 			doSomeOtherThing();
 			break;
 		case 4: {
-			// break missing, oh well...
+			// yield missing, oh well...
 		}
 
 		case 5: {
@@ -27,12 +27,12 @@
 
 		int c = switch (b) {
 		case 444:
-			break a + b;
+			yield a + b;
 
 		case 555:
 		case 666:
 			doSoemthing();
-			break 777;
+			yield 777;
 		default:
 			doSomeOtherSomething();
 			return;
@@ -43,7 +43,7 @@
 		case 1 -> 6;
 		case 2 -> {
 			int f = a + b;
-			break f * f;
+			yield f * f;
 		}
 		default -> 55;
 		};
@@ -66,27 +66,27 @@
 				doSomething(switch (a * b * c * d) {
 				case 888:
 					aaa();
-					break bbb();
+					yield bbb();
 				// comment
 				case 999:
 					aaa();
-					break bbb();
+					yield bbb();
 				// comment
 
 				case 101010:
 					aaa();
-					break bbb();
+					yield bbb();
 
 				// comment
 				case 111111:
 					aaa();
-					break bbb();
+					yield bbb();
 
 				// comment
 
 				case 121212:
 					aaa();
-					break bbb();
+					yield bbb();
 
 				// comment
 
@@ -94,12 +94,12 @@
 
 				case 131313:
 					aaa();
-					break bbb();
+					yield bbb();
 				// comment
 				// comment
 				default:
 					aaa();
-					break bbb();
+					yield bbb();
 				});
 			}
 		}
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/A_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/A_out.java
index 89ab563..2e4f19b 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/A_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/A_out.java
@@ -31,7 +31,7 @@
 
 		int value = switch (ABC) {
 			case A :
-				break 1;
+				yield 1;
 			case B :
 				System.out.println("!!!");
 				return;
@@ -40,16 +40,16 @@
 			case C , D , E , F , G :
 			case H , I , J : {
 				System.out.println("@@@");
-				break 3454366;
+				yield 3454366;
 			}
 			default:
-				break 6;
+				yield 6;
 		};
 
 		Object value2 = switch (a.b.c.d(e.f.g.h())) {
 			case a -> {
 				System.out.println("aaaaaaa");
-				break "";
+				yield "";
 			}
 			case b + c , d.e , f("aaaaaaaaaaaa"//
 					+ //
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/B_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/B_out.java
index 30ba3b5..9800b28 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/B_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/B_out.java
@@ -31,7 +31,7 @@
 
 		int value = switch (ABC ) {
 		case A:
-			break 1;
+			yield 1;
 		case B:
 		System.out.println("!!!");
 		return;
@@ -40,16 +40,16 @@
 		case C,D,E,F,G:
 		case H,I,J: {
 			System.out.println("@@@");
-			break 3454366;
+			yield 3454366;
 		}
 		default:
-			break 6;
+			yield 6;
 		};
 
 		Object value2 = switch (a.b.c.d(e.f.g.h()) ) {
 		case a -> {
 			System.out.println("aaaaaaa");
-			break "";
+			yield "";
 		}
 		case b + c,d.e,f("aaaaaaaaaaaa"//
 				+ //
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/C_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/C_out.java
index b98e85a..f792810 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/C_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/C_out.java
@@ -31,7 +31,7 @@
 
 		int value = switch(ABC) {
 		case A:
-		break 1;
+		yield 1;
 		case B:
 			System.out.println("!!!");
 			return;
@@ -40,16 +40,16 @@
 		case C, D, E, F, G:
 		case H, I, J: {
 			System.out.println("@@@");
-			break 3454366;
+			yield 3454366;
 		}
 		default:
-		break 6;
+		yield 6;
 		};
 
 		Object value2 = switch(a.b.c.d(e.f.g.h())) {
 		case a-> {
 			System.out.println("aaaaaaa");
-			break "";
+			yield "";
 		}
 		case b + c, d.e, f("aaaaaaaaaaaa"//
 				+ //
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/D_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/D_out.java
index 49e0db7..c971599 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/D_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/D_out.java
@@ -34,7 +34,7 @@
 		int value = switch ( ABC)
 		{
 		case A:
-			break 1;
+			yield 1;
 		case B:
 			System.out.println("!!!");
 			return;
@@ -43,17 +43,17 @@
 		case C, D, E, F, G:
 		case H, I, J:{
 			System.out.println("@@@");
-			break 3454366;
+			yield 3454366;
 		}
 		default:
-			break 6;
+			yield 6;
 		};
 
 		Object value2 = switch ( a.b.c.d(e.f.g.h()))
 		{
 		case a ->{
 			System.out.println("aaaaaaa");
-			break "";
+			yield "";
 		}
 		case b + c, d.e, f("aaaaaaaaaaaa"//
 				+ //
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/E_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/E_out.java
index d8bbd1a..25f85e2 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/E_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/E_out.java
@@ -37,7 +37,7 @@
 			ABC
 		) {
 		case A:
-			break 1;
+			yield 1;
 		case B:
 			System.out.println("!!!");
 			return;
@@ -46,10 +46,10 @@
 		case C, D, E, F, G:
 		case H, I, J: {
 			System.out.println("@@@");
-			break 3454366;
+			yield 3454366;
 		}
 		default :
-			break 6;
+			yield 6;
 		};
 
 		Object value2 = switch (
@@ -57,7 +57,7 @@
 		) {
 		case a -> {
 			System.out.println("aaaaaaa");
-			break "";
+			yield "";
 		}
 		case b + c, d.e, f("aaaaaaaaaaaa"//
 				+ //
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/F_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/F_out.java
index 6ad72c3..27b34bd 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/F_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/F_out.java
@@ -31,7 +31,7 @@
 
 		int value = switch (ABC){
 		case A:
-			break 1;
+			yield 1;
 		case B:
 			System.out.println("!!!");
 			return;
@@ -40,16 +40,16 @@
 		case C, D, E, F, G:
 		case H, I, J:{
 			System.out.println("@@@");
-			break 3454366;
+			yield 3454366;
 		}
 		default:
-			break 6;
+			yield 6;
 		};
 
 		Object value2 = switch (a.b.c.d(e.f.g.h())){
 		case a -> {
 			System.out.println("aaaaaaa");
-			break "";
+			yield "";
 		}
 		case b + c, d.e, f("aaaaaaaaaaaa"//
 				+ //
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/G_out.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/G_out.java
index aa05baa..5a06a59 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/G_out.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/G_out.java
@@ -31,7 +31,7 @@
 
 		int value = switch (ABC) {
 		case A:
-			break 1;
+			yield 1;
 		case B:
 			System.out.println("!!!");
 			return;
@@ -40,16 +40,16 @@
 		case C, D, E, F, G:
 		case H, I, J: {
 			System.out.println("@@@");
-			break 3454366;
+			yield 3454366;
 		}
 		default:
-			break 6;
+			yield 6;
 		};
 
 		Object value2 = switch (a.b.c.d(e.f.g.h())) {
 		case a -> {
 			System.out.println("aaaaaaa");
-			break "";
+			yield "";
 		}
 		case b + c, d.e, f("aaaaaaaaaaaa"//
 				+ //
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/in.java b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/in.java
index 7dfd080..96f93ec 100644
--- a/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/in.java
+++ b/org.eclipse.jdt.core.tests.model/workspace/Formatter/test543818/in.java
@@ -30,7 +30,7 @@
 		
 		int value = switch(ABC) {
 		case A:
-			break 1;
+			yield 1;
 		case B:
 			System.out.println("!!!");
 			return;
@@ -38,15 +38,15 @@
 		case C, D, E, F, G:
 		case H, I, J: {
 			System.out.println("@@@");
-			break 3454366;
+			yield 3454366;
 		}
-			default: break 6;
+			default: yield 6;
 		};
 		
 		Object value2 = switch(a.b.c.d(e.f.g.h())) {
 		case a -> {
 			System.out.println("aaaaaaa");
-			break "";
+			yield "";
 		}
 		case b + c, d.e, f("aaaaaaaaaaaa"//
 		+//