public function __set($k, $v)
{
if ($v === "") {
throw new InvalidArgumentException('You cannot set \'' . $k . '\'to an empty string. ' . 'We interpret empty strings as NULL in requests. ' . 'You may set obj->' . $k . ' = NULL to delete the property');
}
if (self::$nestedUpdatableAttributes->includes($k) && isset($this->{$k}) && is_array($v)) {
$this->{$k}->replaceWith($v);
} else {
// TODO: may want to clear from $_transientValues. (Won't be user-visible.)
$this->_values[$k] = $v;
}
if (!self::$permanentAttributes->includes($k)) {
$this->_unsavedValues->add($k);
}
}