anchor.diff:          .addSubcommand("tag",      new GitTag());
   ----
   
  +.Groovy
  +[source,groovy,role="secondary"]
  +----
  +def commandLine = new CommandLine(new Git())
  +        .addSubcommand("status",   new GitStatus())
  +        .addSubcommand("commit",   new GitCommit())
  +        .addSubcommand("add",      new GitAdd())
  +        .addSubcommand("branch",   new GitBranch())
  +        .addSubcommand("checkout", new GitCheckout())
  +        .addSubcommand("clone",    new GitClone())
  +        .addSubcommand("diff",     new GitDiff())
  +        .addSubcommand("merge",    new GitMerge())
  +        .addSubcommand("push",     new GitPush())
  +        .addSubcommand("rebase",   new GitRebase())
  +        .addSubcommand("tag",      new GitTag());
  +----
  +
   .Kotlin
   [source,kotlin,role="secondary"]
   ----
  
positive.code:         MyApp app = new MyApp();
          new CommandLine(app)
                  .setExecutionStrategy(app::executionStrategy)
                  .execute(args);
      }
  
  
negative.code:     GitRebase.class,
      GitTag.class
  })
  public class Git { /* ... */ }
  ----
  
  .Groovy
  [source,groovy,role="secondary"]
  ----
  @Command(subcommands = [
      GitStatus.class,
      GitCommit.class,
      GitAdd.class,
      GitBranch.class,
      GitCheckout.class,
      GitClone.class,
      GitDiff.class,
      GitMerge.class,
      GitPush.class,
      GitRebase.class,
      GitTag.class
  ])
  public class Git { /* ... */ }
  ----
  
  .Kotlin
  