diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaIndenter.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaIndenter.java
index f1e4636..ebfda8e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaIndenter.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaIndenter.java
@@ -299,18 +299,23 @@
 	}
 	
 	/**
-	 * Returns the reference position regarding to indentation for <code>position</code>, or
-	 * <code>NOT_FOUND</code>. <code>fIndent</code> will contain the relative indentation (in 
-	 * indentation units, not characters) after the call. If there is a special alignment (e.g. for
-	 * a method declaration where parameters should be aligned), <code>fAlign</code> will contain the absolute
-	 * position of the alignment reference in <code>fDocument</code>, otherwise <code>fAlign</code>
+	 * Returns the reference position regarding to indentation for <code>position</code>,
+	 * or <code>NOT_FOUND</code>.<code>fIndent</code> is set to the
+	 * relative indentation (in indentation units, not characters) compared to
+	 * the line where the returned offset resides. If there is a special
+	 * alignment (e.g. for a method declaration where parameters should be
+	 * aligned), <code>fAlign</code> will contain the absolute position of
+	 * the alignment reference in <code>fDocument</code>, otherwise <code>fAlign</code>
 	 * is set to <code>JavaHeuristicScanner.NOT_FOUND</code>.
 	 * 
 	 * @param position the position for which the reference is computed
 	 * @param danglingElse whether a dangling else should be assumed at <code>position</code>
-	 * @param matchBrace whether the position of the matching brace should be returned instead of doing code analysis
-	 * @param matchBrace whether the position of the matching parenthesis should be returned instead of doing code analysis
-	 * @return the reference statement relative to which <code>position</code> should be indented, or {@link JavaHeuristicScanner#NOT_FOUND}
+	 * @param matchBrace whether the position of the matching brace should be
+	 *        returned instead of doing code analysis
+	 * @param matchBrace whether the position of the matching parenthesis
+	 *        should be returned instead of doing code analysis
+	 * @return the reference statement relative to which <code>position</code>
+	 *         should be indented, or {@link JavaHeuristicScanner#NOT_FOUND}
 	 */
 	private int findReferencePosition(int position, boolean danglingElse, boolean matchBrace, boolean matchParen) {
 		fIndent= 0; // the indentation modification
@@ -417,7 +422,7 @@
 				
 				case Symbols.TokenCOLON: // switch statements and labels
 					if (searchCaseGotoDefault()) {
-						if (!hasBrace)
+						if (!hasBrace || matchBrace)
 							fIndent++;
 						return fPosition;
 					}
@@ -435,6 +440,7 @@
 				case Symbols.TokenLBRACE:
 				
 					int searchPos= fPreviousPos;
+					int bracePos= fPosition;
 					
 					// special array handling
 					nextToken();
@@ -462,6 +468,7 @@
 					
 					if (found)
 						return fScanner.findNonWhitespaceForward(searchPos, position);
+					
                     
 					// search start of code forward or continue
 					takeNextExit= true;
@@ -469,7 +476,7 @@
 					
 					// indent when searching over an LBRACE
 					fIndent++;
-					break;
+					return bracePos;
 					
 				case Symbols.TokenSEMICOLON:
 					// search start of code forward or continue
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/SmartSemicolonAutoEditStrategy.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/SmartSemicolonAutoEditStrategy.java
index cfcb439..1dd7bf4 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/SmartSemicolonAutoEditStrategy.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/SmartSemicolonAutoEditStrategy.java
@@ -137,6 +137,7 @@
 		command.caretOffset= position;
 		command.text= adjustSpacing(document, position, fCharacter);
 		command.doit= true;
+		command.owner= null;
 	}
 
 	/**
