// Strip off the task name
// This mutates t.getOptions, and so has to be called before we create the injector.
Flags.parseOptions(t.getOptions(), ImmutableList.copyOf(args).subList(1, args.length));
Injector injector = Guice.createInjector(t, new MoeModule());
Task task = injector.getInstance(Task.class);
Task.Explanation result = task.executeAtTopLevel();
if (!Strings.isNullOrEmpty(result.message)) {
logger.info(result.message);
System.out.println(result.message);
}
System.exit(result.exitCode);