private function getCloneablesMap()
    {
        $cachedInstantiators = $this->getInstantiatorsMap();
        $that                = $this;

        return self::$cachedCloneables = self::$cachedCloneables
            ?: new CallbackLazyMap(function ($className) use ($cachedInstantiators, $that) {
                /* @var $factory Closure */
                $factory    = $cachedInstantiators->$className;
                $instance   = $factory();

                if (! $that->isSafeToClone(new ReflectionClass($className))) {
                    return null;
                }

                return $instance;
            });
    }