protected function writeOnce(&$property, $value)
	{
		$sourceEntity = get_class($this);
		if (empty($value)) {
			$this->unlockAll();
			throw new \RuntimeException("Second argument sent to method	$sourceEntity::writeOnce() cannot be empty");
		}
		if ( ! is_object($value)) {
			$this->unlockAll();
			throw new \RuntimeException("Second argument sent to method $sourceEntity::writeOnce() must be an object");
		}
		if ($property === $value) {
			return false;
		}
		if (! empty($property)) {

			$this->unlockAll();

			throw new \RuntimeException(sprintf(
				"The property [%s] is write-once, cannot rewrite with different value for [%]",
				get_class($value),
				$sourceEntity
			));
		}
		$property = $value;

		return true;
	}