anchor.diff:  
   hasNoField(var object, var name) => !hasField(object, name);
   
  -/// Returns [:true:] if [o] is a JavaScript function.
  +/// Returns `true` if [o] is a JavaScript function.
   bool isJsFunction(var o) => JS('bool', r'typeof # == "function"', o);
   
  -/// Returns [:true:] if [o] is a JavaScript object.
  +/// Returns `true` if [o] is a JavaScript object.
   bool isJsObject(var o) => JS('bool', r"typeof # == 'object'", o);
   
   /**
  - * Returns [:true:] if [o] is equal to [:null:], that is either [:null:] or
  - * [:undefined:]. We use this helper to avoid generating code under the invalid
  - * assumption that [o] is a Dart value.
  - */
  -bool isNull(var o) => JS('bool', '# == null', o);
  -
  -/**
  - * Returns [:true:] if [o] is not equal to [:null:], that is neither [:null:]
  - * nor [:undefined:].  We use this helper to avoid generating code under the
  - * invalid assumption that [o] is a Dart value.
  - */
  -bool isNotNull(var o) => JS('bool', '# != null', o);
  -
  -/**
  - * Returns [:true:] if the JavaScript values [s] and [t] are identical. We use
  - * this helper to avoid generating code under the invalid assumption that [s]
  - * and [t] are Dart values.
  + * Returns `true` if the JavaScript values [s] and [t] are identical. We use
  + * this helper instead of [identical] because `identical` needs to merge
  + * `null` and `undefined` (which we can avoid).
    */
   bool isIdentical(var s, var t) => JS('bool', '# === #', s, t);
   
   /**
  - * Returns [:true:] if the JavaScript values [s] and [t] are not identical. We
  - * use this helper to avoid generating code under the invalid assumption that
  - * [s] and [t] are Dart values.
  + * Returns `true` if the JavaScript values [s] and [t] are not identical. We use
  + * this helper instead of [identical] because `identical` needs to merge
  + * `null` and `undefined` (which we can avoid).
    */
   bool isNotIdentical(var s, var t) => JS('bool', '# !== #', s, t);
  
positive.code: }
  
  /**
   * If [allowShorter] is [:true:], [t] is allowed to be shorter than [s].
   */
  bool areAssignable(List s, List t, bool allowShorter) {
    // Both lists are empty and thus equal.
    if (isNull(t) && isNull(s)) return true;
    // [t] is empty (and [s] is not) => only OK if [allowShorter].
    if (isNull(t)) return allowShorter;
    // [s] is empty (and [t] is not) => [s] is not longer or equal to [t].
    if (isNull(s)) return false;
  
    assert(isJsArray(s));
    assert(isJsArray(t));
  
negative.code:  */
  String joinArguments(var types, int startIndex,
                       {String onTypeVariable(int i)}) {
    if (types == null) return '';
    assert(isJsArray(types));
    bool firstArgument = true;
    bool allDynamic = true;
  