anchor.diff:    final Scope scope;
     final Interpolate interpolate;
     int offset;
  -  Map<String, String> whens = new Map();
  -  Map<Symbol, String> whensOffset = new Map();
  +  Map<String, String> discreteRules = new Map();
  +  Map<Symbol, String> categoryRules = new Map();
     static final RegExp IS_WHEN = new RegExp(r'^when-(minus-)?.');
   
     NgPluralizeDirective(this.scope, this.element, this.interpolate, NodeAttrs attributes) {
  
positive.code:     String stringValue = value.toString();
      int intValue = value is double ? value.round() : value;
  
      if (whens[stringValue] != null) {
        _setAndWatch(whens[stringValue]);
      } else {
        intValue -= offset;
        var exp = Function.apply(Intl.plural, [intValue], whensOffset);
        if (exp != null) {
          exp = exp.replaceAll(r'{}', (value - offset).toString());
          _setAndWatch(exp);
  
negative.code: 
      whens.forEach((k, v) {
        if (['zero', 'one', 'two', 'few', 'many', 'other'].contains(k)) {
          this.categoryRules[new Symbol(k.toString())] = v;
        } else {
          this.discreteRules[k.toString()] = v;
        }
      });
    }
  