anchor.diff:    Future<Option<String>> currentFeatureName() {
       Future<Option<String>> featureNameFor() async {
         final featureNames =
  -      await new Stream<JefeProject>.fromIterable(_project.depthFirst)
  -        .asyncMap(
  -        (p) async => await gitFlowCurrentFeatureName(await p.gitDir))
  -        .where((o) => o is Some)
  -        .map((o) => o.get())
  -        .toSet();
  +          await new Stream<JefeProject>.fromIterable(_project.depthFirst)
  +              .asyncMap(
  +                  (p) async => await gitFlowCurrentFeatureName(await p.gitDir))
  +              .where((o) => o is Some)
  +              .map((o) => o.get())
  +              .toSet();
   
         if (featureNames.length == 0) {
           return const None();
  
positive.code:     }
  
      return executeTask/*<Option<String>>*/(
        'Get current feature name', featureNameFor);
    }
  
    @override
  
negative.code: 
    @override
    Future assertNoActiveReleases() =>
        executeTask('check no active releases', () async {
          final releaseNames = await gitFlowReleaseNames(await _project.gitDir);
          if (releaseNames.isNotEmpty) {
            throw new StateError(
                '${_project.name} has an existing release branch. Must finish all active releases first');
          }
        });
  
    Future<FeatureNames> fetchCurrentProjectsFeatureNames() async {
      final gitDir = await _project.gitDir;
      final results = await Future
          .wait([gitFlowFeatureNames(gitDir), gitFlowCurrentFeatureName(gitDir)]);
  
      return new FeatureNames(
          (results[0] as Iterable<String>).toSet(), results[1] as Option<String>);
    }
  
    @override
    Future<bool> get hasChangesSinceLatestTaggedVersion async =>
        (await _project.latestTaggedGitVersion)
            .map((v) => _project.git.hasChangesSince(v))
            .getOrElse(() => false);
  }
  
  bool _dontExclude(Commit c) => false;
  