<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>
<!DOCTYPE interface-description SYSTEM 'file:///usr/pkgsrc/lang/oo2c/work.macaroon/oo2c_32-2.0.11/rsrc/OOC/xml/interface-description.dtd'>
<interface-description name='URI' id=''>
  <oberon-doc>
    <summary>This module provides the framework for an implementation of RFC 2396, <cite>Uniform Resource Locators (URI): Generic Syntax</cite>.</summary>
    <p pad-after='yes' no-indent='yes'>This module provides the framework for an implementation of RFC 2396, <cite>Uniform Resource Locators (URI): Generic Syntax</cite>.  It defined the abstract types <oberon-type href='#URI'>URI</oberon-type>, <oberon-type href='#OpaqueURI'>OpaqueURI</oberon-type>, and <oberon-type href='#HierarchicalURI'>HierarchicalURI</oberon-type>, together with the abstract base types that represent the authority, query, and fragment component of an URI.  Handling of the path part of a hierarchical URI is delegated to the implementation of <oberon-type href='URI:Scheme:Hierarchical#Generic'>URI:Scheme:Hierarchical.Generic</oberon-type>.  Additionally, this module defines the type <oberon-type href='#Reference'>Reference</oberon-type>, which represents an URI reference.</p>
    <p pad-after='yes' no-indent='no'>Conversion of an URI string into an instance of the data type <oberon-type href='#URI'>URI</oberon-type> is done by <oberon-proc href='URI:Parser#NewURI'>URI:Parser.NewURI</oberon-proc>.  Likewise, <oberon-proc href='URI:Parser#NewReference'>URI:Parser.NewReference</oberon-proc> translates a string into an instance of <oberon-type href='#Reference'>Reference</oberon-type>.</p>
    <p pad-after='yes' no-indent='no'>The modules <samp>URI:Scheme:*</samp> implement concrete specializations of <oberon-type href='#URI'>URI</oberon-type> for various URI scheme identifiers.  Modules named <samp>URI:Authority:*</samp>, <samp>URI:Query:*</samp>, and <samp>URI:Fragment:*</samp> implement concrete authority, query, and fragment instances.</p>
  </oberon-doc>
  <import-decl name='TextRider' id='TextRider' export='no' module='TextRider'/>
  <import-decl name='Object' id='Object' export='no' module='Object'/>
  <import-decl name='Exception' id='Exception' export='no' module='Exception'/>
  <import-decl name='IO' id='IO' export='no' module='IO'/>
  <import-decl name='StringBuffer' id='StringBuffer' export='no' module='ADT:StringBuffer'/>
  <import-decl name='Str' id='Str' export='no' module='URI:String'/>
  <type-decl name='Offset' id='Offset' export='yes'>
    <oberon-doc>
      <summary>A character offset.</summary>
      <p pad-after='yes' no-indent='yes'>A character offset.</p>
    </oberon-doc>
    <type>
      <type-name module='Str' name='Offset' href='URI:String#Offset'/>
    </type>
  </type-decl>
  <const-decl name='channelNew' id='channelNew' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Open the channel on a new resource, truncating any existing resource of the same name.</summary>
      <p pad-after='yes' no-indent='yes'>Open the channel on a new resource, truncating any existing resource of the same name.  Both read and write access is enabled.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='channelTmp' id='channelTmp' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Open the channel on a new resource, but do not register the resource yet.</summary>
      <p pad-after='yes' no-indent='yes'>Open the channel on a new resource, but do not register the resource yet.  Both read and write access is enabled.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='channelOld' id='channelOld' export='yes' value='unknown'>
    <oberon-doc>
      <summary>Open the channel on an old resource.</summary>
      <p pad-after='yes' no-indent='yes'>Open the channel on an old resource.  Only read access is enabled.</p>
    </oberon-doc>
  </const-decl>
  <type-decl name='ChannelMode' id='ChannelMode' export='yes'>
    <oberon-doc>
      <summary>This type is used to signal how <oberon-proc href='#URIDesc.GetChannel'>URI.GetChannel</oberon-proc> should open a channel.</summary>
      <p pad-after='yes' no-indent='yes'>This type is used to signal how <oberon-proc href='#URIDesc.GetChannel'>URI.GetChannel</oberon-proc> should open a channel.  It must be one of <oberon-const href='#channelNew'>channelNew</oberon-const>, <oberon-const href='#channelTmp'>channelTmp</oberon-const>, or <oberon-const href='#channelOld'>channelOld</oberon-const>.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <procedure name='RegisterScheme' id='RegisterScheme' export='yes'>
    <oberon-doc>
      <summary>Registers a new prototype object <oberon-param href='#RegisterScheme.scheme'>scheme</oberon-param> under the name <samp>scheme.schemeId^</samp> in the module's list of supported URI schemes.</summary>
      <p pad-after='yes' no-indent='yes'>Registers a new prototype object <oberon-param href='#RegisterScheme.scheme'>scheme</oberon-param> under the name <samp>scheme.schemeId^</samp> in the module's list of supported URI schemes.  If a previously registered scheme of the same name exists, it is replaced with <oberon-param href='#RegisterScheme.scheme'>scheme</oberon-param>.  Note that case is not distinguished for scheme names.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='scheme' id='RegisterScheme.scheme' export='no' variable-parameter='no'>
        <type>
          <type-name name='URI' href='#URI'/>
        </type>
      </parameter-decl>
    </formal-parameters>
  </procedure>
  <import-decl name='-RT0' id='-RT0' export='no' module='RT0'/>
  <import-decl name='-Object' id='-Object' export='no' module='Object'/>
  <import-decl name='-Exception' id='-Exception' export='no' module='Exception'/>
  <class name='URI'>
    <type-decl name='URI' id='URI' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='URIDesc' href='#URIDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='URIDesc' id='URIDesc' export='yes'>
      <oberon-doc>
        <summary>Abstract base type of all URI variants.</summary>
        <p pad-after='yes' no-indent='yes'>Abstract base type of all URI variants.  This class has one concrete (<oberon-type href='URI:Scheme:CurrentDoc#CurrentDoc'>URI:Scheme:CurrentDoc.CurrentDoc</oberon-type>) and two abstract specializations (<oberon-type href='#HierarchicalURI'>HierarchicalURI</oberon-type> and <oberon-type href='#OpaqueURI'>OpaqueURI</oberon-type>) in this module.  All concrete specializations should be in modules with the name prefix <samp>URI:Scheme:*</samp>.</p>
      </oberon-doc>
      <type>
        <record>
          <field-decl name='schemeId' id='URIDesc.schemeId' export='read-only'>
            <oberon-doc>
              <summary>Scheme part of the URI.</summary>
              <p pad-after='yes' no-indent='yes'>Scheme part of the URI.  For a relative URI (and all instances of <oberon-type href='URI:Scheme:CurrentDoc#CurrentDoc'>URI:Scheme:CurrentDoc.CurrentDoc</oberon-type>), this field is <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='STRING' href='#STRING'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitURI' id='InitURI' export='yes'>
      <formal-parameters>
        <parameter-decl name='uri' id='InitURI.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </parameter-decl>
        <parameter-decl name='schemeId' id='InitURI.schemeId' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Clone' id='URIDesc.Clone' export='yes'>
      <oberon-doc>
        <summary>Creates a deep copy of the URI referenced by <oberon-param href='#URIDesc.Clone.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a deep copy of the URI referenced by <oberon-param href='#URIDesc.Clone.uri'>uri</oberon-param>.  That is, it creates a new instance of <oberon-param href='#URIDesc.Clone.uri'>uri</oberon-param> and calls <oberon-proc href='#URIDesc.Copy'>URI.Copy</oberon-proc> on it.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='URIDesc.Clone.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='URI' href='#URI'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Copy' id='URIDesc.Copy' export='yes'>
      <oberon-doc>
        <summary>Copies contents of source <oberon-param href='#URIDesc.Copy.uri'>uri</oberon-param> to target <oberon-param href='#URIDesc.Copy.dest'>dest</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Copies contents of source <oberon-param href='#URIDesc.Copy.uri'>uri</oberon-param> to target <oberon-param href='#URIDesc.Copy.dest'>dest</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>The dynamic type of <oberon-param href='#URIDesc.Copy.dest'>dest</oberon-param> is an extension of the dynamic type of <oberon-param href='#URIDesc.Copy.uri'>uri</oberon-param>.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='URIDesc.Copy.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='dest' id='URIDesc.Copy.dest' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='SetSchemeId' id='URIDesc.SetSchemeId' export='yes'>
      <oberon-doc>
        <summary>Sets the scheme identifier of <oberon-param href='#URIDesc.SetSchemeId.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Sets the scheme identifier of <oberon-param href='#URIDesc.SetSchemeId.uri'>uri</oberon-param>.  If <oberon-param href='#URIDesc.SetSchemeId.schemeId'>schemeId</oberon-param> is <code>NIL</code>, then <oberon-param href='#URIDesc.SetSchemeId.uri'>uri</oberon-param> is a relative URI.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='URIDesc.SetSchemeId.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='schemeId' id='URIDesc.SetSchemeId.schemeId' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='WriteXML' id='URIDesc.WriteXML' export='yes'>
      <oberon-doc>
        <summary>Writes an XML fragment describing the URI <oberon-param href='#URIDesc.WriteXML.uri'>uri</oberon-param> to the writer <oberon-param href='#URIDesc.WriteXML.w'>w</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Writes an XML fragment describing the URI <oberon-param href='#URIDesc.WriteXML.uri'>uri</oberon-param> to the writer <oberon-param href='#URIDesc.WriteXML.w'>w</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='URIDesc.WriteXML.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='w' id='URIDesc.WriteXML.w' export='no' variable-parameter='no'>
          <type>
            <type-name module='TextRider' name='Writer' href='TextRider#Writer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ToString' id='URIDesc.ToString' export='yes'>
      <oberon-doc>
        <summary>Converts the URI <oberon-param href='#URIDesc.ToString.uri'>uri</oberon-param> to its string representation.</summary>
        <p pad-after='yes' no-indent='yes'>Converts the URI <oberon-param href='#URIDesc.ToString.uri'>uri</oberon-param> to its string representation.  Reserved characters in the URI and characters that may not appear in a valid URI are escaped where necessary.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='URIDesc.ToString.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='Object' name='String8' href='Object#String8'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
    </procedure>
    <procedure name='AppendScheme' id='URIDesc.AppendScheme' export='yes'>
      <oberon-doc>
        <summary>Appends the scheme component of <oberon-param href='#URIDesc.AppendScheme.uri'>uri</oberon-param> to the string <oberon-param href='#URIDesc.AppendScheme.sb'>sb</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Appends the scheme component of <oberon-param href='#URIDesc.AppendScheme.uri'>uri</oberon-param> to the string <oberon-param href='#URIDesc.AppendScheme.sb'>sb</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='URIDesc.AppendScheme.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sb' id='URIDesc.AppendScheme.sb' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringBuffer' name='StringBuffer' href='ADT:StringBuffer#StringBuffer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='MakeRelative' id='URIDesc.MakeRelative' export='yes'>
      <oberon-doc>
        <summary>Converts <oberon-param href='#URIDesc.MakeRelative.uri'>uri</oberon-param> into an URI relative to <oberon-param href='#URIDesc.MakeRelative.baseURI'>baseURI</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Converts <oberon-param href='#URIDesc.MakeRelative.uri'>uri</oberon-param> into an URI relative to <oberon-param href='#URIDesc.MakeRelative.baseURI'>baseURI</oberon-param>.  The result is <oberon-param href='#URIDesc.MakeRelative.uri'>uri</oberon-param> itself, if</p>
        <itemize pad-after='yes'>
          <itemize-mark><bullet/></itemize-mark>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#URIDesc.MakeRelative.baseURI'>baseURI</oberon-param> is <code>NIL</code>,</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#URIDesc.MakeRelative.uri'>uri</oberon-param> is not an extension of <oberon-type href='#HierarchicalURI'>HierarchicalURI</oberon-type>, or</p>
          </item>
          <item pad-after='no'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#URIDesc.MakeRelative.uri'>uri</oberon-param> and <oberon-param href='#URIDesc.MakeRelative.baseURI'>baseURI</oberon-param> have no common base.</p>
          </item>
        </itemize>
        <p pad-after='yes' no-indent='no'>Otherwise, a new URI is constructed that holds only those parts of <oberon-param href='#URIDesc.MakeRelative.uri'>uri</oberon-param>, that cannot be derived from <oberon-param href='#URIDesc.MakeRelative.baseURI'>baseURI</oberon-param>.  The inverse transformation is done by <oberon-proc href='#HierarchicalURIDesc.ResolveRelative'>HierarchicalURI.ResolveRelative</oberon-proc>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='URIDesc.MakeRelative.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='baseURI' id='URIDesc.MakeRelative.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='URI' href='#URI'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='GetChannel' id='URIDesc.GetChannel' export='yes'>
      <oberon-doc>
        <summary>Opens a channel to the resource indicated by URI <oberon-param href='#URIDesc.GetChannel.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Opens a channel to the resource indicated by URI <oberon-param href='#URIDesc.GetChannel.uri'>uri</oberon-param>.  Depending on <oberon-param href='#URIDesc.GetChannel.mode'>mode</oberon-param>, one of these operations is performed:</p>
        <table pad-after='yes'>
          <table-row pad-after='yes'>
            <table-first-column pad-after='no'><oberon-const href='#channelNew'>channelNew</oberon-const></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>Opens a channel to a new instance of the resource.  If the resource exists, it is truncated.  The channel is opened for both read and write access.</p>
            </item>
          </table-row>
          <table-row pad-after='yes'>
            <table-first-column pad-after='no'><oberon-const href='#channelTmp'>channelTmp</oberon-const></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>Opens a channel to a new instance of the resource, but does not register the resource within its naming service.  The channel is opened for both read and write access.  Please note that some channel operations do not support this operation.  For those that do, registration of the resource in the naming service depends on the channel implementation.</p>
            </item>
          </table-row>
          <table-row pad-after='no'>
            <table-first-column pad-after='no'><oberon-const href='#channelOld'>channelOld</oberon-const></table-first-column>
            <item pad-after='no'>
              <p pad-after='no' no-indent='yes'>Opens a channel to an existing resource.  Only read access is enabled.</p>
            </item>
          </table-row>
        </table>
        <p pad-after='yes' no-indent='no'>On success, a channel instance is returned.  On failure, an exception of type <oberon-type href='IO#Error'>IO.Error</oberon-type> is raised.</p>
        <p pad-after='yes' no-indent='no'>Note: Currently, only the <samp>file</samp> URI (<oberon-module href='URI:Scheme:File#'>URI:Scheme:File</oberon-module>) and the <samp>http</samp> URI (<oberon-module href='URI:Scheme:HTTP#'>URI:Scheme:HTTP</oberon-module>) support this method.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='URIDesc.GetChannel.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='mode' id='URIDesc.GetChannel.mode' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='ChannelMode'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name module='IO' name='ByteChannel' href='IO#ByteChannel'/>
        </result-type>
        <exceptions>
          <type-name module='IO' name='Error' href='IO#Error'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='GetScheme' id='GetScheme' export='yes'>
      <oberon-doc>
        <summary>Returns a prototype object for URI scheme <oberon-param href='#GetScheme.name'>name</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Returns a prototype object for URI scheme <oberon-param href='#GetScheme.name'>name</oberon-param>.  If no matching scheme was registered previously with <oberon-proc href='#RegisterScheme'>RegisterScheme</oberon-proc>, <code>NIL</code> is returned.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='name' id='GetScheme.name' export='no' variable-parameter='no'>
          <type>
            <type-name module='Str' name='STRING' href='URI:String#STRING'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='URI' href='#URI'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <base-class module='Object' class='Object' href='Object#Object'>
      <inherited-method module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
      <inherited-method module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
      <inherited-method module='Object' name='ToString' class='Object' href='Object#ObjectDesc.ToString'/>
    </base-class>
  </class>
  <class name='Authority'>
    <type-decl name='Authority' id='Authority' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='AuthorityDesc' href='#AuthorityDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='AuthorityDesc' id='AuthorityDesc' export='yes'>
      <oberon-doc>
        <summary>Authority component of an URI.</summary>
        <p pad-after='yes' no-indent='yes'>Authority component of an URI.  See <oberon-module href='URI:Authority:Unparsed#'>URI:Authority:Unparsed</oberon-module>, <oberon-module href='URI:Authority:ServerBased#'>URI:Authority:ServerBased</oberon-module>, or <oberon-module href='URI:Authority:RegistryBased#'>URI:Authority:RegistryBased</oberon-module> for concrete examples.</p>
      </oberon-doc>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='InitAuthority' id='InitAuthority' export='yes'>
      <formal-parameters>
        <parameter-decl name='auth' id='InitAuthority.auth' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Clone' id='AuthorityDesc.Clone' export='yes'>
      <oberon-doc>
        <summary>Creates a deep copy of the authority component referenced by <oberon-param href='#AuthorityDesc.Clone.auth'>auth</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a deep copy of the authority component referenced by <oberon-param href='#AuthorityDesc.Clone.auth'>auth</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='auth' id='AuthorityDesc.Clone.auth' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Authority' href='#Authority'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Copy' id='AuthorityDesc.Copy' export='yes'>
      <oberon-doc>
        <summary>Copies contents of source <oberon-param href='#AuthorityDesc.Copy.auth'>auth</oberon-param> to target <oberon-param href='#AuthorityDesc.Copy.dest'>dest</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Copies contents of source <oberon-param href='#AuthorityDesc.Copy.auth'>auth</oberon-param> to target <oberon-param href='#AuthorityDesc.Copy.dest'>dest</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>The dynamic type of <oberon-param href='#AuthorityDesc.Copy.dest'>dest</oberon-param> is an extension of the dynamic type of <oberon-param href='#AuthorityDesc.Copy.auth'>auth</oberon-param>.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='auth' id='AuthorityDesc.Copy.auth' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </receiver-decl>
        <parameter-decl name='dest' id='AuthorityDesc.Copy.dest' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ParseAuthority' id='AuthorityDesc.ParseAuthority' export='yes'>
      <oberon-doc>
        <summary>Parses the authority component <oberon-param href='#AuthorityDesc.ParseAuthority.str'>str</oberon-param> of an hierarchical URI.</summary>
        <p pad-after='yes' no-indent='yes'>Parses the authority component <oberon-param href='#AuthorityDesc.ParseAuthority.str'>str</oberon-param> of an hierarchical URI.  On success, the data is stored in the authority object <oberon-param href='#AuthorityDesc.ParseAuthority.auth'>auth</oberon-param> and the result is <code>NIL</code>.  In case of error, a message object is returned and <oberon-param href='#AuthorityDesc.ParseAuthority.auth'>auth</oberon-param> is not modified.  A character position in an error message refers to an index in <oberon-param href='#AuthorityDesc.ParseAuthority.str'>str</oberon-param>, incremented by the value of <oberon-param href='#AuthorityDesc.ParseAuthority.offset'>offset</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='auth' id='AuthorityDesc.ParseAuthority.auth' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='AuthorityDesc.ParseAuthority.str' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='CharsLatin1' href='Object#CharsLatin1'/>
          </type>
        </parameter-decl>
        <parameter-decl name='offset' id='AuthorityDesc.ParseAuthority.offset' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='Offset'/>
          </type>
        </parameter-decl>
        <exceptions>
          <type-name module='Exception' name='ParseError' href='Exception#ParseError'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='WriteXML' id='AuthorityDesc.WriteXML' export='yes'>
      <oberon-doc>
        <summary>Writes an XML fragment describing the authority component to the writer <oberon-param href='#AuthorityDesc.WriteXML.w'>w</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Writes an XML fragment describing the authority component to the writer <oberon-param href='#AuthorityDesc.WriteXML.w'>w</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='auth' id='AuthorityDesc.WriteXML.auth' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </receiver-decl>
        <parameter-decl name='w' id='AuthorityDesc.WriteXML.w' export='no' variable-parameter='no'>
          <type>
            <type-name module='TextRider' name='Writer' href='TextRider#Writer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Append' id='AuthorityDesc.Append' export='yes'>
      <oberon-doc>
        <summary>Appends the textual representation of the authority component <oberon-param href='#AuthorityDesc.Append.auth'>auth</oberon-param> to the string <oberon-param href='#AuthorityDesc.Append.sb'>sb</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Appends the textual representation of the authority component <oberon-param href='#AuthorityDesc.Append.auth'>auth</oberon-param> to the string <oberon-param href='#AuthorityDesc.Append.sb'>sb</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='auth' id='AuthorityDesc.Append.auth' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sb' id='AuthorityDesc.Append.sb' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringBuffer' name='StringBuffer' href='ADT:StringBuffer#StringBuffer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Query'>
    <type-decl name='Query' id='Query' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='QueryDesc' href='#QueryDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='QueryDesc' id='QueryDesc' export='yes'>
      <oberon-doc>
        <summary>Query component of an URI.</summary>
        <p pad-after='yes' no-indent='yes'>Query component of an URI.  See <oberon-module href='URI:Query:Unparsed#'>URI:Query:Unparsed</oberon-module> for a concrete example.</p>
      </oberon-doc>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='InitQuery' id='InitQuery' export='yes'>
      <formal-parameters>
        <parameter-decl name='query' id='InitQuery.query' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Clone' id='QueryDesc.Clone' export='yes'>
      <oberon-doc>
        <summary>Creates a deep copy of the queryority component referenced by <oberon-param href='#QueryDesc.Clone.query'>query</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a deep copy of the queryority component referenced by <oberon-param href='#QueryDesc.Clone.query'>query</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='query' id='QueryDesc.Clone.query' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Query' href='#Query'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Copy' id='QueryDesc.Copy' export='yes'>
      <oberon-doc>
        <summary>Copies contents of source <oberon-param href='#QueryDesc.Copy.query'>query</oberon-param> to target <oberon-param href='#QueryDesc.Copy.dest'>dest</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Copies contents of source <oberon-param href='#QueryDesc.Copy.query'>query</oberon-param> to target <oberon-param href='#QueryDesc.Copy.dest'>dest</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>The dynamic type of <oberon-param href='#QueryDesc.Copy.dest'>dest</oberon-param> is an extension of the dynamic type of <oberon-param href='#QueryDesc.Copy.query'>query</oberon-param>.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='query' id='QueryDesc.Copy.query' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </receiver-decl>
        <parameter-decl name='dest' id='QueryDesc.Copy.dest' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ParseQuery' id='QueryDesc.ParseQuery' export='yes'>
      <oberon-doc>
        <summary>Parses the query component <oberon-param href='#QueryDesc.ParseQuery.str'>str</oberon-param> of an hierarchical URI.</summary>
        <p pad-after='yes' no-indent='yes'>Parses the query component <oberon-param href='#QueryDesc.ParseQuery.str'>str</oberon-param> of an hierarchical URI.  On success, the data is stored in the query object <oberon-param href='#QueryDesc.ParseQuery.query'>query</oberon-param> and the result is <code>NIL</code>.  In case of error, a message object is returned and <oberon-param href='#QueryDesc.ParseQuery.query'>query</oberon-param> is not modified.  A character position in an error message refers to an index in <oberon-param href='#QueryDesc.ParseQuery.str'>str</oberon-param>, incremented by the value of <oberon-param href='#QueryDesc.ParseQuery.offset'>offset</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='query' id='QueryDesc.ParseQuery.query' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='QueryDesc.ParseQuery.str' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='CharsLatin1' href='Object#CharsLatin1'/>
          </type>
        </parameter-decl>
        <parameter-decl name='offset' id='QueryDesc.ParseQuery.offset' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='Offset'/>
          </type>
        </parameter-decl>
        <exceptions>
          <type-name module='Exception' name='ParseError' href='Exception#ParseError'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='WriteXML' id='QueryDesc.WriteXML' export='yes'>
      <oberon-doc>
        <summary>Writes an XML fragment describing the query component to the writer <oberon-param href='#QueryDesc.WriteXML.w'>w</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Writes an XML fragment describing the query component to the writer <oberon-param href='#QueryDesc.WriteXML.w'>w</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='query' id='QueryDesc.WriteXML.query' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </receiver-decl>
        <parameter-decl name='w' id='QueryDesc.WriteXML.w' export='no' variable-parameter='no'>
          <type>
            <type-name module='TextRider' name='Writer' href='TextRider#Writer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Append' id='QueryDesc.Append' export='yes'>
      <oberon-doc>
        <summary>Appends the textual representation of the query component <oberon-param href='#QueryDesc.Append.query'>query</oberon-param> to the string <oberon-param href='#QueryDesc.Append.sb'>sb</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Appends the textual representation of the query component <oberon-param href='#QueryDesc.Append.query'>query</oberon-param> to the string <oberon-param href='#QueryDesc.Append.sb'>sb</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='query' id='QueryDesc.Append.query' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sb' id='QueryDesc.Append.sb' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringBuffer' name='StringBuffer' href='ADT:StringBuffer#StringBuffer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Fragment'>
    <type-decl name='Fragment' id='Fragment' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='FragmentDesc' href='#FragmentDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='FragmentDesc' id='FragmentDesc' export='yes'>
      <oberon-doc>
        <summary>Fragment identifier of an URI.</summary>
        <p pad-after='yes' no-indent='yes'>Fragment identifier of an URI.  See <oberon-module href='URI:Fragment:Unparsed#'>URI:Fragment:Unparsed</oberon-module> for a concrete example.</p>
      </oberon-doc>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='InitFragment' id='InitFragment' export='yes'>
      <formal-parameters>
        <parameter-decl name='frag' id='InitFragment.frag' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Clone' id='FragmentDesc.Clone' export='yes'>
      <oberon-doc>
        <summary>Creates a deep copy of the fragment component referenced by <oberon-param href='#FragmentDesc.Clone.frag'>frag</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a deep copy of the fragment component referenced by <oberon-param href='#FragmentDesc.Clone.frag'>frag</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='frag' id='FragmentDesc.Clone.frag' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Fragment' href='#Fragment'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Copy' id='FragmentDesc.Copy' export='yes'>
      <oberon-doc>
        <summary>Copies contents of source <oberon-param href='#FragmentDesc.Copy.frag'>frag</oberon-param> to target <oberon-param href='#FragmentDesc.Copy.dest'>dest</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Copies contents of source <oberon-param href='#FragmentDesc.Copy.frag'>frag</oberon-param> to target <oberon-param href='#FragmentDesc.Copy.dest'>dest</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>The dynamic type of <oberon-param href='#FragmentDesc.Copy.dest'>dest</oberon-param> is an extension of the dynamic type of <oberon-param href='#FragmentDesc.Copy.frag'>frag</oberon-param>.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='frag' id='FragmentDesc.Copy.frag' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </receiver-decl>
        <parameter-decl name='dest' id='FragmentDesc.Copy.dest' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ParseFragment' id='FragmentDesc.ParseFragment' export='yes'>
      <oberon-doc>
        <summary>Parses the fragment component <oberon-param href='#FragmentDesc.ParseFragment.str'>str</oberon-param> of an URI.</summary>
        <p pad-after='yes' no-indent='yes'>Parses the fragment component <oberon-param href='#FragmentDesc.ParseFragment.str'>str</oberon-param> of an URI.  On success, the data is stored in the fragment object <oberon-param href='#FragmentDesc.ParseFragment.frag'>frag</oberon-param> and the result is <code>NIL</code>.  In case of error, a message object is returned and <oberon-param href='#FragmentDesc.ParseFragment.frag'>frag</oberon-param> is not modified.  A character position in an error message refers to an index in <oberon-param href='#FragmentDesc.ParseFragment.str'>str</oberon-param>, incremented by the value of <oberon-param href='#FragmentDesc.ParseFragment.offset'>offset</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='frag' id='FragmentDesc.ParseFragment.frag' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='FragmentDesc.ParseFragment.str' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='CharsLatin1' href='Object#CharsLatin1'/>
          </type>
        </parameter-decl>
        <parameter-decl name='offset' id='FragmentDesc.ParseFragment.offset' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='Offset'/>
          </type>
        </parameter-decl>
        <exceptions>
          <type-name module='Exception' name='ParseError' href='Exception#ParseError'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='WriteXML' id='FragmentDesc.WriteXML' export='yes'>
      <oberon-doc>
        <summary>Writes an XML fragment describing the fragment identifier to the writer <oberon-param href='#FragmentDesc.WriteXML.w'>w</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Writes an XML fragment describing the fragment identifier to the writer <oberon-param href='#FragmentDesc.WriteXML.w'>w</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='frag' id='FragmentDesc.WriteXML.frag' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </receiver-decl>
        <parameter-decl name='w' id='FragmentDesc.WriteXML.w' export='no' variable-parameter='no'>
          <type>
            <type-name module='TextRider' name='Writer' href='TextRider#Writer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Append' id='FragmentDesc.Append' export='yes'>
      <oberon-doc>
        <summary>Appends the textual representation of the fragment identifier <oberon-param href='#FragmentDesc.Append.frag'>frag</oberon-param> to the string <oberon-param href='#FragmentDesc.Append.sb'>sb</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Appends the textual representation of the fragment identifier <oberon-param href='#FragmentDesc.Append.frag'>frag</oberon-param> to the string <oberon-param href='#FragmentDesc.Append.sb'>sb</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='frag' id='FragmentDesc.Append.frag' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sb' id='FragmentDesc.Append.sb' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringBuffer' name='StringBuffer' href='ADT:StringBuffer#StringBuffer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='HierarchicalURI'>
    <type-decl name='HierarchicalURI' id='HierarchicalURI' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='HierarchicalURIDesc' href='#HierarchicalURIDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='HierarchicalURIDesc' id='HierarchicalURIDesc' export='yes'>
      <oberon-doc>
        <summary>Holds a hierachical URI.</summary>
        <p pad-after='yes' no-indent='yes'>Holds a hierachical URI.</p>
      </oberon-doc>
      <type>
        <record>
          <field-decl name='authority' id='HierarchicalURIDesc.authority' export='read-only'>
            <oberon-doc>
              <summary>Authority component of the URI.</summary>
              <p pad-after='yes' no-indent='yes'>Authority component of the URI.  If there is no authority component, this field is <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='Authority' href='#Authority'/>
            </type>
          </field-decl>
          <field-decl name='query' id='HierarchicalURIDesc.query' export='read-only'>
            <oberon-doc>
              <summary>Query component of the URI.</summary>
              <p pad-after='yes' no-indent='yes'>Query component of the URI.  If the URI has no query component, this field is <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='Query' href='#Query'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitHierarchicalURI' id='InitHierarchicalURI' export='yes'>
      <formal-parameters>
        <parameter-decl name='uri' id='InitHierarchicalURI.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </parameter-decl>
        <parameter-decl name='schemeId' id='InitHierarchicalURI.schemeId' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
        <parameter-decl name='authority' id='InitHierarchicalURI.authority' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </parameter-decl>
        <parameter-decl name='query' id='InitHierarchicalURI.query' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='AuthorityMandatory' id='HierarchicalURIDesc.AuthorityMandatory' export='yes'>
      <oberon-doc>
        <summary>If <code>TRUE</code> and the URI has a scheme component, then require that an authority is present when parsing the URI, and include an empty authority part when converting the URI to a string, if no authority is defined.</summary>
        <p pad-after='yes' no-indent='yes'>If <code>TRUE</code> and the URI has a scheme component, then require that an authority is present when parsing the URI, and include an empty authority part when converting the URI to a string, if no authority is defined.</p>
        <p pad-after='yes' no-indent='no'>By default, this method returns <code>FALSE</code>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.AuthorityMandatory.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='#predef' name='BOOLEAN'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='Copy' id='HierarchicalURIDesc.Copy' export='yes'>
      <doc-inherited-from module='URI' name='Copy' class='URI' href='#URIDesc.Copy'/>
      <oberon-doc>
        <summary>Copies contents of source <oberon-param href='#HierarchicalURIDesc.Copy.uri'>uri</oberon-param> to target <oberon-param href='#HierarchicalURIDesc.Copy.dest'>dest</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Copies contents of source <oberon-param href='#HierarchicalURIDesc.Copy.uri'>uri</oberon-param> to target <oberon-param href='#HierarchicalURIDesc.Copy.dest'>dest</oberon-param>.</p>
        <pre-cond pad-after='yes'>
          <p pad-after='no' no-indent='yes'>The dynamic type of <oberon-param href='#HierarchicalURIDesc.Copy.dest'>dest</oberon-param> is an extension of the dynamic type of <oberon-param href='#HierarchicalURIDesc.Copy.uri'>uri</oberon-param>.</p>
        </pre-cond>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.Copy.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='dest' id='HierarchicalURIDesc.Copy.dest' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </parameter-decl>
      </formal-parameters>
      <redefined-method module='URI' name='Copy' class='URI' href='#URIDesc.Copy'/>
    </procedure>
    <procedure name='NewAuthority' id='HierarchicalURIDesc.NewAuthority' export='yes'>
      <oberon-doc>
        <summary>Creates a new instance of the authority component of URI <oberon-param href='#HierarchicalURIDesc.NewAuthority.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a new instance of the authority component of URI <oberon-param href='#HierarchicalURIDesc.NewAuthority.uri'>uri</oberon-param>.  The new object is subsequently filled in by parsing the authority component of the URI string (see <oberon-proc href='URI:Authority#ParseAuthority'>URI:Authority.ParseAuthority</oberon-proc>).</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.NewAuthority.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Authority' href='#Authority'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='SetAuthority' id='HierarchicalURIDesc.SetAuthority' export='yes'>
      <oberon-doc>
        <summary>Sets the authority component of <oberon-param href='#HierarchicalURIDesc.SetAuthority.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Sets the authority component of <oberon-param href='#HierarchicalURIDesc.SetAuthority.uri'>uri</oberon-param>.  A value of <code>NIL</code> means that the URI has no authority component.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.SetAuthority.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='auth' id='HierarchicalURIDesc.SetAuthority.auth' export='no' variable-parameter='no'>
          <type>
            <type-name name='Authority' href='#Authority'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='NewQuery' id='HierarchicalURIDesc.NewQuery' export='yes'>
      <oberon-doc>
        <summary>Creates a new instance of the query component of URI <oberon-param href='#HierarchicalURIDesc.NewQuery.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Creates a new instance of the query component of URI <oberon-param href='#HierarchicalURIDesc.NewQuery.uri'>uri</oberon-param>.  The new object is subsequently filled in by parsing the query component of the URI string (see <oberon-proc href='URI:Query#ParseQuery'>URI:Query.ParseQuery</oberon-proc>).</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.NewQuery.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Query' href='#Query'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='SetQuery' id='HierarchicalURIDesc.SetQuery' export='yes'>
      <oberon-doc>
        <summary>Sets the query component of <oberon-param href='#HierarchicalURIDesc.SetQuery.uri'>uri</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Sets the query component of <oberon-param href='#HierarchicalURIDesc.SetQuery.uri'>uri</oberon-param>.  A value of <code>NIL</code> means that the URI has no query component.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.SetQuery.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='query' id='HierarchicalURIDesc.SetQuery.query' export='no' variable-parameter='no'>
          <type>
            <type-name name='Query' href='#Query'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ResolveRelative' id='HierarchicalURIDesc.ResolveRelative' export='yes'>
      <oberon-doc>
        <summary>Resolves the relative URI <oberon-param href='#HierarchicalURIDesc.ResolveRelative.uri'>uri</oberon-param> to an absolute URI.</summary>
        <p pad-after='yes' no-indent='yes'>Resolves the relative URI <oberon-param href='#HierarchicalURIDesc.ResolveRelative.uri'>uri</oberon-param> to an absolute URI.  The missing parts of <oberon-param href='#HierarchicalURIDesc.ResolveRelative.uri'>uri</oberon-param> are taken from <oberon-param href='#HierarchicalURIDesc.ResolveRelative.baseURI'>baseURI</oberon-param>.  This is the inverse transformation to <oberon-proc href='#URIDesc.MakeRelative'>URI.MakeRelative</oberon-proc>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.ResolveRelative.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='baseURI' id='HierarchicalURIDesc.ResolveRelative.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ClearPath' id='HierarchicalURIDesc.ClearPath' export='yes'>
      <oberon-doc>
        <summary>Sets the path component of <oberon-param href='#HierarchicalURIDesc.ClearPath.uri'>uri</oberon-param> to the empty path.</summary>
        <p pad-after='yes' no-indent='yes'>Sets the path component of <oberon-param href='#HierarchicalURIDesc.ClearPath.uri'>uri</oberon-param> to the empty path.  Unlike the authority or query component, an URI always includes a path component.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.ClearPath.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ParsePath' id='HierarchicalURIDesc.ParsePath' export='yes'>
      <oberon-doc>
        <summary>Parses the path component <oberon-param href='#HierarchicalURIDesc.ParsePath.str'>str</oberon-param> of an URI.</summary>
        <p pad-after='yes' no-indent='yes'>Parses the path component <oberon-param href='#HierarchicalURIDesc.ParsePath.str'>str</oberon-param> of an URI.  The parameter <oberon-param href='#HierarchicalURIDesc.ParsePath.absolute'>absolute</oberon-param> indicates, whether the path is absolute or relative.  On success, the data is stored in the URI <oberon-param href='#HierarchicalURIDesc.ParsePath.uri'>uri</oberon-param> and the result is <code>NIL</code>.  In case of error, an error message is returned and <oberon-param href='#HierarchicalURIDesc.ParsePath.uri'>uri</oberon-param> is not modified.  A character position in an error message refers to an index in <oberon-param href='#HierarchicalURIDesc.ParsePath.str'>str</oberon-param>, incremented by the value of <oberon-param href='#HierarchicalURIDesc.ParsePath.offset'>offset</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.ParsePath.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='HierarchicalURIDesc.ParsePath.str' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='CharsLatin1' href='Object#CharsLatin1'/>
          </type>
        </parameter-decl>
        <parameter-decl name='absolute' id='HierarchicalURIDesc.ParsePath.absolute' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='BOOLEAN'/>
          </type>
        </parameter-decl>
        <parameter-decl name='offset' id='HierarchicalURIDesc.ParsePath.offset' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='Offset'/>
          </type>
        </parameter-decl>
        <exceptions>
          <type-name module='Exception' name='ParseError' href='Exception#ParseError'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <procedure name='MakeRelative' id='HierarchicalURIDesc.MakeRelative' export='yes'>
      <doc-inherited-from module='URI' name='MakeRelative' class='URI' href='#URIDesc.MakeRelative'/>
      <oberon-doc>
        <summary>Converts <oberon-param href='#HierarchicalURIDesc.MakeRelative.uri'>uri</oberon-param> into an URI relative to <oberon-param href='#HierarchicalURIDesc.MakeRelative.baseURI'>baseURI</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Converts <oberon-param href='#HierarchicalURIDesc.MakeRelative.uri'>uri</oberon-param> into an URI relative to <oberon-param href='#HierarchicalURIDesc.MakeRelative.baseURI'>baseURI</oberon-param>.  The result is <oberon-param href='#HierarchicalURIDesc.MakeRelative.uri'>uri</oberon-param> itself, if</p>
        <itemize pad-after='yes'>
          <itemize-mark><bullet/></itemize-mark>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#HierarchicalURIDesc.MakeRelative.baseURI'>baseURI</oberon-param> is <code>NIL</code>,</p>
          </item>
          <item pad-after='yes'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#HierarchicalURIDesc.MakeRelative.uri'>uri</oberon-param> is not an extension of <oberon-type href='#HierarchicalURI'>HierarchicalURI</oberon-type>, or</p>
          </item>
          <item pad-after='no'>
            <p pad-after='no' no-indent='yes'><oberon-param href='#HierarchicalURIDesc.MakeRelative.uri'>uri</oberon-param> and <oberon-param href='#HierarchicalURIDesc.MakeRelative.baseURI'>baseURI</oberon-param> have no common base.</p>
          </item>
        </itemize>
        <p pad-after='yes' no-indent='no'>Otherwise, a new URI is constructed that holds only those parts of <oberon-param href='#HierarchicalURIDesc.MakeRelative.uri'>uri</oberon-param>, that cannot be derived from <oberon-param href='#HierarchicalURIDesc.MakeRelative.baseURI'>baseURI</oberon-param>.  The inverse transformation is done by <oberon-proc href='#HierarchicalURIDesc.ResolveRelative'>HierarchicalURI.ResolveRelative</oberon-proc>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.MakeRelative.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='baseURI' id='HierarchicalURIDesc.MakeRelative.baseURI' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='URI' href='#URI'/>
        </result-type>
      </formal-parameters>
      <redefined-method module='URI' name='MakeRelative' class='URI' href='#URIDesc.MakeRelative'/>
    </procedure>
    <procedure name='AppendPath' id='HierarchicalURIDesc.AppendPath' export='yes'>
      <oberon-doc>
        <summary>Appends the textual representation of the path component of <oberon-param href='#HierarchicalURIDesc.AppendPath.uri'>uri</oberon-param> to the string <oberon-param href='#HierarchicalURIDesc.AppendPath.sb'>sb</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Appends the textual representation of the path component of <oberon-param href='#HierarchicalURIDesc.AppendPath.uri'>uri</oberon-param> to the string <oberon-param href='#HierarchicalURIDesc.AppendPath.sb'>sb</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='HierarchicalURIDesc.AppendPath.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='HierarchicalURI' href='#HierarchicalURI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='sb' id='HierarchicalURIDesc.AppendPath.sb' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringBuffer' name='StringBuffer' href='ADT:StringBuffer#StringBuffer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <base-class module='URI' class='URI' href='#URI'>
      <inherited-method module='URI' name='AppendScheme' class='URI' href='#URIDesc.AppendScheme'/>
      <inherited-method module='URI' name='Clone' class='URI' href='#URIDesc.Clone'/>
      <inherited-method module='URI' name='Copy' class='URI' href='#URIDesc.Copy'/>
      <inherited-method module='URI' name='GetChannel' class='URI' href='#URIDesc.GetChannel'/>
      <inherited-method module='URI' name='MakeRelative' class='URI' href='#URIDesc.MakeRelative'/>
      <inherited-method module='URI' name='SetSchemeId' class='URI' href='#URIDesc.SetSchemeId'/>
      <inherited-method module='URI' name='ToString' class='URI' href='#URIDesc.ToString'/>
      <inherited-method module='URI' name='WriteXML' class='URI' href='#URIDesc.WriteXML'/>
      <inherited-field module='URI' name='schemeId' class='URI' href='#URIDesc.schemeId'/>
      <base-class module='Object' class='Object' href='Object#Object'>
        <inherited-method module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
        <inherited-method module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
      </base-class>
    </base-class>
  </class>
  <class name='OpaqueURI'>
    <type-decl name='OpaqueURI' id='OpaqueURI' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='OpaqueURIDesc' href='#OpaqueURIDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='OpaqueURIDesc' id='OpaqueURIDesc' export='yes'>
      <oberon-doc>
        <summary>Holds an opaque URI.</summary>
        <p pad-after='yes' no-indent='yes'>Holds an opaque URI.</p>
      </oberon-doc>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='InitOpaqueURI' id='InitOpaqueURI' export='yes'>
      <formal-parameters>
        <parameter-decl name='uri' id='InitOpaqueURI.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='OpaqueURI' href='#OpaqueURI'/>
          </type>
        </parameter-decl>
        <parameter-decl name='schemeId' id='InitOpaqueURI.schemeId' export='no' variable-parameter='no'>
          <type>
            <type-name name='STRING' href='#STRING'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ParseOpaquePart' id='OpaqueURIDesc.ParseOpaquePart' export='yes'>
      <oberon-doc>
        <summary>Parses the opaque component <oberon-param href='#OpaqueURIDesc.ParseOpaquePart.str'>str</oberon-param> of an URI.</summary>
        <p pad-after='yes' no-indent='yes'>Parses the opaque component <oberon-param href='#OpaqueURIDesc.ParseOpaquePart.str'>str</oberon-param> of an URI.  On success, the data is stored in the URI <oberon-param href='#OpaqueURIDesc.ParseOpaquePart.uri'>uri</oberon-param> and the result is <code>NIL</code>.  In case of error, e.g., because <oberon-param href='#OpaqueURIDesc.ParseOpaquePart.str'>str</oberon-param> contains characters that are not allowed in an URI, an error message is returned and <oberon-param href='#OpaqueURIDesc.ParseOpaquePart.uri'>uri</oberon-param> is not modified.  A character position in an error message refers to an index in <oberon-param href='#OpaqueURIDesc.ParseOpaquePart.str'>str</oberon-param>, incremented by the value of <oberon-param href='#OpaqueURIDesc.ParseOpaquePart.offset'>offset</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='uri' id='OpaqueURIDesc.ParseOpaquePart.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='OpaqueURI' href='#OpaqueURI'/>
          </type>
        </receiver-decl>
        <parameter-decl name='str' id='OpaqueURIDesc.ParseOpaquePart.str' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='CharsLatin1' href='Object#CharsLatin1'/>
          </type>
        </parameter-decl>
        <parameter-decl name='offset' id='OpaqueURIDesc.ParseOpaquePart.offset' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='Offset'/>
          </type>
        </parameter-decl>
        <exceptions>
          <type-name module='Exception' name='ParseError' href='Exception#ParseError'/>
        </exceptions>
      </formal-parameters>
    </procedure>
    <base-class module='URI' class='URI' href='#URI'>
      <inherited-method module='URI' name='AppendScheme' class='URI' href='#URIDesc.AppendScheme'/>
      <inherited-method module='URI' name='Clone' class='URI' href='#URIDesc.Clone'/>
      <inherited-method module='URI' name='Copy' class='URI' href='#URIDesc.Copy'/>
      <inherited-method module='URI' name='GetChannel' class='URI' href='#URIDesc.GetChannel'/>
      <inherited-method module='URI' name='MakeRelative' class='URI' href='#URIDesc.MakeRelative'/>
      <inherited-method module='URI' name='SetSchemeId' class='URI' href='#URIDesc.SetSchemeId'/>
      <inherited-method module='URI' name='ToString' class='URI' href='#URIDesc.ToString'/>
      <inherited-method module='URI' name='WriteXML' class='URI' href='#URIDesc.WriteXML'/>
      <inherited-field module='URI' name='schemeId' class='URI' href='#URIDesc.schemeId'/>
      <base-class module='Object' class='Object' href='Object#Object'>
        <inherited-method module='Object' name='Equals' class='Object' href='Object#ObjectDesc.Equals'/>
        <inherited-method module='Object' name='HashCode' class='Object' href='Object#ObjectDesc.HashCode'/>
      </base-class>
    </base-class>
  </class>
  <class name='Reference'>
    <type-decl name='Reference' id='Reference' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='ReferenceDesc' href='#ReferenceDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='ReferenceDesc' id='ReferenceDesc' export='no'>
      <type>
        <record>
          <field-decl name='uri' id='ReferenceDesc.uri' export='read-only'>
            <oberon-doc>
              <summary>The URI part of the URI reference.</summary>
              <p pad-after='yes' no-indent='yes'>The URI part of the URI reference.  This field is never <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='URI' href='#URI'/>
            </type>
          </field-decl>
          <field-decl name='fragment' id='ReferenceDesc.fragment' export='read-only'>
            <oberon-doc>
              <summary>The fragment identifier of the URI reference.</summary>
              <p pad-after='yes' no-indent='yes'>The fragment identifier of the URI reference.  If the reference has no fragment identifier, then this field is <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='Fragment' href='#Fragment'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='NewReference' id='NewReference' export='yes'>
      <formal-parameters>
        <parameter-decl name='uri' id='NewReference.uri' export='no' variable-parameter='no'>
          <type>
            <type-name name='URI' href='#URI'/>
          </type>
        </parameter-decl>
        <parameter-decl name='fragment' id='NewReference.fragment' export='no' variable-parameter='no'>
          <type>
            <type-name name='Fragment' href='#Fragment'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Reference' href='#Reference'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='WriteXML' id='ReferenceDesc.WriteXML' export='yes'>
      <oberon-doc>
        <summary>Writes an XML fragment describing the URI reference <oberon-param href='#ReferenceDesc.WriteXML.ref'>ref</oberon-param> to the writer <oberon-param href='#ReferenceDesc.WriteXML.w'>w</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Writes an XML fragment describing the URI reference <oberon-param href='#ReferenceDesc.WriteXML.ref'>ref</oberon-param> to the writer <oberon-param href='#ReferenceDesc.WriteXML.w'>w</oberon-param>.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='ref' id='ReferenceDesc.WriteXML.ref' export='no' variable-parameter='no'>
          <type>
            <type-name name='Reference' href='#Reference'/>
          </type>
        </receiver-decl>
        <parameter-decl name='w' id='ReferenceDesc.WriteXML.w' export='no' variable-parameter='no'>
          <type>
            <type-name module='TextRider' name='Writer' href='TextRider#Writer'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='ToString' id='ReferenceDesc.ToString' export='yes'>
      <oberon-doc>
        <summary>Converts the URI reference <oberon-param href='#ReferenceDesc.ToString.ref'>ref</oberon-param> to its string representation.</summary>
        <p pad-after='yes' no-indent='yes'>Converts the URI reference <oberon-param href='#ReferenceDesc.ToString.ref'>ref</oberon-param> to its string representation.  Reserved characters in the URI and fragment identifier are escaped where necessary.</p>
      </oberon-doc>
      <formal-parameters>
        <receiver-decl name='ref' id='ReferenceDesc.ToString.ref' export='no' variable-parameter='no'>
          <type>
            <type-name name='Reference' href='#Reference'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name module='Object' name='String8' href='Object#String8'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <module-ref name='URI:Scheme:CurrentDoc'>
    <ref-target type='html' relative-uri='URI/Scheme/CurrentDoc.html'/>
  </module-ref>
  <module-ref name='Exception'>
    <ref-target type='html' relative-uri='Exception.html'/>
  </module-ref>
  <module-ref name='IO'>
    <ref-target type='html' relative-uri='IO.html'/>
  </module-ref>
  <module-ref name='TextRider'>
    <ref-target type='html' relative-uri='TextRider.html'/>
  </module-ref>
  <module-ref name='URI:Scheme:File'>
    <ref-target type='html' relative-uri='URI/Scheme/File.html'/>
  </module-ref>
  <module-ref name='URI:String'>
    <ref-target type='html' relative-uri='URI/String.html'/>
  </module-ref>
  <module-ref name='Object'>
    <ref-target type='html' relative-uri='Object.html'/>
  </module-ref>
  <module-ref name='URI:Authority:ServerBased'>
    <ref-target type='html' relative-uri='URI/Authority/ServerBased.html'/>
  </module-ref>
  <module-ref name='URI:Parser'>
    <ref-target type='html' relative-uri='URI/Parser.html'/>
  </module-ref>
  <module-ref name='URI:Fragment:Unparsed'>
    <ref-target type='html' relative-uri='URI/Fragment/Unparsed.html'/>
  </module-ref>
  <module-ref name='URI:Authority:RegistryBased'>
    <ref-target type='html' relative-uri='URI/Authority/RegistryBased.html'/>
  </module-ref>
  <module-ref name='URI:Scheme:HTTP'>
    <ref-target type='html' relative-uri='URI/Scheme/HTTP.html'/>
  </module-ref>
  <module-ref name='ADT:StringBuffer'>
    <ref-target type='html' relative-uri='ADT/StringBuffer.html'/>
  </module-ref>
  <module-ref name='URI:Authority:Unparsed'>
    <ref-target type='html' relative-uri='URI/Authority/Unparsed.html'/>
  </module-ref>
  <module-ref name='URI:Query:Unparsed'>
    <ref-target type='html' relative-uri='URI/Query/Unparsed.html'/>
  </module-ref>
  <module-ref name='URI:Scheme:Hierarchical'>
    <ref-target type='html' relative-uri='URI/Scheme/Hierarchical.html'/>
  </module-ref>
</interface-description>
