public function remove()
{
$this->checkState();
$parentNodeType = $this->getParent()->getPrimaryNodeType();
//will throw a ConstraintViolationException if this property can't be removed
$parentNodeType->canRemoveProperty($this->getName(), true);
$this->getParent()->unsetProperty($this->name);
parent::remove();
}