private function resolveRulePrototype()
    {
        if (!isset($this->routeTypeRulePrototypeMap[$this->routeType])) {
            throw new RuntimeException("Unable to resolve rule for route type '$this->routeType'. Route type is not supported.");
        }

        $prototypeClass = $this->routeTypeRulePrototypeMap[$this->routeType];
        $prototype      = $this->dependencyManager->get($prototypeClass);

        if (!($prototype instanceof AbstractRule)) {
            $givenType = get_class($prototype);

            throw new RuntimeException("The resolved rule prototype must inherit from Web\Route\Rule. Rule of type '$givenType' is not valid.");
        }

        $this->rulePrototype = $prototype;
    }