public function setRule(Rule $rule)
    {
        $expectedType = $this->getRuleType();
        
        if (Reflection::isInstanceOf($rule, $expectedType) === true) {
            $this->rule = $rule;
        } else {
            $procClass = get_class($this);
            $givenType = get_class($rule);
            $msg = "The ${procClass} Rule Processor only processes ${expectedType} Rule objects, ${givenType} given.";
            throw new InvalidArgumentException($msg);
        }
    }