anchor.diff:      final dependenciesChanged = expectedDependencies.keys
           .any((k) => expectedDependencies[k] != actualDependencies[k]);
   
  -    _log.info('dependencies for ${_graph.name} have '
  +    _log.info('dependencies for ${_project.name} have '
           '${dependenciesChanged ? "" : "NOT "}changed');
       return dependenciesChanged;
     }
  
positive.code:     return executeTask(
          'change to $type dependencies',
          () => _setToDependencies(
              _graph, _graph.directDependencies, type, useGitIfNotHosted));
    }
  
    // TODO: not sure if it makes sense to do this over whole sub graph
  
negative.code: 
  Logger _log = new Logger('jefe.project.commands.pub.impl');
  
  
  abstract class PubSpecCommandsImpl implements PubSpecCommands {
    factory PubSpecCommandsImpl(JefeProjectGraph graph, {bool multiProject: true}) {
      return multiProject
        ? new PubSpecCommandsMultiProjectImpl(graph)
        : new PubSpecCommandsSingleProjectImpl(graph as JefeProject);
    }
  }
  
  class PubSpecCommandsSingleProjectImpl
    extends SingleProjectCommandSupport<PubSpecCommands> implements PubSpecCommands {
    PubSpecCommandsSingleProjectImpl(JefeProject project)
      : super(
      (JefeProject p) async => new _PubSpecCommandsSingleProjectImpl(project),
      project);
  }
  
  class PubSpecCommandsMultiProjectImpl
    extends MultiProjectCommandSupport<PubSpecCommands> implements PubSpecCommands {
    PubSpecCommandsMultiProjectImpl(JefeProjectGraph graph)
      : super(graph,
      (JefeProject p) async => new PubSpecCommandsSingleProjectImpl(p));
  }
  
  class _PubSpecCommandsSingleProjectImpl implements PubSpecCommands {
    final JefeProject _project;
  
    PubSpecCommandsImpl(this._project);
  
    @override
    Future setToPathDependencies() =>
  