public function setContainerClass(string $containerClass)
    {
        if (!\class_exists($containerClass)
            || (
                $containerClass !== DIContainer::class
                && !\is_subclass_of($containerClass, DIContainer::class)
            )
        ) {
            throw new \InvalidArgumentException(
                \sprintf('class "%s" must extend %s', $containerClass, DIContainer::class)
            );
        }

        $this->containerClass = $containerClass;

        return $this;
    }