public function setDelegate($delegate)
    {
        if (!$delegate instanceof EventPublisherInterface) {
            throw new \InvalidArgumentException('Delegate: '.get_class($delegate).' does not implement EventPublisherInterface');
        }

        return parent::setDelegate($delegate);
    }