} else if (split.length > 0) {
String subCommand = split[0];
String subArguments = Joiner.on(" ").join(Arrays.copyOfRange(split, 1, split.length));
String[] subParents = Arrays.copyOf(parentCommands, parentCommands.length + 1);
subParents[parentCommands.length] = subCommand;
CommandMapping mapping = get(subCommand);
if (mapping != null) {
try {
mapping.getCallable().call(subArguments, locals, subParents);
} catch (AuthorizationException e) {
throw e;
} catch (CommandException e) {
e.prependStack(subCommand);
throw e;