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 397b5c3..50d7509 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
@@ -29,48 +29,69 @@
 	@Override
 	public Expression create(ExpressionConverter converter, IConfigurationElement element) throws CoreException {
 		String name= element.getName();
-		if (ExpressionTagNames.INSTANCEOF.equals(name)) {
+		if (name == null) {
+			return null;
+		}
+
+		switch (name) {
+		case ExpressionTagNames.INSTANCEOF:
 			return new InstanceofExpression(element);
-		} else if (ExpressionTagNames.TEST.equals(name)) {
+		case ExpressionTagNames.TEST:
 			return new TestExpression(element);
-		} else if (ExpressionTagNames.OR.equals(name)) {
+		case ExpressionTagNames.OR:
+		{
 			OrExpression result= new OrExpression();
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.AND.equals(name)) {
+		}
+		case ExpressionTagNames.AND:
+		{
 			AndExpression result= new AndExpression();
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.NOT.equals(name)) {
+		}
+		case ExpressionTagNames.NOT:
 			return new NotExpression(converter.perform(element.getChildren()[0]));
-		} else if (ExpressionTagNames.WITH.equals(name)) {
+		case ExpressionTagNames.WITH:
+		{
 			WithExpression result= new WithExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.ADAPT.equals(name)) {
+		}
+		case ExpressionTagNames.ADAPT:
+		{
 			AdaptExpression result= new AdaptExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.ITERATE.equals(name)) {
+		}
+		case ExpressionTagNames.ITERATE:
+		{
 			IterateExpression result= new IterateExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.COUNT.equals(name)) {
+		}
+		case ExpressionTagNames.COUNT:
 			return new CountExpression(element);
-		} else if (ExpressionTagNames.SYSTEM_TEST.equals(name)) {
+		case ExpressionTagNames.SYSTEM_TEST:
 			return new SystemTestExpression(element);
-		} else if (ExpressionTagNames.RESOLVE.equals(name)) {
+		case ExpressionTagNames.RESOLVE:
+		{
 			ResolveExpression result= new ResolveExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.ENABLEMENT.equals(name)) {
+		}
+		case ExpressionTagNames.ENABLEMENT:
+		{
 			EnablementExpression result= new EnablementExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.EQUALS.equals(name)) {
+		}
+		case ExpressionTagNames.EQUALS:
 			return new EqualsExpression(element);
-		} else if (ExpressionTagNames.REFERENCE.equals(name)) {
+		case ExpressionTagNames.REFERENCE:
 			return new ReferenceExpression(element);
+		default:
+			break;
 		}
 		return null;
 	}
@@ -78,19 +99,28 @@
 	@Override
 	public Expression create(ExpressionConverter converter, Element element) throws CoreException {
 		String name= element.getNodeName();
-		if (ExpressionTagNames.INSTANCEOF.equals(name)) {
+		if (name == null) {
+			return null;
+		}
+
+		switch (name) {
+		case ExpressionTagNames.INSTANCEOF:
 			return new InstanceofExpression(element);
-		} else if (ExpressionTagNames.TEST.equals(name)) {
+		case ExpressionTagNames.TEST:
 			return new TestExpression(element);
-		} else if (ExpressionTagNames.OR.equals(name)) {
+		case ExpressionTagNames.OR:
+		{
 			OrExpression result= new OrExpression();
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.AND.equals(name)) {
+		}
+		case ExpressionTagNames.AND:
+		{
 			AndExpression result= new AndExpression();
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.NOT.equals(name)) {
+		}
+		case ExpressionTagNames.NOT:
 			Node child = element.getFirstChild();
 			while (child != null) {
 				if (child.getNodeType() == Node.ELEMENT_NODE) {
@@ -98,34 +128,47 @@
 				}
 				child = child.getNextSibling();
 			}
-		} else if (ExpressionTagNames.WITH.equals(name)) {
+			break;
+		case ExpressionTagNames.WITH:
+		{
 			WithExpression result= new WithExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.ADAPT.equals(name)) {
+		}
+		case ExpressionTagNames.ADAPT:
+		{
 			AdaptExpression result= new AdaptExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.ITERATE.equals(name)) {
+		}
+		case ExpressionTagNames.ITERATE:
+		{
 			IterateExpression result= new IterateExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.COUNT.equals(name)) {
+		}
+		case ExpressionTagNames.COUNT:
 			return new CountExpression(element);
-		} else if (ExpressionTagNames.SYSTEM_TEST.equals(name)) {
+		case ExpressionTagNames.SYSTEM_TEST:
 			return new SystemTestExpression(element);
-		} else if (ExpressionTagNames.RESOLVE.equals(name)) {
+		case ExpressionTagNames.RESOLVE:
+		{
 			ResolveExpression result= new ResolveExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.ENABLEMENT.equals(name)) {
+		}
+		case ExpressionTagNames.ENABLEMENT:
+		{
 			EnablementExpression result= new EnablementExpression(element);
 			processChildren(converter, element, result);
 			return result;
-		} else if (ExpressionTagNames.EQUALS.equals(name)) {
+		}
+		case ExpressionTagNames.EQUALS:
 			return new EqualsExpression(element);
-		} else if (ExpressionTagNames.REFERENCE.equals(name)) {
+		case ExpressionTagNames.REFERENCE:
 			return new ReferenceExpression(element);
+		default:
+			break;
 		}
 		return null;
 	}
diff --git a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender.java b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender.java
index 04a0b96..dc9047b 100644
--- a/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender.java
+++ b/tests/org.eclipse.core.expressions.tests/src/org/eclipse/core/internal/expressions/tests/A_TypeExtender.java
@@ -21,14 +21,21 @@
 
 	@Override
 	public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-		if ("simple".equals(property)) { //$NON-NLS-1$
+		if (property == null) {
+			return false;
+		}
+
+		switch (property) {
+		case "simple": //$NON-NLS-1$
 			return "simple".equals(expectedValue); //$NON-NLS-1$
-		} else if ("overridden".equals(property)) { //$NON-NLS-1$
+		case "overridden": //$NON-NLS-1$
 			return "A".equals(expectedValue); //$NON-NLS-1$
-		} else if ("ordering".equals(property)) { //$NON-NLS-1$
+		case "ordering": //$NON-NLS-1$
 			return "A".equals(expectedValue); //$NON-NLS-1$
-		} else if ("chainOrdering".equals(property)) { //$NON-NLS-1$
+		case "chainOrdering": //$NON-NLS-1$
 			return "A".equals(expectedValue); //$NON-NLS-1$
+		default:
+			break;
 		}
 		Assert.isTrue(false);
 		return false;
diff --git a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SetupManager.java b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SetupManager.java
index 3141bd5..7542b4d 100644
--- a/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SetupManager.java
+++ b/tests/org.eclipse.core.tests.harness/src/org/eclipse/core/tests/session/SetupManager.java
@@ -184,12 +184,18 @@
 				continue;
 			}
 			Element toParse = (Element) next;
-			if (toParse.getTagName().equals("eclipseArg")) {
+			switch (toParse.getTagName()) {
+			case "eclipseArg":
 				loadEclipseArgument(newSetup, toParse);
-			} else if (toParse.getTagName().equals("vmArg")) {
+				break;
+			case "vmArg":
 				loadVMArgument(newSetup, toParse);
-			} else if (toParse.getTagName().equals("systemProperty")) {
+				break;
+			case "systemProperty":
 				loadProperty(newSetup, toParse);
+				break;
+			default:
+				break;
 			}
 		}
 		setups.add(newSetup);
