public function execute(Request $request)
 {
     $key = $request->getKey();
     $definitionsMap = $request->getDefinitionsMap();
     $definition = $definitionsMap[$key];
     $value = $definition->getConcrete();
     return $request->getContainer()->get($value);
 }
 public function execute(Request $request)
 {
     $key = $request->getKey();
     $reflected = new \ReflectionClass($key);
     // abstract class or interface
     if (!$reflected->isInstantiable()) {
         $message = "Unable to resolve [{$reflected->name}]";
         $this->raiseException($message);
     }
     $constructor = $reflected->getConstructor();
     $parameters = array();
     if (!is_null($constructor)) {
         $parameters = $this->getDependencies($constructor, $request->getContainer());
     }
     return !empty($parameters) ? $reflected->newInstanceArgs($parameters) : $reflected->newInstanceArgs();
 }