public function getItem(string $name)
    {
        if (isset($this->__delayItems[$name])) {

            return $this->__delayItems[$name];
        }

        if (!is_callable($this->__delayCtors[$name] ?? false)) {

            throw new Exception(
                "Item {$name} not found.",
                Exception::ITEM_NOT_FOUND
            );
        }

        return $this->__delayItems[$name] = $this->__delayCtors[$name](
            ...$this->__delayCtorArgs
        );
    }