public function invoke(
        ControllerContextInterface $context,
        ControllerDispatch $dispatch
    ) {
        /** @var ControllerInterface $controller */
        $controller = $this->createController($dispatch->controllerClass());
        $controller->runWithContext($context);

        $method = $dispatch->handlerMethod();
        $method->invokeArgs($controller, $dispatch->arguments());

        return $controller->data();
    }