code: function (subpath, preserve, newValue) {
      var args = Util.resolveArgs(
        arguments,
        function (x) { return Util.canRepresentSubpath(x) ? 'subpath' : null; },
        '?preserve',
        'newValue'
      );
      update(this, args.subpath, merge.bind(null, args.preserve, args.newValue));
      return this;
    }
docs: Deep merge values.
  @param {String|Array} [subpath] subpath as a dot-separated string or an array of strings and numbers
  @param {Boolean} [preserve=false] preserve existing values when merging
  @param {*} newValue new value
  @return {Binding} this binding