public function merge(self $router) {
        if ($this->running) {
            throw new \Error("Cannot merge routers after the server has started");
        }

        foreach ($router->routes as $route) {
            $route[1] = \ltrim($router->prefix, "/") . $route[1];
            $route[2] = Middleware\stack($route[2], ...$router->middlewares);
            $this->routes[] = $route;
        }

        $this->observers->addAll($router->observers);
    }