public function setExpression(Expression $expression)
    {
        $expectedType = $this->getExpressionType();
        
        if (ReflectionUtils::isInstanceOf($expression, $expectedType) === true) {
            $this->expression = $expression;
        } else {
            $procClass = get_class($this);
            $givenType = get_class($expression);
            $msg = "The ${procClass} Expression Processor only processes ${expectedType} Expression objects, ${givenType} given.";
            throw new InvalidArgumentException($msg);
        }
        
        $this->expression = $expression;
    }