private function set_fragment($ifragment)
    {
        if ($ifragment === null)
        {
            $this->ifragment = null;
        }
        else
        {
            $this->ifragment = $this->replace_invalid_with_pct_encoding($ifragment, '!$&\'()*+,;=:@/?');
            $this->scheme_normalization();
        }
        return true;
    }