anchor.diff:      var compound1 = complex1[i1] as CompoundSelector;
   
       if (remaining1 == 1) {
  -      return compoundIsSuperselector(compound1, complex2.last,
  +      return compoundIsSuperselector(
  +          compound1, complex2.last as CompoundSelector,
             parents: complex2.skip(i2 + 1));
       }
   
  
positive.code:   // allocations...
    var base = new CompoundSelector([new PlaceholderSelector('<temp>')]);
    return complexIsSuperselector(
        complex1..toList().add(base), complex2..toList().add(base));
  }
  
  /// Returns whether [complex1] is a superselector of [complex2].
  
negative.code:   var groups1 = _groupSelectors(queue1);
    var groups2 = _groupSelectors(queue2);
    var lcs = longestCommonSubsequence/*<List<ComplexSelectorComponent>>*/(
        groups2, groups1, select: (group1, group2) {
      if (listEquals(group1, group2)) return group1;
      if (group1.first is! CompoundSelector ||
          group2.first is! CompoundSelector) {
  