diff --git a/src/main/java/de/prob2/jupyter/commands/CommandUtils.java b/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
index fce3cd2c445011e05a6afa6012c14ba78da37630..ecc1e4694fb00e9e0bacebf689ef1bbdf54324e1 100644
--- a/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
+++ b/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
@@ -238,12 +238,15 @@ public final class CommandUtils {
 		int argStart = 0;
 		int argEnd = argString.length();
 		int i = 0;
-		while (argSplitMatcher.find() && i < inspectors.length) {
+		while (argSplitMatcher.find()) {
 			if (argSplitMatcher.end() > at) {
 				argEnd = argSplitMatcher.start();
 				break;
 			}
 			argStart = argSplitMatcher.end();
+			if (i >= inspectors.length-1) {
+				break;
+			}
 			i++;
 		}
 		return inspectors[i].inspect(argString.substring(argStart, argEnd), at - argStart);
@@ -254,12 +257,15 @@ public final class CommandUtils {
 		int argStart = 0;
 		int argEnd = argString.length();
 		int i = 0;
-		while (argSplitMatcher.find() && i < completers.length) {
+		while (argSplitMatcher.find()) {
 			if (argSplitMatcher.end() > at) {
 				argEnd = argSplitMatcher.start();
 				break;
 			}
 			argStart = argSplitMatcher.end();
+			if (i >= completers.length-1) {
+				break;
+			}
 			i++;
 		}
 		final ReplacementOptions replacements = completers[i].complete(argString.substring(argStart, argEnd), at - argStart);