anchor.diff:    /**
      * Takes a string in JSON notation and returns the value it
      * represents.  The resulting value is one of the following:
  -   *   null
  -   *   a bool
  -   *   a double
  -   *   a String
  -   *   an Array of values (recursively)
  -   *   a Map from property names to values (recursively)
  +   *  * null
  +   *  * a bool
  +   *  * a double
  +   *  * a String
  +   *  * an Array of values (recursively)
  +   *  * a Map from property names to values (recursively)
      */
     static Object parse(String str) {
       return _JSON.parse(str, (_, obj) {
  
positive.code: // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
  // for details. All rights reserved. Use of this source code is governed by a
  // BSD-style license that can be found in the LICENSE file.
  
  
negative.code:    * Takes a value and returns a string in JSON notation
     * representing its value, or returns null if the value is not representable
     * in JSON.  A representable value is one of the following:
     *  * null
     *  * a bool
     *  * a double
     *  * a String
     *  * an Array of values (recursively)
     *  * a Map from property names to values (recursively)
     */
    // TODO(jmesserly): handle any List subtype? Right now it's converted as
    // something like:
  