Bug 352785: [extract method] Refactor > Extract Method with break
statement in switch causes NPE
diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractMethodAnalyzer.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractMethodAnalyzer.java
index 4beef51..1c3a941 100644
--- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractMethodAnalyzer.java
+++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractMethodAnalyzer.java
@@ -60,6 +60,7 @@
 import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor;
 import org.eclipse.jdt.core.dom.SuperConstructorInvocation;
 import org.eclipse.jdt.core.dom.SwitchCase;
+import org.eclipse.jdt.core.dom.SwitchStatement;
 import org.eclipse.jdt.core.dom.ThisExpression;
 import org.eclipse.jdt.core.dom.TryStatement;
 import org.eclipse.jdt.core.dom.Type;
@@ -433,7 +434,8 @@
 				&& !(start instanceof ForStatement)
 				&& !(start instanceof DoStatement)
 				&& !(start instanceof WhileStatement)
-				&& !(start instanceof EnhancedForStatement)) {
+				&& !(start instanceof EnhancedForStatement)
+				&& !(start instanceof SwitchStatement)) {
 			start= start.getParent();
 		}
 		if (start instanceof ForStatement) {
@@ -445,7 +447,7 @@
 		} else if (start instanceof EnhancedForStatement) {
 			stmt= ((EnhancedForStatement)start).getBody();
 		}
-		if (start.getParent() instanceof LabeledStatement) {
+		if (start != null && start.getParent() instanceof LabeledStatement) {
 			LabeledStatement labeledStatement= (LabeledStatement)start.getParent();
 			fEnclosingLoopLabel= labeledStatement.getLabel();
 		}