private function assembleUrl()
    {
        $address = '';
        if (!empty($this->scheme)) {
            $address .= $this->scheme . '://';
        }
        if (!empty($this->user)) {
            $address .= $this->user;
        }
        if (!empty($this->pass)) {
            $address .= ':' . $this->pass . '@';
        }
        if (!empty($this->host)) {
            $address .= $this->host;
        }
        if (!empty($this->port)) {
            $address .= ':' . $this->port;
        }
        if (!empty($this->path)) {
            $address .= $this->path;
        }
        if (count($this->query) > 0) {
            $this->query_string = http_build_query($this->query);
            $address .= '?' . $this->query_string;
        }
        if (!empty($this->fragment)) {
            $address .= '#' . $this->fragment;
        }

        $this->full_address = $address;
    }