anchor.diff:  /// the CompositeProjectCommand's value and the ProjectCommand's value.
   /// TODO: this is not currently a composite. Either make it one or rename to
   /// ProjectCommandGroup or something
  -abstract class CompositeProjectCommand extends Command {
  -  String get name;
  -  Iterable<ProjectCommand> get commands;
  +abstract class CompositeProjectCommand<T> extends Command<T> {
  +  String get name;
  +  Iterable<ProjectCommand<T>> get commands;
     CommandConcurrencyMode get concurrencyMode;
   }
   
  
positive.code: /// order provided. Depending on the [concurrencyMode] of the composite command
  /// and that of the individual commands, commands may be executing on other
  /// [Project]s in the group simultaneously
  CompositeProjectCommand projectCommandGroup(
      String name, Iterable<ProjectCommand> commands,
      {CommandConcurrencyMode concurrencyMode:
          CommandConcurrencyMode.concurrentCommand}) {
    return new _DefaultCompositeProjectCommand(name, commands, concurrencyMode);
  }
  
  /// A command that operates on a [JefeProjectGraph]. Unlike the other commands,
  
negative.code:   }
  }
  
  class _DefaultCompositeProjectCommand<T> implements CompositeProjectCommand<T> {
    final String name;
    final Iterable<ProjectCommand<T>> commands;
    final CommandConcurrencyMode concurrencyMode;
    _DefaultCompositeProjectCommand(
        this.name, this.commands, this.concurrencyMode);
  