private function _put($attrName, $value = NULL) {
        $this->_checkModify();

        if($value === NULL)
            $this->removeAttribute($attrName);
        elseif($this->hasAttribute($attrName) && method_exists($attr = $this->getAttribute($attrName), "setValue")) {
            /** @var Attribute $attr */
            $attr->setValue($value);
        } else {
            $this->addAttribute(new Attribute($attrName, $value));
        }
    }