Possible bug in CommandObjectMultiword::Execute

In the case where there is a sub_command, we execute this code:

if (sub_cmd_obj != nullptr) {
// Now call CommandObject::Execute to process and options in
// ‘rest_of_line’. From there the command-specific version of Execute will
// be called, with the processed arguments.

sub_cmd_obj->Execute(args_string, result);
return result.Succeeded();

the args.Shift() statement has no effect, since args_string is computed before we get here and is not recomputed after the shift. So either the Shift() is superfluous or we should be re-generating the args string before passing it through.

Can someone confirm which is correct?