protected function setEmbedHasOne($key, Embed $embed = null)
    {
        if (null !== $embed) {
            $this->validateEmbedSet($key, $embed->getName());
        }
        $this->touch();
        $this->hasOneEmbeds->set($key, $embed);
        $this->doDirtyCheck();
        return $this;
    }