<unit name="ok_parse_impl">
  <description><abstract>Parse implementation section.</abstract><detailed> Must be tested with --implementation-comments=join --define PASDOC</detailed></description>
  <routine name="Foo" declaration="procedure Foo;" type="procedure">
    <description><abstract>This is Foo (intf) This is Foo (impl)</abstract></description>
  </routine>
  <routine name="Bar" declaration="procedure Bar;" type="procedure">
    <description><abstract>This is Bar (impl)</abstract></description>
  </routine>
  <routine name="Laz" declaration="procedure Laz;" type="procedure">
    <description><abstract>This is Laz And it must not be doubled</abstract></description>
  </routine>
  <routine name="Dex" declaration="procedure Dex;" type="procedure">
    <description><abstract>This is Dex described inside method body</abstract></description>
  </routine>
  <routine name="NoDescr" declaration="procedure NoDescr;" type="procedure">
  </routine>
  <routine name="Overloaded" declaration="procedure Overloaded; overload;" type="procedure">
    <description><abstract>This is overloaded proc #1</abstract></description>
  </routine>
  <routine name="Overloaded" declaration="procedure Overloaded(a: Byte); overload;" type="procedure">
    <description><abstract>This is overloaded proc #2</abstract></description>
  </routine>
  <routine name=":=" declaration="Operator :=(C : TMyType) z : TMyType;" type="operator">
    <description><abstract>This is assignment operator</abstract></description>
  </routine>
  <structure name="TClass" name_with_generic="TClass" type="class">
    <ancestor name="TObject" declaration="TObject" />
    <routine name="Create" declaration="constructor Create; overload;" visibility="public" type="constructor">
      <description><abstract>Creates instance of TClass</abstract></description>
    </routine>
    <routine name="Create" declaration="class function Create(const S: string): TClass; overload; static; inline;" visibility="public" type="function">
      <description><abstract>Static factory</abstract></description>
    </routine>
    <routine name="Destroy" declaration="destructor Destroy;" visibility="public" type="destructor">
      <description><abstract>Destroys instance of TClass</abstract></description>
    </routine>
    <routine name="Method" declaration="procedure Method;" visibility="public" type="procedure">
      <description><abstract>Does something</abstract></description>
    </routine>
    <routine name="Implicit" declaration="class operator Implicit(const S: string): TClass;" visibility="public" type="operator">
      <description><abstract>Assignment operator</abstract></description>
    </routine>
    <structure name="TInnerClass" visibility="public" name_with_generic="TInnerClass" type="class">
      <ancestor name="TObject" declaration="TObject" />
      <routine name="Method" declaration="procedure Method;" visibility="public" type="procedure">
        <description><abstract>Method of an inner class</abstract></description>
      </routine>
    </structure>
  </structure>
  <structure name="TMyType" name_with_generic="TMyType" type="record">
  </structure>
</unit>
