public function __construct(callable $callable, \ReflectionFunctionAbstract $innerReflection, IFunctionSignature $signature, IFunctionLocation $location, IFunctionScope $scope)
{
parent::__construct($signature, $location);
$this->callable = $callable;
$this->innerReflection = $innerReflection;
$this->scope = $scope;
//Hashes the signature and location along with the scoped class type due to the
//resolution of scoped class constants (self::, static::, parent::).
//These should be fully qualified in the expression tree hence requiring
//a different hash.
$this->globalHash = md5(implode('!', [$this->scope->getThisType(), $this->locationAndSignatureHash]));
}