code: public function getChildController($controllerName)
      {
          $methodName = $this->parseControllerName($controllerName);
          if (!$this->reflection->hasMethod($methodName)) {
              throw new \RuntimeException("{$this->reflection->getName()}::{$methodName} does not exist");
          }
  
          $controller = $this->reflection->getMethod($methodName)->invokeArgs($this->controller, []);
          if (!is_object($controller) || !$controller instanceof Controller) {
              throw new \RuntimeException("{$this->reflection->getName()}::{$methodName} did not return a Controller");
          }
          return $controller;
      }
docs: Get the child controller object.
  
  Gets the new child controller object from the child controller class
  method. If the method does not exist, or the returned value is not a
  controller object, a \RuntimeException is thrown.
  
  @throws \RuntimeException
  @param $controllerName
  @return Controller