diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java
index 65e78f5..f35c70e 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java
@@ -937,12 +937,10 @@
 					}
 				}
 				p = pb.start();
+			} else if (workingDirectory == null) {
+				p = Runtime.getRuntime().exec(cmdLine, envp);
 			} else {
-				if (workingDirectory == null) {
-					p = Runtime.getRuntime().exec(cmdLine, envp);
-				} else {
-					p = Runtime.getRuntime().exec(cmdLine, envp, workingDirectory);
-				}
+				p = Runtime.getRuntime().exec(cmdLine, envp, workingDirectory);
 			}
 		} catch (IOException e) {
 			Status status = new Status(IStatus.ERROR, getUniqueIdentifier(), ERROR, DebugCoreMessages.DebugPlugin_0, e);
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java
index ca8d539..9e0b6b2 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java
@@ -267,13 +267,11 @@
 					} catch (DebugException e) {
 						status.merge(e.getStatus());
 					}
-				} else {
-					if (target.canDisconnect()) {
-						try {
-							target.disconnect();
-						} catch (DebugException de) {
-							status.merge(de.getStatus());
-						}
+				} else if (target.canDisconnect()) {
+					try {
+						target.disconnect();
+					} catch (DebugException de) {
+						status.merge(de.getStatus());
 					}
 				}
 			}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/RefreshUtil.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/RefreshUtil.java
index 3a2ddc1..15bc7aa 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/RefreshUtil.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/core/RefreshUtil.java
@@ -183,14 +183,12 @@
 			if (resource == null) {
 				// empty selection
 				return new IResource[]{};
-			} else {
-				if (memento.equals(MEMENTO_SELECTED_RESOURCE)) {
-					return new IResource[] { resource };
-				} else if (memento.equals(MEMENTO_SELECTED_CONTAINER)) {
-					return new IResource[] {resource.getParent()};
-				} else if (memento.equals(MEMENTO_SELECTED_PROJECT)) {
-					return new IResource[] {resource.getProject()};
-				}
+			} else if (memento.equals(MEMENTO_SELECTED_RESOURCE)) {
+				return new IResource[] { resource };
+			} else if (memento.equals(MEMENTO_SELECTED_CONTAINER)) {
+				return new IResource[] {resource.getParent()};
+			} else if (memento.equals(MEMENTO_SELECTED_PROJECT)) {
+				return new IResource[] {resource.getProject()};
 			}
 		}
 		throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), MessageFormat.format(DebugCoreMessages.RefreshUtil_0, memento)));
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java
index cf60a2d..7ee8a8c 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java
@@ -681,12 +681,10 @@
 				String memento = getAttribute(ATTR_SOURCE_LOCATOR_MEMENTO, (String)null);
 				if (memento == null) {
 					locator.initializeDefaults(this);
+				} else if(locator instanceof IPersistableSourceLocator2) {
+					((IPersistableSourceLocator2)locator).initializeFromMemento(memento, this);
 				} else {
-					if(locator instanceof IPersistableSourceLocator2) {
-						((IPersistableSourceLocator2)locator).initializeFromMemento(memento, this);
-					} else {
-						locator.initializeFromMemento(memento);
-					}
+					locator.initializeFromMemento(memento);
 				}
 				launch.setSourceLocator(locator);
 			}
@@ -744,13 +742,11 @@
 			}
 			if (launch == null) {
 				launch = new Launch(this, mode, null);
-			} else {
-				// ensure the launch mode is valid
-				if (!mode.equals(launch.getLaunchMode())) {
-					IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR,
-							MessageFormat.format(DebugCoreMessages.LaunchConfiguration_14, mode, launch.getLaunchMode()), null);
-					throw new CoreException(status);
-				}
+			} else // ensure the launch mode is valid
+			if (!mode.equals(launch.getLaunchMode())) {
+				IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR,
+						MessageFormat.format(DebugCoreMessages.LaunchConfiguration_14, mode, launch.getLaunchMode()), null);
+				throw new CoreException(status);
 			}
 			launch.setAttribute(DebugPlugin.ATTR_LAUNCH_TIMESTAMP, Long.toString(System.currentTimeMillis()));
 			boolean captureOutput = getAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, true);
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java
index 9f460fd..4da5fa0 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java
@@ -913,10 +913,8 @@
 			if (strAttr1 == null && strAttr2 == null && !attr1.equals(attr2)) {
 				return false;
 			}
-		} else {
-			if (comp.compare(attr1, attr2) != 0) {
-				return false;
-			}
+		} else if (comp.compare(attr1, attr2) != 0) {
+			return false;
 		}
 		return true;
 	}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java
index 4caad68..477ce0d 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java
@@ -284,12 +284,10 @@
 								if (registered != null) {
 									registered.add(fNotifierLaunches[j]);
 								}
-							} else {
-								if (registered == null) {
-									registered = new ArrayList<>(fNotifierLaunches.length);
-									for (int k = 0; k < j; k++) {
-										registered.add(fNotifierLaunches[k]);
-									}
+							} else if (registered == null) {
+								registered = new ArrayList<>(fNotifierLaunches.length);
+								for (int k = 0; k < j; k++) {
+									registered.add(fNotifierLaunches[k]);
 								}
 							}
 						}
@@ -1366,13 +1364,11 @@
 					}
 				}
 
+			} else if (store != null){
+				throw createDebugException(MessageFormat.format(DebugCoreMessages.LaunchManager_does_not_exist, new Object[] {
+						config.getName(), store.toURI().toString() }), null);
 			} else {
-				if (store != null){
-					throw createDebugException(MessageFormat.format(DebugCoreMessages.LaunchManager_does_not_exist, new Object[] {
-							config.getName(), store.toURI().toString() }), null);
-				} else {
-					throw createDebugException(MessageFormat.format(DebugCoreMessages.LaunchManager_does_not_exist_no_store_found, new Object[] { config.getName() }), null);
-				}
+				throw createDebugException(MessageFormat.format(DebugCoreMessages.LaunchManager_does_not_exist_no_store_found, new Object[] { config.getName() }), null);
 			}
 		}
 		return info;
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/groups/GroupLaunchConfigurationDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/groups/GroupLaunchConfigurationDelegate.java
index de3c2f2..851d35a 100644
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/groups/GroupLaunchConfigurationDelegate.java
+++ b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/groups/GroupLaunchConfigurationDelegate.java
@@ -126,10 +126,8 @@
 					// loop detected. report as appropriate and die.
 					IStatusHandler cycleHandler = DebugPlugin.getDefault().getStatusHandler(GROUP_CYCLE);
 					cycleHandler.handleStatus(GROUP_CYCLE, conf.getName());
-				} else {
-					if (!launchChild(progress.newChild(1000 / launches.size()), group, le, conf, localMode, (i == launches.size() - 1))) {
-						break;
-					}
+				} else if (!launchChild(progress.newChild(1000 / launches.size()), group, le, conf, localMode, (i == launches.size() - 1))) {
+					break;
 				}
 
 				// in case the group has been terminated while waiting in the
