/**
  * Restores a single property marked as versionable
  *
  * @param interface_versionable|class_model $objObject
  * @param class_date $objTimestamp
  * @param $strProperty
  */
 public function restoreProperty(interface_versionable $objObject, class_date $objTimestamp, $strProperty)
 {
     //there are a few properties not to change
     if ($strProperty == "intRecordStatus") {
         return;
     }
     //load the value from the changelog
     $strValue = $this->getValueForDate($objObject->getSystemid(), $strProperty, $objTimestamp);
     if ($strValue === false) {
         $strValue = null;
     }
     //remove the system-id temporary to avoid callbacks and so on
     $strSystemid = $objObject->getSystemid();
     $objObject->unsetSystemid();
     //all prerequisites match, start creating query
     $objReflection = new class_reflection($objObject);
     $strSetter = $objReflection->getSetter($strProperty);
     if ($strSetter !== null) {
         call_user_func(array($objObject, $strSetter), $strValue);
     }
     $objObject->setSystemid($strSystemid);
 }