anchor.diff:      // is a supersequence of the other, use that, otherwise give up.
       var lcs = longestCommonSubsequence(combinators1, combinators2);
       if (listEquals(lcs, combinators1)) {
  -      result.addAll([new List.from(combinators2.reversed)]);
  +      result.add([new List.from(combinators2.reversed)]);
       } else if (listEquals(lcs, combinators2)) {
  -      result.addAll([new List.from(combinators1.reversed)]);
  +      result.add([new List.from(combinators1.reversed)]);
       }
       return result;
     }
  
positive.code:   });
  
    var choices = [
      <Iterable<ComplexSelectorComponent>>[initialCombinator]
    ];
    for (var group in lcs) {
      choices.add(_chunks/*<List<ComplexSelectorComponent>>*/(groups1, groups2,
  
negative.code:   choices.add(_chunks(groups1, groups2, (sequence) => sequence.isEmpty)
        .map((chunk) => chunk.expand((group) => group))
        .toList());
    choices.addAll(finalCombinators);
  
    return paths(choices.where((choice) => choice.isNotEmpty))
        .map((path) => path.expand((group) => group).toList());
  