Workaround for illegal reflective access on Java 17+
diff --git a/plugins/org.eclipse.epsilon.ecl.engine/src/org/eclipse/epsilon/ecl/concurrent/EclModuleParallelAnnotation.java b/plugins/org.eclipse.epsilon.ecl.engine/src/org/eclipse/epsilon/ecl/concurrent/EclModuleParallelAnnotation.java
index 6f1698c..b94707a 100644
--- a/plugins/org.eclipse.epsilon.ecl.engine/src/org/eclipse/epsilon/ecl/concurrent/EclModuleParallelAnnotation.java
+++ b/plugins/org.eclipse.epsilon.ecl.engine/src/org/eclipse/epsilon/ecl/concurrent/EclModuleParallelAnnotation.java
@@ -9,8 +9,8 @@
 **********************************************************************/
 package org.eclipse.epsilon.ecl.concurrent;
 
+import java.util.ArrayList;
 import java.util.Collection;
-import java.util.LinkedList;
 import java.util.concurrent.Callable;
 import org.eclipse.epsilon.ecl.dom.MatchRule;
 import org.eclipse.epsilon.ecl.execute.context.concurrent.*;
@@ -52,7 +52,7 @@
 						Variable.createReadOnlyVariable("THREADS", context.getParallelism())
 					})
 				) {
-					final Collection<Callable<?>> jobs = new LinkedList<>();
+					final Collection<Callable<?>> jobs = new ArrayList<>(leftInstances.size() * rightInstances.size());
 					for (Object left : leftInstances) {
 						for (Object right : rightInstances) {
 							jobs.add(() -> matchRule.matchPair(context.getShadow(), ofTypeOnly, left, right));
diff --git a/plugins/org.eclipse.epsilon.eol.engine/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.epsilon.eol.engine/.settings/org.eclipse.jdt.core.prefs
index 3a21537..057be7e 100644
--- a/plugins/org.eclipse.epsilon.eol.engine/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.epsilon.eol.engine/.settings/org.eclipse.jdt.core.prefs
@@ -7,5 +7,8 @@
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=disabled
 org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/org.eclipse.epsilon.evl.engine/src/org/eclipse/epsilon/evl/EvlModule.java b/plugins/org.eclipse.epsilon.evl.engine/src/org/eclipse/epsilon/evl/EvlModule.java
index b87c09c..c7f8d44 100644
--- a/plugins/org.eclipse.epsilon.evl.engine/src/org/eclipse/epsilon/evl/EvlModule.java
+++ b/plugins/org.eclipse.epsilon.evl.engine/src/org/eclipse/epsilon/evl/EvlModule.java
@@ -249,8 +249,7 @@
 	@Override

 	protected Set<UnsatisfiedConstraint> processRules() throws EolRuntimeException {

 		checkConstraints();

-		IEvlContext context = getContext();

-		return context.uniqueUnsatisfiedConstraints();

+		return getContext().uniqueUnsatisfiedConstraints();

 	}

 	

 	/**

diff --git a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/dom/DomTests.java b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/dom/DomTests.java
index 13e5af8..7a0ca09 100644
--- a/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/dom/DomTests.java
+++ b/tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/dom/DomTests.java
@@ -25,7 +25,6 @@
 import org.eclipse.epsilon.eol.dom.OperationCallExpression;
 import org.eclipse.epsilon.eol.dom.Parameter;
 import org.eclipse.epsilon.eol.dom.PlusOperatorExpression;
-import org.eclipse.epsilon.eol.dom.Statement;
 import org.eclipse.epsilon.eol.dom.StatementBlock;
 import org.eclipse.epsilon.eol.dom.TypeExpression;
 import org.eclipse.epsilon.eol.dom.VariableDeclaration;
@@ -64,7 +63,7 @@
 				/*var x = Sequence{2..4}.select(x | x > 2);*/
 				new AssignmentStatement(new VariableDeclaration(new NameExpression("x"), null, false), 
 						new FirstOrderOperationCallExpression(
-								new CollectionLiteralExpression("Sequence", true, new IntegerLiteral(2), new IntegerLiteral(4)),
+								new CollectionLiteralExpression<>("Sequence", true, new IntegerLiteral(2), new IntegerLiteral(4)),
 								new NameExpression("select"), 
 								new Parameter(new NameExpression("x"), null), 
 								new GreaterThanOperatorExpression(new NameExpression("x"), new IntegerLiteral(2)))),
diff --git a/tests/org.eclipse.epsilon.test.dependencies/META-INF/MANIFEST.MF b/tests/org.eclipse.epsilon.test.dependencies/META-INF/MANIFEST.MF
index 5957c29..71fa002 100644
--- a/tests/org.eclipse.epsilon.test.dependencies/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.epsilon.test.dependencies/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@
 Bundle-SymbolicName: org.eclipse.epsilon.test.dependencies
 Bundle-Version: 2.5.0.qualifier
 Require-Bundle: javax.annotation;visibility:=reexport,
- org.junit;bundle-version="4.12.0";visibility:=reexport,
+ org.junit;bundle-version="4.13.2";visibility:=reexport,
  org.mockito;bundle-version="2.1.3";visibility:=reexport,
  net.bytebuddy.byte-buddy;bundle-version="1.7.9",
  net.bytebuddy.byte-buddy-agent;bundle-version="1.7.9",
diff --git a/tests/org.eclipse.epsilon.test/.classpath b/tests/org.eclipse.epsilon.test/.classpath
index eca7bdb..3e5654f 100644
--- a/tests/org.eclipse.epsilon.test/.classpath
+++ b/tests/org.eclipse.epsilon.test/.classpath
@@ -2,6 +2,10 @@
 <classpath>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src">
+		<attributes>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/tests/org.eclipse.epsilon.test/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.epsilon.test/.settings/org.eclipse.jdt.core.prefs
index 3a21537..057be7e 100644
--- a/tests/org.eclipse.epsilon.test/.settings/org.eclipse.jdt.core.prefs
+++ b/tests/org.eclipse.epsilon.test/.settings/org.eclipse.jdt.core.prefs
@@ -7,5 +7,8 @@
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=disabled
 org.eclipse.jdt.core.compiler.source=1.8
diff --git a/tests/org.eclipse.epsilon.test/EpsilonEclipseTestSuite.launch b/tests/org.eclipse.epsilon.test/EpsilonEclipseTestSuite.launch
index 361923c..3916192 100644
--- a/tests/org.eclipse.epsilon.test/EpsilonEclipseTestSuite.launch
+++ b/tests/org.eclipse.epsilon.test/EpsilonEclipseTestSuite.launch
@@ -20,5 +20,5 @@
     <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
     <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.epsilon.test.EpsilonEclipseTestSuite"/>
     <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.epsilon.test"/>
-    <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea -Xmx4g"/>
+    <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea -Xmx4g --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-exports=java.xml/com.sun.org.apache.xerces.internal.dom=ALL-UNNAMED"/>
 </launchConfiguration>
diff --git a/tests/org.eclipse.epsilon.test/EpsilonPluggedInTestSuite.launch b/tests/org.eclipse.epsilon.test/EpsilonPluggedInTestSuite.launch
index 23d0be5..3ecbb51 100644
--- a/tests/org.eclipse.epsilon.test/EpsilonPluggedInTestSuite.launch
+++ b/tests/org.eclipse.epsilon.test/EpsilonPluggedInTestSuite.launch
@@ -14,15 +14,18 @@
     <booleanAttribute key="includeOptional" value="true"/>
     <stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
     <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-        <listEntry value="/org.eclipse.epsilon.test"/>
+        <listEntry value="/org.eclipse.epsilon.test/src/org/eclipse/epsilon/test/EpsilonPluggedInTestSuite.java"/>
     </listAttribute>
     <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-        <listEntry value="4"/>
+        <listEntry value="1"/>
     </listAttribute>
     <stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
     <booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
     <stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
     <stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
+    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
+    <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
     <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.epsilon.test.EpsilonPluggedInTestSuite"/>
     <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
     <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.epsilon.test"/>
diff --git a/tests/org.eclipse.epsilon.test/pom.xml b/tests/org.eclipse.epsilon.test/pom.xml
index 08330e1..15b343b 100644
--- a/tests/org.eclipse.epsilon.test/pom.xml
+++ b/tests/org.eclipse.epsilon.test/pom.xml
@@ -21,7 +21,7 @@
 		<dependency>
 		  <groupId>junit</groupId>
 		  <artifactId>junit</artifactId>
-		  <version>4.13</version>
+		  <version>4.13.2</version>
 		  <scope>test</scope>
 		</dependency>
   	</dependencies>
@@ -103,7 +103,7 @@
 					<plugin>
 						<groupId>org.apache.maven.plugins</groupId>
 						<artifactId>maven-surefire-plugin</artifactId>
-						<version>3.0.0-M4</version>
+						<version>3.0.0-M6</version>
 						<configuration>
 							<includes>
 								<include>**/*EpsilonJenkinsTest*</include>
@@ -122,7 +122,7 @@
 			</build>
 			<properties>
 				<packaging.type>eclipse-plugin</packaging.type>
-				<argLine>-ea -Xmx3g</argLine>
+				<argLine>-ea -Xmx3g --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-exports=java.xml/com.sun.org.apache.xerces.internal.dom=ALL-UNNAMED</argLine>
 			</properties>
 		</profile>
 		<profile>
@@ -142,7 +142,7 @@
 					<plugin>
 						<groupId>org.apache.maven.plugins</groupId>
 						<artifactId>maven-surefire-plugin</artifactId>
-						<version>3.0.0-M4</version>
+						<version>3.0.0-M6</version>
 						<configuration>
 							<includes>
 								<include>**/*EpsilonSurefireTest*</include>