Bug 567234: Upgrade target platform to 2020-09

Change-Id: Iac3d25c8cd1be89d926856d1913dcc9993513f08
diff --git a/developers/org.eclipse.ease.helpgenerator/pom.xml b/developers/org.eclipse.ease.helpgenerator/pom.xml
index c11db3f..db2f07d 100644
--- a/developers/org.eclipse.ease.helpgenerator/pom.xml
+++ b/developers/org.eclipse.ease.helpgenerator/pom.xml
@@ -2,14 +2,38 @@
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.eclipse.ease</groupId>
 	<artifactId>org.eclipse.ease.helpgenerator</artifactId>
+	<version>0.8.0-SNAPSHOT</version>
 	<packaging>jar</packaging>
-	<parent>
-		<groupId>org.eclipse.ease</groupId>
-		<artifactId>org.eclipse.ease.releng</artifactId>
-		<version>0.8.0-SNAPSHOT</version>
-		<relativePath>../../releng/org.eclipse.ease.releng</relativePath>
-	</parent>
+
+	<prerequisites>
+		<!-- Maven 3.1.0 is the earliest version using Eclipse Aether, Maven 3.0.x 
+			uses the incompatible predecessor Sonatype Aether -->
+		<maven>3.1</maven>
+	</prerequisites>
+
+	<properties>
+		<!-- used plugin versions -->
+		<tycho.version>1.3.0</tycho.version>
+		<tycho.extras.version>${tycho.version}</tycho.extras.version>
+		<maven.compiler.version>3.6.1</maven.compiler.version>
+		<maven.javadoc.version>2.9.1</maven.javadoc.version>
+		<jacoco.version>0.7.9</jacoco.version>
+		<eclipse.jarsigner.version>1.1.3</eclipse.jarsigner.version>
+		<maven.buildhelper.version>1.9.1</maven.buildhelper.version>
+
+		<!-- build parameters -->
+		<compiler.compliance>1.8</compiler.compliance>
+		<jacoco.report.path>../../coverage-report/jacoco.exec</jacoco.report.path>
+
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+		<!-- help links to integrated help APIs -->
+		<platform.api>org.eclipse.platform.doc.isv/reference/api</platform.api>
+		<ease.api>org.eclipse.ease.help/help/api-docs/javadoc</ease.api>
+		<doclet.path>${user.dir}/ease.module.doclet.jar</doclet.path>
+	</properties>
 
 	<build>
 		<sourceDirectory>src</sourceDirectory>
@@ -17,6 +41,17 @@
 		<finalName>ease.module.doclet</finalName>
 
 		<plugins>
+			<!-- set compiler options -->
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>${maven.compiler.version}</version>
+				<configuration>
+					<source>${compiler.compliance}</source>
+					<target>${compiler.compliance}</target>
+				</configuration>
+			</plugin>
+
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/AbstractCompositeExpressionDefinition.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/AbstractCompositeExpressionDefinition.java
index c42c3e7..5e9ac29 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/AbstractCompositeExpressionDefinition.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/AbstractCompositeExpressionDefinition.java
@@ -13,7 +13,9 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
+import org.eclipse.core.expressions.Expression;
 import org.eclipse.ease.ui.scripts.expressions.ICompositeExpressionDefinition;
 import org.eclipse.ease.ui.scripts.expressions.IExpressionDefinition;
 
@@ -53,6 +55,10 @@
 		return (fChildren != null) ? fChildren : Collections.emptyList();
 	}
 
+	protected List<Expression> getChildrenAsExpressions() {
+		return getChildren().stream().map(e -> e.toCoreExpression()).collect(Collectors.toList());
+	}
+
 	@Override
 	public void removeChild(IExpressionDefinition element) {
 		getChildren().remove(element);
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/AndExpressionDefinition.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/AndExpressionDefinition.java
index 08389ad..183ffd0 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/AndExpressionDefinition.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/AndExpressionDefinition.java
@@ -11,19 +11,11 @@
 package org.eclipse.ease.ui.scripts.expressions.definitions;
 
 import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.internal.expressions.AndExpression;
-import org.eclipse.ease.ui.scripts.expressions.IExpressionDefinition;
 
-@SuppressWarnings("restriction")
 public class AndExpressionDefinition extends AbstractCompositeExpressionDefinition {
 
 	@Override
 	public Expression toCoreExpression() {
-		final AndExpression coreExpression = new AndExpression();
-
-		for (final IExpressionDefinition expression : getChildren())
-			coreExpression.add(expression.toCoreExpression());
-
-		return coreExpression;
+		return ExpressionFactory.getInstance().createAndExpression(getChildrenAsExpressions());
 	}
 }
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/CountExpressionDefinition.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/CountExpressionDefinition.java
index 6ca2c77..a7fc6d8 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/CountExpressionDefinition.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/CountExpressionDefinition.java
@@ -13,16 +13,14 @@
 import java.util.Collection;
 
 import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.internal.expressions.CountExpression;
 
-@SuppressWarnings("restriction")
 public class CountExpressionDefinition extends AbstractExpressionDefinition {
 
 	@Override
 	public Expression toCoreExpression() {
 		final Collection<Parameter> parameters = getParameters();
 		if (parameters.size() == 1)
-			return new CountExpression(getParameters().iterator().next().getValue());
+			return ExpressionFactory.getInstance().createCountExpression(getParameters().iterator().next().getValue());
 
 		return Expression.FALSE;
 	}
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/EqualsExpressionDefinition.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/EqualsExpressionDefinition.java
index 15ee025..13fb472 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/EqualsExpressionDefinition.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/EqualsExpressionDefinition.java
@@ -13,16 +13,14 @@
 import java.util.Collection;
 
 import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.internal.expressions.EqualsExpression;
 
-@SuppressWarnings("restriction")
 public class EqualsExpressionDefinition extends AbstractExpressionDefinition {
 
 	@Override
 	public Expression toCoreExpression() {
 		final Collection<Parameter> parameters = getParameters();
 		if (parameters.size() == 1)
-			return new EqualsExpression(getParameters().iterator().next().getValue());
+			return ExpressionFactory.getInstance().createEqualsExpression(getParameters().iterator().next().getValue());
 
 		return Expression.FALSE;
 	}
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/ExpressionFactory.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/ExpressionFactory.java
new file mode 100644
index 0000000..a003365
--- /dev/null
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/ExpressionFactory.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ *     Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.ease.ui.scripts.expressions.definitions;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+
+import org.eclipse.core.expressions.Expression;
+
+public class ExpressionFactory {
+
+	private static ExpressionFactory fInstance = new ExpressionFactory();
+
+	public static ExpressionFactory getInstance() {
+		return fInstance;
+	}
+
+	public static Class<?> loadClazz(String name) {
+		try {
+			return ExpressionFactory.class.getClassLoader().loadClass("org.eclipse.core.internal.expressions." + name);
+		} catch (final ClassNotFoundException e) {
+			try {
+				return ExpressionFactory.class.getClassLoader().loadClass("org.eclipse.core.expressions." + name);
+			} catch (final ClassNotFoundException e1) {
+				throw new RuntimeException("Could not find class " + name, e1);
+			}
+		}
+	}
+
+	public Expression createAndExpression(List<Expression> children) {
+		return createCompositeExpression("AndExpression", children);
+	}
+
+	public Expression createOrExpression(List<Expression> children) {
+		return createCompositeExpression("OrExpression", children);
+	}
+
+	private Expression createCompositeExpression(String type, List<Expression> children) {
+		final Class<?> clazz = loadClazz(type);
+		try {
+			final Object instance = clazz.newInstance();
+
+			if (instance instanceof Expression) {
+				addChildren(instance, children);
+				return (Expression) instance;
+			}
+		} catch (InstantiationException | IllegalAccessException e) {
+			throw new RuntimeException("Could not create instance of " + type, e);
+
+		}
+
+		throw new RuntimeException("Created instance is not an Expression");
+	}
+
+	public void addChildren(Object instance, List<Expression> children) {
+		try {
+			final Method addMethod = instance.getClass().getMethod("add", Expression.class);
+
+			for (final Expression child : children)
+				addMethod.invoke(instance, child);
+
+		} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+			throw new RuntimeException("Could not add child expressions", e);
+		}
+	}
+
+	public Expression createWithExpression(String parameter) {
+		final Class<?> clazz = loadClazz("WithExpression");
+
+		try {
+			final Object instance = clazz.getConstructor(String.class).newInstance(parameter);
+			if (instance instanceof Expression)
+				return (Expression) instance;
+
+			throw new RuntimeException("Created instance is not an Expression");
+
+		} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
+				| SecurityException e) {
+			throw new RuntimeException("Could not create instance of WithExpression");
+		}
+	}
+
+	public Expression createReferenceExpression(String parameter) {
+		final Class<?> clazz = loadClazz("ReferenceExpression");
+
+		try {
+			final Object instance = clazz.getConstructor(String.class).newInstance(parameter);
+			if (instance instanceof Expression)
+				return (Expression) instance;
+
+			throw new RuntimeException("Created instance is not an Expression");
+
+		} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
+				| SecurityException e) {
+			throw new RuntimeException("Could not create instance of ReferenceExpression");
+		}
+	}
+
+	public Expression createEqualsExpression(String parameter) {
+		final Class<?> clazz = loadClazz("EqualsExpression");
+
+		try {
+			final Object instance = clazz.getConstructor(Object.class).newInstance(parameter);
+			if (instance instanceof Expression)
+				return (Expression) instance;
+
+			throw new RuntimeException("Created instance is not an Expression");
+
+		} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
+				| SecurityException e) {
+			throw new RuntimeException("Could not create instance of EqualsExpression");
+		}
+	}
+
+	public Expression createCountExpression(String parameter) {
+		final Class<?> clazz = loadClazz("CountExpression");
+
+		try {
+			final Object instance = clazz.getConstructor(String.class).newInstance(parameter);
+			if (instance instanceof Expression)
+				return (Expression) instance;
+
+			throw new RuntimeException("Created instance is not an Expression");
+
+		} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
+				| SecurityException e) {
+			throw new RuntimeException("Could not create instance of CountExpression");
+		}
+	}
+
+	public Expression createTestExpression(String namespace, String property, Object[] args, Object expectedValue, boolean forcePluginActivation) {
+		final Class<?> clazz = loadClazz("TestExpression");
+
+		try {
+			final Object instance = clazz.getConstructor(String.class, String.class, Object[].class, Object.class, boolean.class).newInstance(namespace,
+					property, args, expectedValue, forcePluginActivation);
+			if (instance instanceof Expression)
+				return (Expression) instance;
+
+			throw new RuntimeException("Created instance is not an Expression");
+
+		} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
+				| SecurityException e) {
+			throw new RuntimeException("Could not create instance of TestExpression");
+		}
+	}
+}
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/OrExpressionDefinition.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/OrExpressionDefinition.java
index e752d64..6bdcace 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/OrExpressionDefinition.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/OrExpressionDefinition.java
@@ -11,19 +11,11 @@
 package org.eclipse.ease.ui.scripts.expressions.definitions;
 
 import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.internal.expressions.OrExpression;
-import org.eclipse.ease.ui.scripts.expressions.IExpressionDefinition;
 
-@SuppressWarnings("restriction")
 public class OrExpressionDefinition extends AbstractCompositeExpressionDefinition {
 
 	@Override
 	public Expression toCoreExpression() {
-		final OrExpression coreExpression = new OrExpression();
-
-		for (final IExpressionDefinition expression : getChildren())
-			coreExpression.add(expression.toCoreExpression());
-
-		return coreExpression;
+		return ExpressionFactory.getInstance().createOrExpression(getChildrenAsExpressions());
 	}
 }
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/ReferenceExpressionDefinition.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/ReferenceExpressionDefinition.java
index 0643d95..85aef92 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/ReferenceExpressionDefinition.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/ReferenceExpressionDefinition.java
@@ -13,16 +13,14 @@
 import java.util.Collection;
 
 import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.internal.expressions.ReferenceExpression;
 
-@SuppressWarnings("restriction")
 public class ReferenceExpressionDefinition extends AbstractExpressionDefinition {
 
 	@Override
 	public Expression toCoreExpression() {
 		final Collection<Parameter> parameters = getParameters();
 		if (parameters.size() == 1)
-			return new ReferenceExpression(getParameters().iterator().next().getValue());
+			return ExpressionFactory.getInstance().createWithExpression(getParameters().iterator().next().getValue());
 
 		// an empty reference should resolve to true
 		return Expression.TRUE;
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/TestExpressionDefinition.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/TestExpressionDefinition.java
index f73152b..6090d74 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/TestExpressionDefinition.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/TestExpressionDefinition.java
@@ -11,8 +11,8 @@
 package org.eclipse.ease.ui.scripts.expressions.definitions;
 
 import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.TestExpression;
 import org.eclipse.core.internal.expressions.Expressions;
-import org.eclipse.core.internal.expressions.TestExpression;
 import org.eclipse.core.runtime.CoreException;
 
 @SuppressWarnings("restriction")
@@ -41,6 +41,7 @@
 			return Expression.FALSE;
 		}
 
-		return new TestExpression(namespace, property, arguments, getParameter(VALUE), Boolean.parseBoolean(getParameter(FORCE_PLUGIN_ACTIVATION)));
+		return ExpressionFactory.getInstance().createTestExpression(namespace, property, arguments, getParameter(VALUE),
+				Boolean.parseBoolean(getParameter(FORCE_PLUGIN_ACTIVATION)));
 	}
 }
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/WithExpressionDefinition.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/WithExpressionDefinition.java
index 3a536ff..2574569 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/WithExpressionDefinition.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/expressions/definitions/WithExpressionDefinition.java
@@ -13,7 +13,6 @@
 import java.util.Collection;
 
 import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.internal.expressions.WithExpression;
 
 @SuppressWarnings("restriction")
 public class WithExpressionDefinition extends AbstractCompositeExpressionDefinition {
@@ -22,7 +21,7 @@
 	public Expression toCoreExpression() {
 		final Collection<Parameter> parameters = getParameters();
 		if (parameters.size() == 1)
-			return new WithExpression(getParameters().iterator().next().getValue());
+			return ExpressionFactory.getInstance().createWithExpression(getParameters().iterator().next().getValue());
 
 		// an empty 'with' statement is true
 		return Expression.TRUE;
diff --git a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/keywordhandler/ScriptContributionItem.java b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/keywordhandler/ScriptContributionItem.java
index fc7e99e..65c3a6b 100644
--- a/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/keywordhandler/ScriptContributionItem.java
+++ b/plugins/org.eclipse.ease.ui.scripts/src/org/eclipse/ease/ui/scripts/keywordhandler/ScriptContributionItem.java
@@ -10,7 +10,9 @@
  *******************************************************************************/
 package org.eclipse.ease.ui.scripts.keywordhandler;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -20,9 +22,9 @@
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.internal.expressions.AdaptExpression;
 import org.eclipse.core.internal.expressions.IterateExpression;
-import org.eclipse.core.internal.expressions.WithExpression;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.ease.tools.ResourceTools;
+import org.eclipse.ease.ui.scripts.expressions.definitions.ExpressionFactory;
 import org.eclipse.ease.ui.scripts.handler.RunScript;
 import org.eclipse.ease.ui.scripts.repository.IScript;
 import org.eclipse.ease.ui.tools.LocationImageDescriptor;
@@ -36,7 +38,7 @@
 	protected static final Pattern ENABLE_PATTERN = Pattern.compile("enableFor\\((.*)\\)");
 
 	private static ImageDescriptor getImageDescriptor(final IScript script) {
-		String location = script.getKeywords().get("image");
+		final String location = script.getKeywords().get("image");
 		if (location != null) {
 			String imageLocation = ResourceTools.toAbsoluteLocation(location, script.getLocation());
 			if (imageLocation == null)
@@ -49,7 +51,7 @@
 	}
 
 	private static Map<String, String> getParameters(final IScript script) {
-		HashMap<String, String> parameters = new HashMap<String, String>();
+		final HashMap<String, String> parameters = new HashMap<>();
 		parameters.put(RunScript.PARAMETER_NAME, script.getPath().toString());
 
 		return parameters;
@@ -68,18 +70,21 @@
 	public ScriptContributionItem(final IScript script, final String enablement) {
 		this(script);
 
-		Matcher matcher = ENABLE_PATTERN.matcher(enablement);
+		final Matcher matcher = ENABLE_PATTERN.matcher(enablement);
 		if (matcher.matches()) {
 			try {
-				WithExpression withExpression = new WithExpression("selection");
-				IterateExpression iteratorExpression = new IterateExpression(null, Boolean.FALSE.toString());
-				AdaptExpression adaptExpression = new AdaptExpression(matcher.group(1));
+				final Expression withExpression = ExpressionFactory.getInstance().createWithExpression("selection");
+				final IterateExpression iteratorExpression = new IterateExpression(null, Boolean.FALSE.toString());
+				final AdaptExpression adaptExpression = new AdaptExpression(matcher.group(1));
 
-				withExpression.add(iteratorExpression);
+				final List<Expression> children = new ArrayList<>();
+				children.add(iteratorExpression);
+				ExpressionFactory.getInstance().addChildren(withExpression, children);
+
 				iteratorExpression.add(adaptExpression);
 
 				fVisibleExpression = withExpression;
-			} catch (CoreException e) {
+			} catch (final CoreException e) {
 				// TODO provide log message to user
 
 				fVisibleExpression = Expression.FALSE;
@@ -90,7 +95,7 @@
 	@Override
 	public void update() {
 		setLabel(fScript.getKeywords().get("name"));
-		ParameterizedCommand command = getCommand();
+		final ParameterizedCommand command = getCommand();
 		command.getParameterMap().putAll(getParameters(fScript));
 
 		super.update();
@@ -111,12 +116,12 @@
 
 		if (fVisibleExpression != null) {
 			try {
-				final IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
-				EvaluationResult evaluate = fVisibleExpression.evaluate(handlerService.getCurrentState());
+				final IHandlerService handlerService = PlatformUI.getWorkbench().getService(IHandlerService.class);
+				final EvaluationResult evaluate = fVisibleExpression.evaluate(handlerService.getCurrentState());
 
 				return Boolean.parseBoolean(evaluate.toString());
 
-			} catch (CoreException e) {
+			} catch (final CoreException e) {
 				// TODO provide log message to user
 				return false;
 			}
diff --git a/releng/org.eclipse.ease.releng.target/org.eclipse.ease.releng.target.target b/releng/org.eclipse.ease.releng.target/org.eclipse.ease.releng.target.target
index d2890c7..4b289a9 100644
--- a/releng/org.eclipse.ease.releng.target/org.eclipse.ease.releng.target.target
+++ b/releng/org.eclipse.ease.releng.target/org.eclipse.ease.releng.target.target
@@ -1,24 +1,24 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="2020-06" sequenceNumber="1594193791">
+<target name="2020-09" sequenceNumber="1600702762">
   <locations>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
-      <unit id="org.eclipse.platform.feature.group" version="4.16.0.v20200604-0951"/>
-      <unit id="org.eclipse.rcp.feature.group" version="4.16.0.v20200604-0951"/>
-      <unit id="org.eclipse.jdt.feature.group" version="3.18.400.v20200604-0540"/>
-      <unit id="org.eclipse.equinox.p2.discovery.feature.feature.group" version="1.2.600.v20200521-1852"/>
-      <unit id="org.eclipse.wst.jsdt.feature.feature.group" version="2.2.0.v202005251709"/>
-      <unit id="org.eclipse.emf.feature.group" version="2.22.0.v20200519-1135"/>
-      <unit id="org.eclipse.pde.feature.group" version="3.14.400.v20200604-0540"/>
-      <unit id="org.eclipse.jdt" version="3.18.400.v20200604-0540"/>
-      <repository id="eclipse-2020-06" location="http://download.eclipse.org/releases/2020-06/"/>
+      <unit id="org.eclipse.platform.feature.group" version="4.17.0.v20200902-1800"/>
+      <unit id="org.eclipse.rcp.feature.group" version="4.17.0.v20200902-1800"/>
+      <unit id="org.eclipse.jdt.feature.group" version="3.18.500.v20200902-1800"/>
+      <unit id="org.eclipse.equinox.p2.discovery.feature.feature.group" version="1.2.700.v20200705-1016"/>
+      <unit id="org.eclipse.wst.jsdt.feature.feature.group" version="2.3.100.v202008161908"/>
+      <unit id="org.eclipse.emf.feature.group" version="2.23.0.v20200822-0801"/>
+      <unit id="org.eclipse.pde.feature.group" version="3.14.500.v20200902-1800"/>
+      <unit id="org.eclipse.jdt" version="3.18.500.v20200902-1800"/>
+      <repository id="eclipse-2020-09" location="http://download.eclipse.org/releases/2020-09/"/>
     </location>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.mockito" version="1.9.5.v201605172210"/>
       <unit id="org.hamcrest" version="1.1.0.v20090501071000"/>
       <unit id="org.mozilla.javascript" version="1.7.10.v20190430-1943"/>
-      <repository id="eclipse-orbit-2020-06" location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200529191137/repository/"/>
+      <repository id="eclipse-orbit-2020-09" location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200831200620/repository/"/>
     </location>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.ease.engine.jython.feature.feature.group" version="0.0.0"/>
diff --git a/releng/org.eclipse.ease.releng.target/org.eclipse.ease.releng.target.tpd b/releng/org.eclipse.ease.releng.target/org.eclipse.ease.releng.target.tpd
index 4a40af2..c60b1e6 100644
--- a/releng/org.eclipse.ease.releng.target/org.eclipse.ease.releng.target.tpd
+++ b/releng/org.eclipse.ease.releng.target/org.eclipse.ease.releng.target.tpd
@@ -1,6 +1,6 @@
-target "2020-06" with source requirements
+target "2020-09" with source requirements
 
-location "http://download.eclipse.org/releases/2020-06/" eclipse-2020-06 {
+location "http://download.eclipse.org/releases/2020-09/" eclipse-2020-09 {
 	org.eclipse.platform.feature.group
 	org.eclipse.rcp.feature.group
 	org.eclipse.jdt.feature.group
@@ -17,7 +17,7 @@
 	org.eclipse.jdt
 }
 
-location "https://download.eclipse.org/tools/orbit/downloads/drops/R20200529191137/repository/" eclipse-orbit-2020-06 {
+location "https://download.eclipse.org/tools/orbit/downloads/drops/R20200831200620/repository/" eclipse-orbit-2020-09 {
 	// needed for unit tests
 	org.mockito [1.9.5,2.0.0)
 	org.hamcrest [1.1.0,2.0.0)
diff --git a/releng/org.eclipse.ease.releng.target/previous targets/2020-06.target b/releng/org.eclipse.ease.releng.target/previous targets/2020-06.target
new file mode 100644
index 0000000..d2890c7
--- /dev/null
+++ b/releng/org.eclipse.ease.releng.target/previous targets/2020-06.target
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="2020-06" sequenceNumber="1594193791">
+  <locations>
+    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.platform.feature.group" version="4.16.0.v20200604-0951"/>
+      <unit id="org.eclipse.rcp.feature.group" version="4.16.0.v20200604-0951"/>
+      <unit id="org.eclipse.jdt.feature.group" version="3.18.400.v20200604-0540"/>
+      <unit id="org.eclipse.equinox.p2.discovery.feature.feature.group" version="1.2.600.v20200521-1852"/>
+      <unit id="org.eclipse.wst.jsdt.feature.feature.group" version="2.2.0.v202005251709"/>
+      <unit id="org.eclipse.emf.feature.group" version="2.22.0.v20200519-1135"/>
+      <unit id="org.eclipse.pde.feature.group" version="3.14.400.v20200604-0540"/>
+      <unit id="org.eclipse.jdt" version="3.18.400.v20200604-0540"/>
+      <repository id="eclipse-2020-06" location="http://download.eclipse.org/releases/2020-06/"/>
+    </location>
+    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.mockito" version="1.9.5.v201605172210"/>
+      <unit id="org.hamcrest" version="1.1.0.v20090501071000"/>
+      <unit id="org.mozilla.javascript" version="1.7.10.v20190430-1943"/>
+      <repository id="eclipse-orbit-2020-06" location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200529191137/repository/"/>
+    </location>
+    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.eclipse.ease.engine.jython.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ease.engine.groovy.feature.feature.group" version="0.0.0"/>
+      <unit id="org.eclipse.ease.engine.jruby.feature.feature.group" version="0.0.0"/>
+      <repository id="ease-engines" location="https://bintray.com/artifact/download/pontesegger/ease-engines/"/>
+    </location>
+    <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+      <unit id="org.py4j.feature.feature.group" version="0.10.8.1-bnd-BaEoUg"/>
+      <repository id="py4j-eclipse" location="https://dl.bintray.com/py4j/py4j-eclipse/0.10.8.1/"/>
+    </location>
+  </locations>
+</target>
diff --git a/releng/org.eclipse.ease.releng.target/previous targets/2020-06.tpd b/releng/org.eclipse.ease.releng.target/previous targets/2020-06.tpd
new file mode 100644
index 0000000..4a40af2
--- /dev/null
+++ b/releng/org.eclipse.ease.releng.target/previous targets/2020-06.tpd
@@ -0,0 +1,38 @@
+target "2020-06" with source requirements
+
+location "http://download.eclipse.org/releases/2020-06/" eclipse-2020-06 {
+	org.eclipse.platform.feature.group
+	org.eclipse.rcp.feature.group
+	org.eclipse.jdt.feature.group
+	org.eclipse.equinox.p2.discovery.feature.feature.group
+
+	// javascript support (rhino & editors)
+	org.eclipse.wst.jsdt.feature.feature.group
+
+	// for modeling stuff
+	org.eclipse.emf.feature.group
+
+	// java module
+	org.eclipse.pde.feature.group
+	org.eclipse.jdt
+}
+
+location "https://download.eclipse.org/tools/orbit/downloads/drops/R20200529191137/repository/" eclipse-orbit-2020-06 {
+	// needed for unit tests
+	org.mockito [1.9.5,2.0.0)
+	org.hamcrest [1.1.0,2.0.0)
+	org.mozilla.javascript [1.7.10,1.8.0)
+}
+
+location "https://bintray.com/artifact/download/pontesegger/ease-engines/" ease-engines {
+	// jython interpreter
+	org.eclipse.ease.engine.jython.feature.feature.group lazy
+	// groovy interpreter
+	org.eclipse.ease.engine.groovy.feature.feature.group lazy
+	// ruby interpreter
+	org.eclipse.ease.engine.jruby.feature.feature.group lazy
+}
+
+location "https://dl.bintray.com/py4j/py4j-eclipse/0.10.8.1/" py4j-eclipse {
+	org.py4j.feature.feature.group [0.10.8,0.10.9)
+}
diff --git a/releng/org.eclipse.ease.releng/oomph/ease.setup b/releng/org.eclipse.ease.releng/oomph/ease.setup
index eee187c..56b6b6f 100644
--- a/releng/org.eclipse.ease.releng/oomph/ease.setup
+++ b/releng/org.eclipse.ease.releng/oomph/ease.setup
@@ -261,6 +261,17 @@
           <repository
               url="https://dl.bintray.com/py4j/py4j-eclipse/0.10.8.1"/>
         </repositoryList>
+        <repositoryList
+            name="2020-09">
+          <repository
+              url="https://download.eclipse.org/tools/orbit/downloads/drops/R20200831200620/repository"/>
+          <repository
+              url="https://dl.bintray.com/pontesegger/ease-engines/"/>
+          <repository
+              url="http://download.eclipse.org/releases/2020-09"/>
+          <repository
+              url="https://dl.bintray.com/py4j/py4j-eclipse/0.10.8.1"/>
+        </repositoryList>
       </targlet>
     </setupTask>
     <setupTask
@@ -579,6 +590,19 @@
           <repository
               url="http://download.eclipse.org/ease/integration/nightly"/>
         </repositoryList>
+        <repositoryList
+            name="2020-09">
+          <repository
+              url="https://download.eclipse.org/tools/orbit/downloads/drops/R20200831200620/repository"/>
+          <repository
+              url="http://download.eclipse.org/releases/2020-09"/>
+          <repository
+              url="http://download.eclipse.org/nebula/releases/1.0.0"/>
+          <repository
+              url="http://download.eclipse.org/technology/subversive/4.0/update-site/"/>
+          <repository
+              url="http://download.eclipse.org/ease/integration/nightly"/>
+        </repositoryList>
       </targlet>
     </setupTask>
     <setupTask
@@ -651,7 +675,7 @@
     <setupTask
         xsi:type="setup:VariableTask"
         name="eclipse.target.platform"
-        defaultValue="2020-06"
+        defaultValue="2020-09"
         storageURI="scope://Workspace">
       <description>Default target platform for EASE development.</description>
     </setupTask>
diff --git a/releng/org.eclipse.ease.releng/pom.xml b/releng/org.eclipse.ease.releng/pom.xml
index c41c77f..c1a28bb 100644
--- a/releng/org.eclipse.ease.releng/pom.xml
+++ b/releng/org.eclipse.ease.releng/pom.xml
@@ -236,6 +236,7 @@
 		 -->
 		<module>../../tests/org.eclipse.ease.lang.scriptarchive.test</module>
 		<module>../../tests/org.eclipse.ease.lang.unittest.test</module>
+		<module>../../tests/org.eclipse.ease.ui.scripts.test</module>
 		<module>../../tests/org.eclipse.ease.ui.test</module>
 	</modules>
 
diff --git a/tests/org.eclipse.ease.lang.unittest.test/META-INF/MANIFEST.MF b/tests/org.eclipse.ease.lang.unittest.test/META-INF/MANIFEST.MF
index b1b8437..528ee8d 100644
--- a/tests/org.eclipse.ease.lang.unittest.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ease.lang.unittest.test/META-INF/MANIFEST.MF
@@ -6,5 +6,4 @@
 Automatic-Module-Name: org.eclipse.ease.lang.unittest.test
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.junit,
- org.eclipse.ui.ide,
  org.eclipse.ease.lang.javascript.rhino
diff --git a/tests/org.eclipse.ease.lang.unittest.test/src/org/eclipse/ease/lang/unittest/TestBase.java b/tests/org.eclipse.ease.lang.unittest.test/src/org/eclipse/ease/lang/unittest/TestBase.java
index 794c749..0c85741 100644
--- a/tests/org.eclipse.ease.lang.unittest.test/src/org/eclipse/ease/lang/unittest/TestBase.java
+++ b/tests/org.eclipse.ease.lang.unittest.test/src/org/eclipse/ease/lang/unittest/TestBase.java
@@ -33,9 +33,6 @@
 import org.eclipse.ease.lang.unittest.runtime.ITestSuite;
 import org.eclipse.ease.service.IScriptService;
 import org.eclipse.ease.service.ScriptService;
-import org.eclipse.ui.dialogs.IOverwriteQuery;
-import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
-import org.eclipse.ui.wizards.datatransfer.ImportOperation;
 import org.junit.BeforeClass;
 import org.osgi.framework.Bundle;
 
@@ -49,19 +46,15 @@
 		final URL fileURL = bundle.getEntry("resources/UnitTest");
 		final File sourceFolder = new File(FileLocator.resolve(fileURL).toURI());
 
-		// copy files
+		// create project that links to /this/resources/UnitTest
 		final Path projectPath = new Path(sourceFolder.getAbsoluteFile() + File.separator + ".project");
 		final IProjectDescription projectDescription = ResourcesPlugin.getWorkspace().loadProjectDescription(projectPath);
+		projectDescription.setLocation(new Path(sourceFolder.getAbsolutePath()));
 
 		TEST_PROJECT = ResourcesPlugin.getWorkspace().getRoot().getProject(projectDescription.getName());
 		if (!TEST_PROJECT.exists()) {
-			TEST_PROJECT.create(new NullProgressMonitor());
+			TEST_PROJECT.create(projectDescription, new NullProgressMonitor());
 			TEST_PROJECT.open(new NullProgressMonitor());
-
-			final ImportOperation importOperation = new ImportOperation(TEST_PROJECT.getFullPath(), sourceFolder, FileSystemStructureProvider.INSTANCE,
-					file -> IOverwriteQuery.ALL);
-			importOperation.setCreateContainerStructure(false);
-			importOperation.run(new NullProgressMonitor());
 		}
 	}
 
diff --git a/tests/org.eclipse.ease.ui.scripts.test/.classpath b/tests/org.eclipse.ease.ui.scripts.test/.classpath
new file mode 100644
index 0000000..3e5654f
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+		<attributes>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.ease.ui.scripts.test/.project b/tests/org.eclipse.ease.ui.scripts.test/.project
new file mode 100644
index 0000000..77d253d
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.ease.ui.scripts.test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..64e8545
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,325 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=f
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+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.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=160
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=160
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=true
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.jdt.ui.prefs b/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..4aea3c1
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,130 @@
+cleanup.add_default_serial_version_id=false
+cleanup.add_generated_serial_version_id=true
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=true
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=true
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=false
+cleanup.make_parameters_final=true
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=true
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=false
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=false
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_EASE Development
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Eclipse EASE Development
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*******************************************************************************\n * Copyright (c) ${year} ${user} and others.\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v2.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n *     ${user} - initial API and implementation\n *******************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} handle this exception (but for now, at least know it happened)\nthrow new RuntimeException(${exception_var});\n</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=true
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=true
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=false
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/tests/org.eclipse.ease.ui.scripts.test/META-INF/MANIFEST.MF b/tests/org.eclipse.ease.ui.scripts.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..77ee1f7
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: EASE Scripts Unit Tests
+Bundle-SymbolicName: org.eclipse.ease.ui.scripts.test
+Bundle-Version: 0.8.0.qualifier
+Bundle-Vendor: Eclipse.org
+Fragment-Host: org.eclipse.ease.ui.scripts
+Automatic-Module-Name: org.eclipse.ease.ui.scripts.test
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.junit,
+ org.junit.jupiter.api
diff --git a/tests/org.eclipse.ease.ui.scripts.test/build.properties b/tests/org.eclipse.ease.ui.scripts.test/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/tests/org.eclipse.ease.ui.scripts.test/pom.xml b/tests/org.eclipse.ease.ui.scripts.test/pom.xml
new file mode 100644
index 0000000..8abed4c
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/pom.xml
@@ -0,0 +1,13 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<artifactId>org.eclipse.ease.ui.scripts.test</artifactId>
+	<packaging>eclipse-test-plugin</packaging>
+	
+	<parent>
+		<groupId>org.eclipse.ease</groupId>
+		<artifactId>org.eclipse.ease.releng</artifactId>
+		<version>0.8.0-SNAPSHOT</version>
+		<relativePath>../../releng/org.eclipse.ease.releng</relativePath>
+	</parent>
+</project>
\ No newline at end of file
diff --git a/tests/org.eclipse.ease.ui.scripts.test/src/org/eclipse/ease/ui/scripts/expressions/definitions/ExpressionFactoryTest.java b/tests/org.eclipse.ease.ui.scripts.test/src/org/eclipse/ease/ui/scripts/expressions/definitions/ExpressionFactoryTest.java
new file mode 100644
index 0000000..e7755db
--- /dev/null
+++ b/tests/org.eclipse.ease.ui.scripts.test/src/org/eclipse/ease/ui/scripts/expressions/definitions/ExpressionFactoryTest.java
@@ -0,0 +1,122 @@
+package org.eclipse.ease.ui.scripts.expressions.definitions;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.expressions.Expression;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class ExpressionFactoryTest {
+
+	private List<Expression> fChildExpressions;
+
+	@BeforeEach
+	public void setup() {
+		final Expression expression = ExpressionFactory.getInstance().createWithExpression("dummy");
+
+		fChildExpressions = new ArrayList<>();
+		fChildExpressions.add(expression);
+	}
+
+	@Test
+	@DisplayName("Load class AndExpression")
+	public void loadClassAndExpression() {
+		final Class<?> clazz = ExpressionFactory.loadClazz("AndExpression");
+		assertNotNull(clazz);
+	}
+
+	@Test
+	@DisplayName("Load class OrExpression")
+	public void loadClassOrExpression() {
+		final Class<?> clazz = ExpressionFactory.loadClazz("OrExpression");
+		assertNotNull(clazz);
+	}
+
+	@Test
+	@DisplayName("Load class WithExpression")
+	public void loadClassWithExpression() {
+		final Class<?> clazz = ExpressionFactory.loadClazz("WithExpression");
+		assertNotNull(clazz);
+	}
+
+	@Test
+	@DisplayName("Load class ReferenceExpression")
+	public void loadClassReferenceExpression() {
+		final Class<?> clazz = ExpressionFactory.loadClazz("ReferenceExpression");
+		assertNotNull(clazz);
+	}
+
+	@Test
+	@DisplayName("Load class EqualsExpression")
+	public void loadClassEqualsExpression() {
+		final Class<?> clazz = ExpressionFactory.loadClazz("EqualsExpression");
+		assertNotNull(clazz);
+	}
+
+	@Test
+	@DisplayName("Load class CountExpression")
+	public void loadClassCountExpression() {
+		final Class<?> clazz = ExpressionFactory.loadClazz("CountExpression");
+		assertNotNull(clazz);
+	}
+
+	@Test
+	@DisplayName("Load class TestExpression")
+	public void loadClassTestExpression() {
+		final Class<?> clazz = ExpressionFactory.loadClazz("TestExpression");
+		assertNotNull(clazz);
+	}
+
+	@Test
+	@DisplayName("Create AndExpression")
+	public void createAndExpression() {
+		final Expression expression = ExpressionFactory.getInstance().createAndExpression(fChildExpressions);
+		assertNotNull(expression);
+	}
+
+	@Test
+	@DisplayName("Create OrExpression")
+	public void createOrExpression() {
+		final Expression expression = ExpressionFactory.getInstance().createOrExpression(fChildExpressions);
+		assertNotNull(expression);
+	}
+
+	@Test
+	@DisplayName("Create WithExpression")
+	public void createWithExpression() {
+		final Expression expression = ExpressionFactory.getInstance().createWithExpression("something");
+		assertNotNull(expression);
+	}
+
+	@Test
+	@DisplayName("Create ReferenceExpression")
+	public void createReferenceExpression() {
+		final Expression expression = ExpressionFactory.getInstance().createReferenceExpression("something");
+		assertNotNull(expression);
+	}
+
+	@Test
+	@DisplayName("Create EqualsExpression")
+	public void createEqualsExpression() {
+		final Expression expression = ExpressionFactory.getInstance().createEqualsExpression("something");
+		assertNotNull(expression);
+	}
+
+	@Test
+	@DisplayName("Create CountExpression")
+	public void createCountExpression() {
+		final Expression expression = ExpressionFactory.getInstance().createCountExpression("something");
+		assertNotNull(expression);
+	}
+
+	@Test
+	@DisplayName("Create TestExpression")
+	public void createTestExpression() {
+		final Expression expression = ExpressionFactory.getInstance().createTestExpression("namespace", "property", new Object[0], new Object(), false);
+		assertNotNull(expression);
+	}
+}