public function setDirty($keepChanges = false, $targetState = false)
{
parent::setDirty($keepChanges, $targetState);
foreach ($this->properties as $property) {
if ($keepChanges && self::STATE_NEW !== $property->getState()) {
// if we want to keep changes, we do not want to set new properties dirty.
$property->setDirty($keepChanges, $targetState);
}
}
}