docs: function updateObjectImpl(obj, update, isSelected) {
    if (isSelected(obj)) {
      return update(obj);
    }
    var result = obj;
    var changed = false;
    _lodash2.default.forOwn(obj, function (val, key) {
      var newval = updateValue(val, update, isSelected);
      if (newval === val) {
        return;
      }
      if (!changed) {
        result = _extends({}, obj);
        changed = true;
      }
      result[key] = newval;
    });
    return result;
  }