public String getSchemeSpecificPart() {

    StringBuffer schemespec = new StringBuffer();

    if (m_userinfo != null || m_host != null || m_port != -1) {
      schemespec.append("//"); //$NON-NLS-1$
    }

    if (m_userinfo != null) {
      schemespec.append(m_userinfo);
      schemespec.append('@');
    }

    if (m_host != null) {
      schemespec.append(m_host);
    }

    if (m_port != -1) {
      schemespec.append(':');
      schemespec.append(m_port);
    }

    if (m_path != null) {
      schemespec.append( (m_path));
    }

    if (m_queryString != null) {
      schemespec.append('?');
      schemespec.append(m_queryString);
    }

    if (m_fragment != null) {
      schemespec.append('#');
      schemespec.append(m_fragment);
    }

    return schemespec.toString();
  }