public function clear($key)
    {
        if (true === $this->isAttribute($key)) {
            return $this->setAttribute($key, null);
        }
        if (true === $this->isEmbedHasOne($key)) {
            return $this->setEmbedHasOne($key, null);
        }
        if (true === $this->isEmbedHasMany($key)) {
            $collection = $this->hasManyEmbeds->get($key);
            $collection->clear();
            $this->doDirtyCheck();
            return $this;
        }
        return $this;
    }