public function getImpl($request)
{
Verify::isTrue($request !== null);
if ($this->impl === null) {
$injected =& $this->injected;
$injected = array();
$this->impl = $this->factory->create($this->class, null, null, function ($src, &$succeeded) use($request, &$injected) {
list($val, $found) = $request->find($src);
$succeeded = $found;
$injected[$src] = $val;
return $val;
});
asort($injected);
}
return $this->impl;
}