public function __construct(O\Expression $expression, IParameterHasher $hasher, IFunction $function = null, $data = null)
{
parent::__construct($hasher, $data);
if ($function !== null) {
$this->contextFactory = $function->getEvaluationContextFactory();
$this->evaluator = $expression->asEvaluator($this->contextFactory->getEvaluationContext());
} else {
$this->evaluator = $expression->asEvaluator();
}
$this->data = $data;
}