Bug 548923 - Replace chain of ifs with switch

Sometimes if statements are chained and form a series of == comparisons
against constants. Such situation is more readable if written using
switch statement.

Change-Id: I0e5bc14be7514aaef6953b58b51e0dab7d74a18a
Signed-off-by: Carsten Hammer <carsten.hammer@t-online.de>
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/EEDefinitionTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/EEDefinitionTests.java
index 45d69bd..9af53b2 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/EEDefinitionTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/core/EEDefinitionTests.java
@@ -88,16 +88,20 @@
 		String[] expected = new String[]{"end.jar", "classes.txt", "others.txt", "add.jar", "ext1.jar", "ext2.jar", "opt-ext.jar"};
 		assertEquals("Wrong number of libraries", expected.length, libs.length);
 		for (int i = 0; i < expected.length; i++) {
-			if (i == 4) {
+			switch (i) {
+			case 4:
 				// ext1 and ext2 can be in either order due to file system ordering
 				assertTrue("Wrong library", expected[i].equals(libs[i].getSystemLibraryPath().lastSegment()) ||
-						expected[i].equals(libs[i+1].getSystemLibraryPath().lastSegment()));
-			} else if (i == 5) {
+					expected[i].equals(libs[i+1].getSystemLibraryPath().lastSegment()));
+				break;
+			case 5:
 				// ext1 and ext2 can be in either order due to file system ordering
 				assertTrue("Wrong library", expected[i].equals(libs[i].getSystemLibraryPath().lastSegment()) ||
-						expected[i].equals(libs[i-1].getSystemLibraryPath().lastSegment()));
-			} else {
+					expected[i].equals(libs[i-1].getSystemLibraryPath().lastSegment()));
+				break;
+			default:
 				assertEquals("Wrong library", expected[i], libs[i].getSystemLibraryPath().lastSegment());
+				break;
 			}
 			if ("classes.txt".equals(expected[i])) {
 				assertEquals("source.txt", libs[i].getSystemLibrarySourcePath().lastSegment());
@@ -116,18 +120,23 @@
 		String[] expected = new String[]{"end.txt", "source.txt", "source.txt", "sourceaddsource.jar", "extra1-src.txt", "extra2-src.txt", ""};
 		assertEquals("Wrong number of libraries", expected.length, libs.length);
 		for (int i = 0; i < expected.length; i++) {
-			if (i == 4) {
+			switch (i) {
+			case 4:
 				// ext1 and ext2 can be in either order due to file system ordering
 				assertTrue("Wrong attachment", expected[i].equals(libs[i].getSystemLibrarySourcePath().lastSegment()) ||
-						expected[i].equals(libs[i+1].getSystemLibrarySourcePath().lastSegment()));
-			} else if (i == 5) {
+					expected[i].equals(libs[i+1].getSystemLibrarySourcePath().lastSegment()));
+				break;
+			case 5:
 				// ext1 and ext2 can be in either order due to file system ordering
 				assertTrue("Wrong attachment", expected[i].equals(libs[i].getSystemLibrarySourcePath().lastSegment()) ||
-						expected[i].equals(libs[i-1].getSystemLibrarySourcePath().lastSegment()));
-			} else if (i == 6){
+					expected[i].equals(libs[i-1].getSystemLibrarySourcePath().lastSegment()));
+				break;
+			case 6:
 				assertEquals("Wrong attachment", Path.EMPTY, libs[i].getSystemLibrarySourcePath());
-			} else {
+				break;
+			default:
 				assertEquals("Wrong attachment", expected[i], libs[i].getSystemLibrarySourcePath().lastSegment());
+				break;
 			}
 		}
 	}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/core/refactoring/JDTDebugRefactoringUtil.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/core/refactoring/JDTDebugRefactoringUtil.java
index b05d0d2..2e2e672 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/core/refactoring/JDTDebugRefactoringUtil.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/core/refactoring/JDTDebugRefactoringUtil.java
@@ -41,13 +41,12 @@
 	 */
 	public static Change createChangeFromList(List<Change> changes, String changeLabel) {
 		int nbChanges= changes.size();
-		if (nbChanges == 0) {
+		switch (nbChanges) {
+		case 0:
 			return null;
-		}
-		else if (nbChanges == 1) {
+		case 1:
 			return changes.get(0);
-		}
-		else {
+		default:
 			return new CompositeChange(changeLabel, changes.toArray(new Change[changes.size()]));
 		}
 	}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ExpressionInputDialog.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ExpressionInputDialog.java
index f846a4a..17bbae8 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ExpressionInputDialog.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ExpressionInputDialog.java
@@ -259,24 +259,34 @@
                     char[] chars = currentValue.toCharArray();
                     for (int i = 0; i < chars.length; i++) {
                         char c = chars[i];
-                        if (c == '\b') {
-                            buffer.append("\\b"); //$NON-NLS-1$
-                        } else if (c == '\t') {
-                            buffer.append("\\t"); //$NON-NLS-1$
-                        } else if (c == '\n') {
-                            buffer.append("\\n"); //$NON-NLS-1$
-                        } else if (c == '\f') {
-                            buffer.append("\\f"); //$NON-NLS-1$
-                        } else if (c == '\r') {
-                            buffer.append("\\r"); //$NON-NLS-1$
-                        } else if (c == '"') {
-                            buffer.append("\\\""); //$NON-NLS-1$
-                        } else if (c == '\'') {
-                            buffer.append("\\\'"); //$NON-NLS-1$
-                        } else if (c == '\\') {
-                            buffer.append("\\\\"); //$NON-NLS-1$
-                        } else {
-                            buffer.append(c);
+                        switch (c) {
+                        	case '\b':
+                        		buffer.append("\\b"); //$NON-NLS-1$
+                        		break;
+                        	case '\t':
+                        		buffer.append("\\t"); //$NON-NLS-1$
+                        		break;
+                        	case '\n':
+                        		buffer.append("\\n"); //$NON-NLS-1$
+                        		break;
+                        	case '\f':
+                        		buffer.append("\\f"); //$NON-NLS-1$
+                        		break;
+                        	case '\r':
+                        		buffer.append("\\r"); //$NON-NLS-1$
+                        		break;
+                        	case '"':
+                        		buffer.append("\\\""); //$NON-NLS-1$
+                        		break;
+                        	case '\'':
+                        		buffer.append("\\\'"); //$NON-NLS-1$
+                        		break;
+                        	case '\\':
+                        		buffer.append("\\\\"); //$NON-NLS-1$
+                        		break;
+                        	default:
+                        		buffer.append(c);
+                        		break;
                         }
                     }
                     buffer.append('"'); // Surround value in quotes
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/JREsPreferencePage.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/JREsPreferencePage.java
index 0dd221c..99f35a5 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/JREsPreferencePage.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/JREsPreferencePage.java
@@ -355,15 +355,20 @@
 					JREMessages.JREsPreferencePage_8 };
 			MessageDialog dialog = new MessageDialog(getShell(), title, null, message, MessageDialog.QUESTION, buttonLabels, 0);
 			int res = dialog.open();
-			if (res == 0) { // apply
+			switch (res) {
+			case 0:
+				// apply
 				return performOk() && super.okToLeave();
-			} else if (res == 1) { // discard
+			case 1:
+				// discard
 				fJREBlock.fillWithWorkspaceJREs();
 				fJREBlock.restoreColumnSettings(JDIDebugUIPlugin.getDefault().getDialogSettings(), IJavaDebugHelpContextIds.JRE_PREFERENCE_PAGE);
 				initDefaultVM();
 				fJREBlock.initializeTimeStamp();
-			} else {
+				break;
+			default:
 				// apply later
+				break;
 			}
 		}
 		return super.okToLeave();
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/LibraryLabelProvider.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/LibraryLabelProvider.java
index 3ae7fce..cbd1143 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/LibraryLabelProvider.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/LibraryLabelProvider.java
@@ -91,7 +91,8 @@
 		} else if (element instanceof SubElement) {
 			SubElement subElement= (SubElement) element;
 			StringBuilder text= new StringBuilder();
-			if (subElement.getType() == SubElement.SOURCE_PATH) {
+			switch (subElement.getType()) {
+			case SubElement.SOURCE_PATH:
 				text.append(JREMessages.VMLibraryBlock_0);
 				IPath systemLibrarySourcePath= subElement.getParent().getSystemLibrarySourcePath();
 				if (systemLibrarySourcePath != null && !Path.EMPTY.equals(systemLibrarySourcePath)) {
@@ -99,7 +100,8 @@
 				} else {
 					text.append(JREMessages.VMLibraryBlock_1);
 				}
-			} else if(subElement.getType() == SubElement.JAVADOC_URL){
+				break;
+			case SubElement.JAVADOC_URL:
 				text.append(JREMessages.LibraryLabelProvider_0);
 				URL javadocLocation= subElement.getParent().getJavadocLocation();
 				if (javadocLocation != null) {
@@ -107,7 +109,8 @@
 				} else {
 					text.append(JREMessages.VMLibraryBlock_1);
 				}
-			} else if (subElement.getType() == SubElement.EXTERNAL_ANNOTATIONS_PATH) {
+				break;
+			case SubElement.EXTERNAL_ANNOTATIONS_PATH:
 				text.append(JREMessages.VMExternalAnnsBlock_1);
 				IPath externalAnnotationsPath = subElement.getParent().getExternalAnnotationsPath();
 				if (externalAnnotationsPath != null && !Path.EMPTY.equals(externalAnnotationsPath)) {
@@ -115,6 +118,9 @@
 				} else {
 					text.append(JREMessages.VMExternalAnnsBlock_2);
 				}
+				break;
+			default:
+				break;
 			}
 			return text.toString();
 		}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/VMLibraryBlock.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/VMLibraryBlock.java
index 4c9b867..d3ed19e 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/VMLibraryBlock.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/VMLibraryBlock.java
@@ -342,33 +342,40 @@
 		}
 		if(standin != null) {
 			LibraryLocation library = standin.toLibraryLocation();
-			if (type == SubElement.JAVADOC_URL) {
+			switch (type) {
+			case SubElement.JAVADOC_URL:
 				URL[] urls = BuildPathDialogAccess.configureJavadocLocation(fLibraryViewer.getControl().getShell(), library.getSystemLibraryPath().toOSString(), library.getJavadocLocation());
 				if (urls != null) {
 					fLibraryContentProvider.setJavadoc(urls[0], selection);
 				}
-			}
-			else if(type == SubElement.SOURCE_PATH){
-				IRuntimeClasspathEntry entry = JavaRuntime.newArchiveRuntimeClasspathEntry(library.getSystemLibraryPath());
-				entry.setSourceAttachmentPath(library.getSystemLibrarySourcePath());
-				entry.setSourceAttachmentRootPath(library.getPackageRootPath());
-				IClasspathEntry classpathEntry = BuildPathDialogAccess.configureSourceAttachment(fLibraryViewer.getControl().getShell(), entry.getClasspathEntry());
-				if (classpathEntry != null) {
-					fLibraryContentProvider.setSourcePath(classpathEntry.getSourceAttachmentPath(), classpathEntry.getSourceAttachmentRootPath(), selection);
+				break;
+			case SubElement.SOURCE_PATH:
+				{
+					IRuntimeClasspathEntry entry = JavaRuntime.newArchiveRuntimeClasspathEntry(library.getSystemLibraryPath());
+					entry.setSourceAttachmentPath(library.getSystemLibrarySourcePath());
+					entry.setSourceAttachmentRootPath(library.getPackageRootPath());
+					IClasspathEntry classpathEntry = BuildPathDialogAccess.configureSourceAttachment(fLibraryViewer.getControl().getShell(), entry.getClasspathEntry());
+					if (classpathEntry != null) {
+						fLibraryContentProvider.setSourcePath(classpathEntry.getSourceAttachmentPath(), classpathEntry.getSourceAttachmentRootPath(), selection);
+					}
+					break;
 				}
-			}
-			else if(type == SubElement.EXTERNAL_ANNOTATIONS_PATH) {
-				IRuntimeClasspathEntry entry = JavaRuntime.newArchiveRuntimeClasspathEntry(library.getSystemLibraryPath());
-				entry.setExternalAnnotationsPath(library.getExternalAnnotationsPath());
-				IClasspathAttribute[] extraAttributes = entry.getClasspathEntry().getExtraAttributes();
-				String annotationPathString = findClasspathAttribute(extraAttributes, IClasspathAttribute.EXTERNAL_ANNOTATION_PATH);
-				IPath annotationPath = null == annotationPathString ? null : new Path(annotationPathString);
-
-				IPath newPath = BuildPathDialogAccess.configureExternalAnnotationsAttachment(fLibraryViewer.getControl().getShell(), annotationPath);
-				if (null == newPath) {
-					return;
+			case SubElement.EXTERNAL_ANNOTATIONS_PATH:
+				{
+					IRuntimeClasspathEntry entry = JavaRuntime.newArchiveRuntimeClasspathEntry(library.getSystemLibraryPath());
+					entry.setExternalAnnotationsPath(library.getExternalAnnotationsPath());
+					IClasspathAttribute[] extraAttributes = entry.getClasspathEntry().getExtraAttributes();
+					String annotationPathString = findClasspathAttribute(extraAttributes, IClasspathAttribute.EXTERNAL_ANNOTATION_PATH);
+					IPath annotationPath = null == annotationPathString ? null : new Path(annotationPathString);
+					IPath newPath = BuildPathDialogAccess.configureExternalAnnotationsAttachment(fLibraryViewer.getControl().getShell(), annotationPath);
+					if (null == newPath) {
+						return;
+					}
+					fLibraryContentProvider.setAnnotationsPath(newPath.segmentCount() == 0 ? null : newPath, selection);
+					break;
 				}
-				fLibraryContentProvider.setAnnotationsPath(newPath.segmentCount() == 0 ? null : newPath, selection);
+			default:
+				break;
 			}
 		}
 	}
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/SourceDebugExtensionParser.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/SourceDebugExtensionParser.java
index e3e9785..ed2fbeb 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/SourceDebugExtensionParser.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/SourceDebugExtensionParser.java
@@ -413,34 +413,34 @@
 	 */
 	private void parseFileInfo(Lexer lexer) throws AbsentInformationException {
 		int lexemType = lexer.lexemType();
-		if (lexemType == Lexer.NUMBER) {
-			int fileId = integerValue(lexer.lexem());
-			if (isAsteriskLexem(lexer.nextLexem())) {
-				throw new AbsentInformationException(
-						JDIMessages.SourceDebugExtensionParser_16);
-			}
-			fCurrentStratum.addFileInfo(fileId, getNonAsteriskString(lexer));
-		} else if (lexemType == Lexer.PLUS) {
-			if (lexer.nextLexem() != Lexer.NUMBER) {
-				throw new AbsentInformationException(
-						JDIMessages.SourceDebugExtensionParser_17);
-			}
-			int fileId = integerValue(lexer.lexem());
-			if (isAsteriskLexem(lexer.nextLexem())) {
-				throw new AbsentInformationException(
-						JDIMessages.SourceDebugExtensionParser_16);
-			}
-			String fileName = getNonAsteriskString(lexer);
-			if (isAsteriskLexem(lexer.lexemType())) {
-				throw new AbsentInformationException(
-						JDIMessages.SourceDebugExtensionParser_19);
-			}
-			fCurrentStratum.addFileInfo(fileId, fileName,
-					getNonAsteriskString(lexer));
-		} else {
-			throw new AbsentInformationException(NLS.bind(
-					JDIMessages.SourceDebugExtensionParser_12,
-					new String[] { new String(lexer.lexem()) }));
+		switch (lexemType) {
+			case Lexer.NUMBER:
+				int fileId = integerValue(lexer.lexem());
+				if (isAsteriskLexem(lexer.nextLexem())) {
+					throw new AbsentInformationException(
+							JDIMessages.SourceDebugExtensionParser_16);
+				}
+				fCurrentStratum.addFileInfo(fileId, getNonAsteriskString(lexer));
+				break;
+			case Lexer.PLUS:
+				if (lexer.nextLexem() != Lexer.NUMBER) {
+					throw new AbsentInformationException(
+							JDIMessages.SourceDebugExtensionParser_17);
+				}
+				fileId = integerValue(lexer.lexem());
+				if (isAsteriskLexem(lexer.nextLexem())) {
+					throw new AbsentInformationException(
+							JDIMessages.SourceDebugExtensionParser_16);
+				}
+				String fileName = getNonAsteriskString(lexer);
+				if (isAsteriskLexem(lexer.lexemType())) {
+					throw new AbsentInformationException(
+							JDIMessages.SourceDebugExtensionParser_19);
+				}
+				fCurrentStratum.addFileInfo(fileId, fileName, getNonAsteriskString(lexer));
+				break;
+			default:
+				throw new AbsentInformationException(NLS.bind(JDIMessages.SourceDebugExtensionParser_12, new String[] { new String(lexer.lexem()) }));
 		}
 	}
 
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java
index f7b5255..4c51147 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java
@@ -60,7 +60,6 @@
 import org.eclipse.jdt.internal.debug.core.JavaDebugUtils;
 import org.eclipse.jdt.internal.debug.core.logicalstructures.JDILambdaVariable;
 import org.eclipse.jdt.internal.debug.core.logicalstructures.JDIReturnValueVariable;
-import org.eclipse.jdt.internal.debug.core.model.MethodResult.ResultType;
 
 import com.sun.jdi.AbsentInformationException;
 import com.sun.jdi.ClassNotLoadedException;
@@ -530,30 +529,42 @@
 	private void addStepReturnValue(List<IJavaVariable> variables) {
 		if (fIsTop) {
 			MethodResult methodResult = fThread.getMethodResult();
-			if (methodResult != null) {
-				if (methodResult.fResultType == ResultType.returned) {
-					if (fDepth + 1 != methodResult.fTargetFrameCount) {
-						// can happen e.g., because of checkPackageAccess/System.getSecurityManager()
-						return;
+			if (methodResult != null && methodResult.fResultType != null) {
+				switch (methodResult.fResultType) {
+					case returned:{
+						if (fDepth + 1 != methodResult.fTargetFrameCount) {
+							// can happen e.g., because of checkPackageAccess/System.getSecurityManager()
+							return;
+						}
+						String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ReturnValue, methodResult.fMethod.name());
+						variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), methodResult.fValue), true));
+						break;
 					}
-					String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ReturnValue, methodResult.fMethod.name());
-					variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), methodResult.fValue), true));
-				} else if (methodResult.fResultType == ResultType.returning) {
-					String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ReturningValue, methodResult.fMethod.name());
-					variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), methodResult.fValue), true));
-				} else if (methodResult.fResultType == ResultType.threw) {
-					if (fDepth + 1 > methodResult.fTargetFrameCount) {
-						// don't know if this really can happen, but other jvm suprises were not expected either
-						return;
+					case returning:{
+						String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ReturningValue, methodResult.fMethod.name());
+						variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), methodResult.fValue), true));
+						break;
 					}
-					String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ExceptionThrown, methodResult.fMethod.name());
-					variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), methodResult.fValue), true));
-				} else if (methodResult.fResultType == ResultType.throwing) {
-					String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ThrowingException, methodResult.fMethod.name());
-					variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), methodResult.fValue), true));
-				} else if (methodResult.fResultType == ResultType.step_timeout) {
-					String msg = JDIDebugModelMessages.JDIStackFrame_NotObservedBecauseOfTimeout;
-					variables.add(0, new JDIReturnValueVariable(JDIDebugModelMessages.JDIStackFrame_NoMethodReturnValue, new JDIPlaceholderValue(getJavaDebugTarget(), msg), false));
+					case threw:{
+						if (fDepth + 1 > methodResult.fTargetFrameCount) {
+							// don't know if this really can happen, but other jvm suprises were not expected either
+							return;
+						}
+						String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ExceptionThrown, methodResult.fMethod.name());
+						variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), methodResult.fValue), true));
+						break;
+					}
+					case throwing:{
+						String name = MessageFormat.format(JDIDebugModelMessages.JDIStackFrame_ThrowingException, methodResult.fMethod.name());
+						variables.add(0, new JDIReturnValueVariable(name, JDIValue.createValue(getJavaDebugTarget(), methodResult.fValue), true));
+						break;
+					}
+					case step_timeout:
+						String msg = JDIDebugModelMessages.JDIStackFrame_NotObservedBecauseOfTimeout;
+						variables.add(0, new JDIReturnValueVariable(JDIDebugModelMessages.JDIStackFrame_NoMethodReturnValue, new JDIPlaceholderValue(getJavaDebugTarget(), msg), false));
+						break;
+					default:
+						break;
 				}
 			} else if (JDIThread.showStepResultIsEnabled(getDebugTarget())) {
 				variables.add(0, new JDIReturnValueVariable(JDIDebugModelMessages.JDIStackFrame_NoMethodReturnValue, new JDIPlaceholderValue(getJavaDebugTarget(), ""), false)); //$NON-NLS-1$
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/AbstractJavaLaunchConfigurationDelegate.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/AbstractJavaLaunchConfigurationDelegate.java
index e511152..82e7b1b 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/AbstractJavaLaunchConfigurationDelegate.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/AbstractJavaLaunchConfigurationDelegate.java
@@ -473,22 +473,27 @@
 		for (IRuntimeClasspathEntry entry : entries) {
 			String location = entry.getLocation();
 			if (location != null) {
-				if (entry.getClasspathProperty() == IRuntimeClasspathEntry.USER_CLASSES) {
+				switch (entry.getClasspathProperty()) {
+				case IRuntimeClasspathEntry.USER_CLASSES:
 					if (!classpathSet.contains(location)) {
 						classpathEntries.add(location);
 						classpathSet.add(location);
 					}
-				} else if (entry.getClasspathProperty() == IRuntimeClasspathEntry.CLASS_PATH) {
+					break;
+				case IRuntimeClasspathEntry.CLASS_PATH:
 					if (!classpathSet.contains(location)) {
 						classpathEntries.add(location);
 						classpathSet.add(location);
 					}
-
-				} else if (entry.getClasspathProperty() == IRuntimeClasspathEntry.MODULE_PATH) {
+					break;
+				case IRuntimeClasspathEntry.MODULE_PATH:
 					if (!modulepathSet.contains(location)) {
 						modulepathEntries.add(location);
 						modulepathSet.add(location);
 					}
+					break;
+				default:
+					break;
 				}
 
 			}
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
index fdfbba1..99e3d18 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
@@ -1561,14 +1561,19 @@
 		int property = -1;
 		switch (container.getKind()) {
 			case IClasspathContainer.K_APPLICATION:
-				if (entry.getClasspathProperty() == IRuntimeClasspathEntry.MODULE_PATH) {
-					property = IRuntimeClasspathEntry.MODULE_PATH;
-				} else if (entry.getClasspathProperty() == IRuntimeClasspathEntry.CLASS_PATH) {
-					property = IRuntimeClasspathEntry.CLASS_PATH;
-				} else {
-					property = IRuntimeClasspathEntry.USER_CLASSES;
+				switch (entry.getClasspathProperty()) {
+					case IRuntimeClasspathEntry.MODULE_PATH:
+						property = IRuntimeClasspathEntry.MODULE_PATH;
+						break;
+					case IRuntimeClasspathEntry.CLASS_PATH:
+						property = IRuntimeClasspathEntry.CLASS_PATH;
+						break;
+					default:
+						property = IRuntimeClasspathEntry.USER_CLASSES;
+						break;
 				}
 				break;
+
 			case IClasspathContainer.K_DEFAULT_SYSTEM:
 				property = IRuntimeClasspathEntry.STANDARD_CLASSES;
 				break;