diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ElementHandler.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ElementHandler.java
index b033249..aab0665 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ElementHandler.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ElementHandler.java
@@ -15,7 +15,6 @@
 
 import org.w3c.dom.Element;
 
-import org.eclipse.core.internal.expressions.CompositeExpression;
 import org.eclipse.core.internal.expressions.ExpressionMessages;
 import org.eclipse.core.internal.expressions.StandardElementHandler;
 
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionConverter.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionConverter.java
index 9d299aa..f490b47 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionConverter.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/expressions/ExpressionConverter.java
@@ -16,7 +16,6 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
-import org.eclipse.core.internal.expressions.CompositeExpression;
 import org.eclipse.core.internal.expressions.ExpressionMessages;
 import org.eclipse.core.internal.expressions.Messages;
 
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
index 56e1b3d..e79dea3 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AdaptExpression.java
@@ -18,6 +18,7 @@
 
 import org.w3c.dom.Element;
 
+import org.eclipse.core.expressions.CompositeExpression;
 import org.eclipse.core.expressions.EvaluationResult;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.ExpressionInfo;
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AndExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AndExpression.java
deleted file mode 100644
index 3d775cf..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/AndExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-
-import org.eclipse.core.runtime.CoreException;
-
-public class AndExpression extends CompositeExpression {
-
-	@Override
-	public boolean equals(final Object object) {
-		if (!(object instanceof AndExpression))
-			return false;
-
-		final AndExpression that= (AndExpression)object;
-		return equals(this.fExpressions, that.fExpressions);
-	}
-
-	@Override
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		return evaluateAnd(context);
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CompositeExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CompositeExpression.java
deleted file mode 100644
index a599e6e..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CompositeExpression.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-
-import org.eclipse.core.runtime.CoreException;
-
-public abstract class CompositeExpression extends Expression {
-
-	private static final Expression[] EMPTY_ARRAY = new Expression[0];
-
-	/**
-	 * The seed for the hash code for all composite expressions.
-	 */
-	private static final int HASH_INITIAL= CompositeExpression.class.getName().hashCode();
-
-	protected List<Expression> fExpressions;
-
-	public void add(Expression expression) {
-		if (fExpressions == null)
-			fExpressions= new ArrayList<>(2);
-		fExpressions.add(expression);
-	}
-
-	public Expression[] getChildren() {
-		if (fExpressions == null)
-			return EMPTY_ARRAY;
-		return fExpressions.toArray(new Expression[fExpressions.size()]);
-	}
-
-	protected EvaluationResult evaluateAnd(IEvaluationContext scope) throws CoreException {
-		if (fExpressions == null)
-			return EvaluationResult.TRUE;
-		EvaluationResult result= EvaluationResult.TRUE;
-		for (Expression expression : fExpressions) {
-			result= result.and(expression.evaluate(scope));
-			// keep iterating even if we have a not loaded found. It can be
-			// that we find a false which will result in a better result.
-			if (result == EvaluationResult.FALSE)
-				return result;
-		}
-		return result;
-	}
-
-	protected EvaluationResult evaluateOr(IEvaluationContext scope) throws CoreException {
-		if (fExpressions == null)
-			return EvaluationResult.TRUE;
-		EvaluationResult result= EvaluationResult.FALSE;
-		for (Expression expression : fExpressions) {
-			result= result.or(expression.evaluate(scope));
-			if (result == EvaluationResult.TRUE)
-				return result;
-		}
-		return result;
-	}
-
-	@Override
-	public void collectExpressionInfo(ExpressionInfo info) {
-		if (fExpressions == null)
-			return;
-		for (Expression expression : fExpressions) {
-			expression.collectExpressionInfo(info);
-		}
-	}
-
-	@Override
-	protected int computeHashCode() {
-		return HASH_INITIAL * HASH_FACTOR + hashCode(fExpressions);
-	}
-
-	@Override
-	public String toString() {
-		StringBuilder builder = new StringBuilder(getClass().getSimpleName());
-		Expression[] children = getChildren();
-		if (children.length > 0) {
-			builder.append(" [children="); //$NON-NLS-1$
-			builder.append(Arrays.toString(children));
-			builder.append("]"); //$NON-NLS-1$
-		}
-		return builder.toString();
-	}
-
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CountExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CountExpression.java
deleted file mode 100644
index f550cbd..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/CountExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008, 2009 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation.
- *     Ian Phillips - additional expressions support ( "-N)", "(N-" ).
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.w3c.dom.Element;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-
-@Deprecated
-public class CountExpression extends org.eclipse.core.expressions.CountExpression {
-
-	public CountExpression(IConfigurationElement configElement) {
-		super(configElement);
-	}
-
-	public CountExpression(Element element) {
-		super(element);
-	}
-
-	public CountExpression(String size) {
-		super(size);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EnablementExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EnablementExpression.java
index f3ff55f..a267d54 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EnablementExpression.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EnablementExpression.java
@@ -15,6 +15,7 @@
 
 import org.w3c.dom.Element;
 
+import org.eclipse.core.expressions.CompositeExpression;
 import org.eclipse.core.expressions.EvaluationResult;
 import org.eclipse.core.expressions.IEvaluationContext;
 
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java
deleted file mode 100644
index c193894..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/EqualsExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.w3c.dom.Element;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-@Deprecated
-public class EqualsExpression extends org.eclipse.core.expressions.EqualsExpression {
-
-	public EqualsExpression(Object expectedValue) {
-		super(expectedValue);
-	}
-
-	public EqualsExpression(IConfigurationElement element) throws CoreException {
-		super(element);
-	}
-
-	public EqualsExpression(Element element) throws CoreException {
-		super(element);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/IterateExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/IterateExpression.java
index 55aae78..03c1ea0 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/IterateExpression.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/IterateExpression.java
@@ -20,6 +20,7 @@
 
 import org.w3c.dom.Element;
 
+import org.eclipse.core.expressions.CompositeExpression;
 import org.eclipse.core.expressions.EvaluationResult;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.ExpressionInfo;
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/OrExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/OrExpression.java
deleted file mode 100644
index 64f85c6..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/OrExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.IEvaluationContext;
-
-import org.eclipse.core.runtime.CoreException;
-
-public class OrExpression extends CompositeExpression {
-
-	@Override
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		return evaluateOr(context);
-	}
-
-	@Override
-	public boolean equals(final Object object) {
-		if (!(object instanceof OrExpression))
-			return false;
-
-		final OrExpression that= (OrExpression)object;
-		return equals(this.fExpressions, that.fExpressions);
-	}
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ReferenceExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ReferenceExpression.java
deleted file mode 100644
index c573cc6..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ReferenceExpression.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.w3c.dom.Element;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-@Deprecated
-public class ReferenceExpression extends org.eclipse.core.expressions.ReferenceExpression {
-
-	public ReferenceExpression(String definitionId) {
-		super(definitionId);
-	}
-
-	public ReferenceExpression(IConfigurationElement element) throws CoreException {
-		super(element);
-	}
-
-	public ReferenceExpression(Element element) throws CoreException {
-		super(element);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ResolveExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ResolveExpression.java
index 515a3fb..2539cdb 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ResolveExpression.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/ResolveExpression.java
@@ -17,6 +17,7 @@
 
 import org.w3c.dom.Element;
 
+import org.eclipse.core.expressions.CompositeExpression;
 import org.eclipse.core.expressions.EvaluationContext;
 import org.eclipse.core.expressions.EvaluationResult;
 import org.eclipse.core.expressions.Expression;
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/StandardElementHandler.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/StandardElementHandler.java
index 3c2e062..a853619 100644
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/StandardElementHandler.java
+++ b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/StandardElementHandler.java
@@ -16,14 +16,17 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
+import org.eclipse.core.expressions.AndExpression;
 import org.eclipse.core.expressions.CountExpression;
 import org.eclipse.core.expressions.ElementHandler;
 import org.eclipse.core.expressions.EqualsExpression;
 import org.eclipse.core.expressions.Expression;
 import org.eclipse.core.expressions.ExpressionConverter;
 import org.eclipse.core.expressions.ExpressionTagNames;
+import org.eclipse.core.expressions.OrExpression;
 import org.eclipse.core.expressions.ReferenceExpression;
 import org.eclipse.core.expressions.TestExpression;
+import org.eclipse.core.expressions.WithExpression;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TestExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TestExpression.java
deleted file mode 100644
index 1d05cb4..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/TestExpression.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import org.w3c.dom.Element;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-@Deprecated
-public class TestExpression extends org.eclipse.core.expressions.TestExpression {
-
-	public TestExpression(IConfigurationElement element) throws CoreException {
-		super(element);
-	}
-
-	public TestExpression(Element element) throws CoreException {
-		super(element);
-	}
-
-	public TestExpression(String namespace, String property, Object[] args, Object expectedValue) {
-		super(namespace, property, args, expectedValue);
-	}
-
-	public TestExpression(String namespace, String property, Object[] args, Object expectedValue, boolean forcePluginActivation) {
-		super(namespace, property, args, expectedValue, forcePluginActivation);
-	}
-
-}
diff --git a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/WithExpression.java b/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/WithExpression.java
deleted file mode 100644
index 1da17c1..0000000
--- a/bundles/org.eclipse.core.expressions/src/org/eclipse/core/internal/expressions/WithExpression.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.expressions;
-
-import java.util.Arrays;
-
-import org.w3c.dom.Element;
-
-import org.eclipse.core.expressions.EvaluationContext;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-
-public class WithExpression extends CompositeExpression {
-
-	private String fVariable;
-	private static final String ATT_VARIABLE= "variable";  //$NON-NLS-1$
-
-	/**
-	 * The seed for the hash code for all with expressions.
-	 */
-	private static final int HASH_INITIAL= WithExpression.class.getName().hashCode();
-
-	public WithExpression(IConfigurationElement configElement) throws CoreException {
-		fVariable= configElement.getAttribute(ATT_VARIABLE);
-		Expressions.checkAttribute(ATT_VARIABLE, fVariable);
-	}
-
-	public WithExpression(Element element) throws CoreException {
-		fVariable= element.getAttribute(ATT_VARIABLE);
-		Expressions.checkAttribute(ATT_VARIABLE, fVariable.isEmpty() ? null : fVariable);
-	}
-
-	public WithExpression(String variable) {
-		Assert.isNotNull(variable);
-		fVariable= variable;
-	}
-
-	@Override
-	public boolean equals(final Object object) {
-		if (!(object instanceof WithExpression))
-			return false;
-
-		final WithExpression that= (WithExpression)object;
-		return this.fVariable.equals(that.fVariable) && equals(this.fExpressions, that.fExpressions);
-	}
-
-	@Override
-	protected int computeHashCode() {
-		return HASH_INITIAL * HASH_FACTOR + hashCode(fExpressions)
-			* HASH_FACTOR + fVariable.hashCode();
-	}
-
-	@Override
-	public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
-		Object variable= context.getVariable(fVariable);
-		if (variable == null) {
-			throw new CoreException(new ExpressionStatus(
-				ExpressionStatus.VARIABLE_NOT_DEFINED,
-				Messages.format(ExpressionMessages.WithExpression_variable_not_defined, fVariable)));
-		}
-		if (variable == IEvaluationContext.UNDEFINED_VARIABLE) {
-			return EvaluationResult.FALSE;
-		}
-		return evaluateAnd(new EvaluationContext(context, variable));
-	}
-
-	@Override
-	public void collectExpressionInfo(ExpressionInfo info) {
-		ExpressionInfo other= new ExpressionInfo();
-		super.collectExpressionInfo(other);
-		if (other.hasDefaultVariableAccess()) {
-			info.addVariableNameAccess(fVariable);
-		}
-		info.mergeExceptDefaultVariable(other);
-	}
-
-	@Override
-	public String toString() {
-		StringBuilder builder = new StringBuilder(getClass().getSimpleName());
-		builder.append(" [variable=").append(fVariable); //$NON-NLS-1$
-		Expression[] children = getChildren();
-		if (children.length > 0) {
-			builder.append(", children="); //$NON-NLS-1$
-			builder.append(Arrays.toString(children));
-		}
-		builder.append("]"); //$NON-NLS-1$
-		return builder.toString();
-	}
-}
\ No newline at end of file
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionInfoTests.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionInfoTests.java
index 9aba1de..37c9c71 100644
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionInfoTests.java
+++ b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionInfoTests.java
@@ -17,18 +17,18 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.eclipse.core.expressions.AndExpression;
 import org.eclipse.core.expressions.CountExpression;
 import org.eclipse.core.expressions.EqualsExpression;
 import org.eclipse.core.expressions.ExpressionInfo;
 import org.eclipse.core.expressions.TestExpression;
+import org.eclipse.core.expressions.WithExpression;
 import org.eclipse.core.internal.expressions.AdaptExpression;
-import org.eclipse.core.internal.expressions.AndExpression;
 import org.eclipse.core.internal.expressions.InstanceofExpression;
 import org.eclipse.core.internal.expressions.IterateExpression;
 import org.eclipse.core.internal.expressions.NotExpression;
 import org.eclipse.core.internal.expressions.ResolveExpression;
 import org.eclipse.core.internal.expressions.SystemTestExpression;
-import org.eclipse.core.internal.expressions.WithExpression;
 
 import junit.framework.Test;
 import junit.framework.TestCase;
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
index ab3e0ca..7d9cb1e 100644
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
+++ b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/ExpressionTests.java
@@ -40,6 +40,7 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 
+import org.eclipse.core.expressions.AndExpression;
 import org.eclipse.core.expressions.CountExpression;
 import org.eclipse.core.expressions.EqualsExpression;
 import org.eclipse.core.expressions.EvaluationContext;
@@ -48,19 +49,18 @@
 import org.eclipse.core.expressions.ExpressionConverter;
 import org.eclipse.core.expressions.IEvaluationContext;
 import org.eclipse.core.expressions.IVariableResolver;
+import org.eclipse.core.expressions.OrExpression;
 import org.eclipse.core.expressions.TestExpression;
+import org.eclipse.core.expressions.WithExpression;
 import org.eclipse.core.internal.expressions.AdaptExpression;
-import org.eclipse.core.internal.expressions.AndExpression;
 import org.eclipse.core.internal.expressions.EnablementExpression;
 import org.eclipse.core.internal.expressions.ExpressionStatus;
 import org.eclipse.core.internal.expressions.Expressions;
 import org.eclipse.core.internal.expressions.InstanceofExpression;
 import org.eclipse.core.internal.expressions.IterateExpression;
 import org.eclipse.core.internal.expressions.NotExpression;
-import org.eclipse.core.internal.expressions.OrExpression;
 import org.eclipse.core.internal.expressions.ResolveExpression;
 import org.eclipse.core.internal.expressions.SystemTestExpression;
-import org.eclipse.core.internal.expressions.WithExpression;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
