<unit name="ok_type_aliases">
  <routine name="Test" declaration="procedure Test;" type="procedure">
    <description><abstract>Also linking using @tags to arbitrary qualified type identifiers should work: 

<unorderedlist>
<item>TMyClass.TMyNestedClass.TAnotherNestedClass.TOriginalType</item>
<item>ok_type_aliases.TMyClass.TMyNestedClass.TAnotherNestedClass.TOriginalType</item>
<item>TMyClass.TMyNestedClass.TAnotherNestedClass</item>
<item>ok_type_aliases.TMyClass.TMyNestedClass.TAnotherNestedClass</item>
<item>TMyClass.TMyNestedClass</item>
<item>ok_type_aliases.TMyClass.TMyNestedClass</item>
<item>TMyClass</item>
<item>ok_type_aliases.TMyClass</item>
<item>ok_type_aliases</item>
</unorderedlist>

</abstract></description>
  </routine>
  <type name="TWeakAliasType" declaration="TWeakAliasType = TOriginalType;">
    <description><abstract>TOriginalType abstract description</abstract></description>
    <aliased-name>TOriginalType</aliased-name>
  </type>
  <type name="TStrongAliasType" declaration="TStrongAliasType = type TOriginalType;">
    <description><abstract>TOriginalType abstract description</abstract></description>
    <aliased-name>TOriginalType</aliased-name>
  </type>
  <type name="TWeakAliasType2" declaration="TWeakAliasType2 = TOriginalType2;">
    <description><abstract>TOriginalType2 abstract description.</abstract><detailed> More and more description.</detailed></description>
    <aliased-name>TOriginalType2</aliased-name>
  </type>
  <type name="TStrongAliasType2" declaration="TStrongAliasType2 = type TOriginalType2;">
    <description><abstract>TOriginalType2 abstract description.</abstract><detailed> More and more description.</detailed></description>
    <aliased-name>TOriginalType2</aliased-name>
  </type>
  <type name="TWeakAliasType3" declaration="TWeakAliasType3 = TOriginalType3;">
    <description><abstract>Special weak alias abstract.</abstract><detailed> More and more description.</detailed></description>
    <aliased-name>TOriginalType3</aliased-name>
  </type>
  <type name="TStrongAliasType3" declaration="TStrongAliasType3 = type TOriginalType3;">
    <description><abstract>Special strong alias abstract.</abstract><detailed> More and more description.</detailed></description>
    <aliased-name>TOriginalType3</aliased-name>
  </type>
  <type name="TWeakAliasTypeVeryNested" declaration="TWeakAliasTypeVeryNested = TMyClass.TMyNestedClass.TAnotherNestedClass.TOriginalType;">
    <description><abstract>TOriginalType abstract description, inside nested class(es).</abstract><detailed> More and more description.</detailed></description>
    <aliased-name>TMyClass.TMyNestedClass.TAnotherNestedClass.TOriginalType</aliased-name>
  </type>
  <type name="TStrongAliasTypeVeryNested" declaration="TStrongAliasTypeVeryNested = type TMyClass.TMyNestedClass.TAnotherNestedClass.TOriginalType;">
    <description><abstract>TOriginalType abstract description, inside nested class(es).</abstract><detailed> More and more description.</detailed></description>
    <aliased-name>TMyClass.TMyNestedClass.TAnotherNestedClass.TOriginalType</aliased-name>
  </type>
  <type name="TMyContainerAlias" declaration="TMyContainerAlias = TMyContainer;">
    <description><abstract>This class manages a Controls list.</abstract></description>
    <aliased-name>TMyContainer</aliased-name>
  </type>
  <type name="TMyContainerStrongAlias" declaration="TMyContainerStrongAlias = type TMyContainer;">
    <description><abstract>This class manages a Controls list.</abstract></description>
    <aliased-name>TMyContainer</aliased-name>
  </type>
  <type name="UCS4Char" declaration="UCS4Char = type 0..$10ffff;">
    <description><abstract>Alias to subrange type, allowed by FPC (though not by Delphi, at least as of Delphi 12).</abstract></description>
    <aliased-name>0..$10ffff</aliased-name>
  </type>
  <type name="TEnum" declaration="TEnum = (...);">
    <constant name="One" declaration="One">
    </constant>
    <constant name="Two" declaration="Two">
    </constant>
    <constant name="Three" declaration="Three">
    </constant>
  </type>
  <type name="TEnumAlias" declaration="TEnumAlias = type Two..Three;">
    <description><abstract>Alias to subrange type of anums, again allowed only by FPC.</abstract></description>
    <aliased-name>Two..Three</aliased-name>
  </type>
  <structure name="TOriginalType" name_with_generic="TOriginalType" type="record">
    <description><abstract>TOriginalType abstract description</abstract></description>
    <variable name="x" declaration="x: integer " visibility="public">
    </variable>
    <variable name="y" declaration="y: integer " visibility="public">
    </variable>
  </structure>
  <structure name="TOriginalType2" name_with_generic="TOriginalType2" type="record">
    <description><abstract>TOriginalType2 abstract description.</abstract><detailed> More and more description.</detailed></description>
    <variable name="x" declaration="x: integer " visibility="public">
    </variable>
    <variable name="y" declaration="y: integer " visibility="public">
    </variable>
  </structure>
  <structure name="TOriginalType3" name_with_generic="TOriginalType3" type="record">
    <description><abstract>TOriginalType3 abstract description.</abstract><detailed> More and more description.</detailed></description>
    <variable name="x" declaration="x: integer " visibility="public">
    </variable>
    <variable name="y" declaration="y: integer " visibility="public">
    </variable>
  </structure>
  <structure name="TMyClass" name_with_generic="TMyClass" type="class">
    <ancestor name="TObject" declaration="TObject" />
    <structure name="TMyNestedClass" visibility="public" name_with_generic="TMyNestedClass" type="class">
      <ancestor name="TObject" declaration="TObject" />
      <structure name="TAnotherNestedClass" visibility="public" name_with_generic="TAnotherNestedClass" type="class">
        <ancestor name="TObject" declaration="TObject" />
        <structure name="TOriginalType" visibility="public" name_with_generic="TOriginalType" type="record">
          <description><abstract>TOriginalType abstract description, inside nested class(es).</abstract><detailed> More and more description.</detailed></description>
          <variable name="x" declaration="x: integer " visibility="public">
          </variable>
          <variable name="y" declaration="y: integer " visibility="public">
          </variable>
        </structure>
      </structure>
    </structure>
  </structure>
  <structure name="TControls" name_with_generic="TControls" type="class">
    <ancestor name="TObject" declaration="TObject" />
  </structure>
  <structure name="TMyContainer" name_with_generic="TMyContainer" type="class">
    <description><abstract>This class manages a Controls list.</abstract></description>
    <ancestor name="TObject" declaration="TObject" />
    <property name="Controls" declaration="property Controls: TControls read GetControls;" visibility="public" indexdecl="" type="TControls" reader="GetControls" writer="" default_in_class="False" default_value="" nodefault="False"   stored="">
    </property>
  </structure>
</unit>
