public function using($middleware = [])
    {
        if (! \is_array($middleware)) {
            $middleware = [ $middleware ];
        }

        foreach ($middleware as $callback) {
            $parts = \explode('|', $callback);
            $args = [];

            if (\count($parts) === 2) {
                $args = \explode(',', $parts[1]);
            }

            $action = $this->get_middleware_action($parts[0]);

            $this->middleware[ $action ] = $args;

            // If we are in a nested group, save this level's stack for later removal.
            if ($this->is_group === true) {
                $this->last_middleware[ $action ] = $args;
            }
        }

        return $this;
    }