public function create($class, IDispatcher $dispatcher)
    {
        $subject = $this->reflectionFactory->getClass($class);
        $proxyClassName = 'Proxy' . str_replace('\\', '', $subject->getName());
        $cacheKey = $proxyClassName . '.proxy';
        $result = false;
        $src = $this->cache->fetch($cacheKey, $result);
        if (!$result) {
            $src = $this->createClass(
                $proxyClassName, $dispatcher->getMethodsIntercepted(), $subject
            );
            $this->cache->store($cacheKey, $src);
        }
        eval($src);
        $proxyClassName::setDispatcher($dispatcher);
        $proxyClassName::setReflectionFactory($this->reflectionFactory);
        return $proxyClassName;
    }