anchor.diff:      return output.toString();
     }
   
  -  static void printOn(final object, StringBuffer output) {
  +  static void printOn(final object, StringSink output) {
       _JsonStringifier stringifier = new _JsonStringifier(output);
       stringifier.stringifyValue(object);
     }
  
positive.code:   bool stringifyJsonValue(final object) {
      if (object is num) {
        // TODO: use writeOn.
        sb.write(numberToString(object));
        return true;
      } else if (identical(object, true)) {
        sb.write('true');
        return true;
      } else if (identical(object, false)) {
        sb.write('false');
         return true;
      } else if (object == null) {
        sb.write('null');
        return true;
      } else if (object is String) {
        sb.write('"');
        escape(sb, object);
        sb.write('"');
        return true;
      } else if (object is List) {
        checkCycle(object);
        List a = object;
        sb.write('[');
        if (a.length > 0) {
          stringifyValue(a[0]);
          // TODO: switch to Iterables.
          for (int i = 1; i < a.length; i++) {
            sb.write(',');
            stringifyValue(a[i]);
          }
        }
        sb.write(']');
        seen.removeLast();
        return true;
      } else if (object is Map) {
        checkCycle(object);
        Map<String, Object> m = object;
        sb.write('{');
        bool first = true;
        m.forEach((String key, Object value) {
          if (!first) {
            sb.write(',"');
          } else {
            sb.write('"');
          }
          escape(sb, key);
          sb.write('":');
          stringifyValue(value);
          first = false;
        });
        sb.write('}');
        seen.removeLast();
        return true;
      } else {
  
negative.code:  * Serializes [object] into [output] stream.
   *
   * Performs the same operations as [stringify] but outputs the resulting
   * string to an existing [StringSink] instead of creating a new [String].
   *
   * If serialization fails by throwing, some data might have been added to
   * [output], but it won't contain valid JSON text.
   */
  void printOn(Object object, StringSink output) {
    return _JsonStringifier.printOn(object, output);
  }
  
  