anchor.diff:    choices.add(_chunks(groups1, groups2, (sequence) => sequence.isEmpty)
         .map((chunk) => chunk.expand((group) => group))
         .toList());
  -  choices.addAll(finalCombinator);
  +  choices.addAll(finalCombinators);
   
     return paths(choices.where((choice) => choice.isNotEmpty))
         .map((path) => path.expand((group) => group).toList());
  
positive.code:   var queue1 = new Queue<ComplexSelectorComponent>.from(parents1);
    var queue2 = new Queue<ComplexSelectorComponent>.from(parents2);
  
    var initialCombinator = _mergeInitialCombinators(queue1, queue2);
    if (initialCombinator == null) return null;
    var finalCombinator = _mergeFinalCombinators(queue1, queue2);
    if (finalCombinator == null) return null;
  
    // Make sure there's at most one `:root` in the output.
    var root1 = _firstIfRoot(queue1);
  
negative.code:   });
  
    var choices = [
      <Iterable<ComplexSelectorComponent>>[initialCombinators]
    ];
    for (var group in lcs) {
      choices.add(_chunks/*<List<ComplexSelectorComponent>>*/(groups1, groups2,
  