anchor.diff:      if (number.isNaN) return symbols.NAN;
       if (number.isInfinite) return "${_signPrefix(number)}${symbols.INFINITY}";
   
  -    _newBuffer();
       _add(_signPrefix(number));
       _formatNumber(number.abs() * _multiplier);
       _add(_signSuffix(number));
   
       var result = _buffer.toString();
  -    _buffer = null;
  +    _buffer.clear();
       return result;
     }
   
  
positive.code:    * of formatting then there will only ever be one number being formatted
     * at a time. In languages with threads we'd need to pass this on the stack.
     */
    StringBuffer _buffer;
  
    /**
     * Create a number format that prints using [newPattern] as it applies in
  
negative.code:   }
  
    /** Variables used in [_parseTrunk] and [parseTrunkCharacter]. */
    var decimalPos = -1;
    var digitLeftCount = 0;
    var zeroDigitCount = 0;
    var digitRightCount = 0;
    var groupingCount = -1;
  
    /**
     * Parse the "trunk" portion of the pattern, the piece that doesn't include
     * positive or negative prefixes or suffixes.
     */
    String _parseTrunk() {
      var loop = true;
      var trunk = new StringBuffer();
      while (pattern.current != null && loop) {
        loop = parseTrunkCharacter(trunk);
      }
  
      if (zeroDigitCount == 0 && digitLeftCount > 0 && decimalPos >= 0) {
  