anchor.diff:        List<String> denominators2) {
       // Short-circuit without allocating any new unit lists if possible.
       if (numerators1.isEmpty) {
  -      if (denominators1.isEmpty) {
  +      if (denominators2.isEmpty) {
  +        return new SassNumber.withUnits(value,
  +            numeratorUnits: numerators2, denominatorUnits: denominators1);
  +      } else if (denominators1.isEmpty &&
  +          !_areAnyConvertible(numerators1, denominators2)) {
           return new SassNumber.withUnits(value,
               numeratorUnits: numerators2, denominatorUnits: denominators2);
  -      } else if (denominators2.isEmpty) {
  -        return new SassNumber.withUnits(value,
  -            numeratorUnits: numerators2, denominatorUnits: denominators1);
         }
       } else if (numerators2.isEmpty) {
  -      if (denominators1.isEmpty) {
  +      if (denominators2.isEmpty) {
           return new SassNumber.withUnits(value,
               numeratorUnits: numerators1, denominatorUnits: denominators2);
  -      } else if (denominators2.isEmpty) {
  +      } else if (denominators1.isEmpty &&
  +          !_areAnyConvertible(numerators1, denominators2)) {
           return new SassNumber.withUnits(value,
               numeratorUnits: numerators1, denominatorUnits: denominators2);
         }
  
positive.code:         denominatorUnits: mutableDenominators1..addAll(mutableDenominators2));
    }
  
    /// Returns whether [unit] can be converted to or from any other units.
    bool _isConvertable(String unit) => _conversions.containsKey(unit);
  
  
negative.code:         var factor = _conversionFactor(numerator, denominator);
          if (factor == null) return false;
          value *= factor;
          return true;
        }, orElse: () {
          newNumerators.add(numerator);
        });
  