View Issue Details

IDProjectCategoryView StatusLast Update
0036989LazarusDocumentationpublic2020-04-30 04:06
ReporterDon Siders Assigned ToMaxim Ganetsky  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
Product Version2.1 (SVN) 
Fixed in Version2.2 
Summary0036989: Corrections for errors and warnings from fpdoc build log
DescriptionThe attached files fix errors and warnings generated by fpdoc when building lcl.chm and lazutils.chm The changes are mainly link ids, but there are a few content updates.

See attached:
fix-links-lazutils.diff
fix-links-lcl.diff
TagsNo tags attached.
Fixed in Revision63092
LazTarget-
Widgetset
Attached Files

Activities

Don Siders

2020-04-29 04:40

reporter  

fix-links-lazutils.diff (206,874 bytes)   
Index: docs/xml/lazutils/avglvltree.xml
===================================================================
--- docs/xml/lazutils/avglvltree.xml	(revision 63090)
+++ docs/xml/lazutils/avglvltree.xml	(working copy)
@@ -2,54 +2,44 @@
 <fpdoc-descriptions>
   <package name="lazutils">
     <!--
-  ====================================================================
-    AvgLvlTree
-  ====================================================================
--->
+    ====================================================================
+      AvgLvlTree
+    ====================================================================
+    -->
     <module name="AvgLvlTree">
-      <short>An Average Level Tree structure, which is kept balanced so that finding a node is very rapid</short>
-      <descr/>
-      <!-- unresolved type reference Visibility: default -->
-      <element name="Classes">
-        <short/>
-        <descr/>
-        <seealso/>
+      <short>
+        An Average Level Tree structure, which is kept balanced so that finding a node is very rapid
+      </short>
+      <descr>
+        <p>
+          Defines classes that use TAvlTree for data storage, and enumerators for them. TAvlTree is an Average Level binary Tree, located in unit AVL_Tree in FPC packages.
+        </p>
+      </descr>
+
+      <element name="Classes"/>
+      <element name="SysUtils"/>
+      <element name="Laz_AVL_Tree"/>
+      <element name="LazFileUtils"/>
+      <element name="LazDbgLog"/>
+
+      <element name="TAvgLvlObjectSortCompare">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- unresolved type reference Visibility: default -->
-      <element name="SysUtils">
-        <short/>
-        <descr/>
-        <seealso/>
+      <element name="TAvgLvlObjectSortCompare.Result">
+        <short></short>
       </element>
-      <!-- unresolved type reference Visibility: default -->
-      <element name="FPCAdds">
-        <short/>
-        <descr/>
-        <seealso/>
+      <element name="TAvgLvlObjectSortCompare.Tree">
+        <short></short>
       </element>
-      <!-- function type Visibility: default -->
-      <element name="TObjectSortCompare">
-        <short/>
-        <descr/>
-        <seealso/>
+      <element name="TAvgLvlObjectSortCompare.Data1">
+        <short></short>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TObjectSortCompare.Result">
-        <short/>
+      <element name="TAvgLvlObjectSortCompare.Data2">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TObjectSortCompare.Tree">
-        <short/>
-      </element>
-      <!-- argument Visibility: default -->
-      <element name="TObjectSortCompare.Data1">
-        <short/>
-      </element>
-      <!-- argument Visibility: default -->
-      <element name="TObjectSortCompare.Data2">
-        <short/>
-      </element>
-      <!-- object Visibility: default -->
+
       <element name="TAvgLvlTreeNode">
         <short>
           <var>TAvgLvlTreeNode</var> - a node, the basic structural element of a <var>TAvgLvlTree</var>
@@ -58,936 +48,1487 @@
         <errors/>
         <seealso/>
       </element>
-      <!-- variable Visibility: public -->
-      <element name="TAvgLvlTreeNode.Parent">
+
+      <element name="TAvgLvlTreeNodeEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TAvgLvlTree">
         <short>
-          <var>Parent</var> - the previous level in the tree</short>
-        <descr/>
+          <var>TAvgLvlTree</var> - an Average Level binary Tree
+        </short>
+        <descr>
+          <p>
+            <var>TAvgLvlTree</var> is an Average Level binary Tree. This binary tree is always balanced, so that inserting, deleting and finding a node is performed in O(log(#Nodes))
+          </p>
+        </descr>
+        <errors/>
         <seealso/>
       </element>
-      <!-- variable Visibility: public -->
-      <element name="TAvgLvlTreeNode.Left">
-        <short>The <var>Left</var> descendant branch node in the tree</short>
-        <descr/>
-        <seealso/>
+
+      <element name="TAvgLvlTree.FOwnsObjexts"/>
+      <element name="TAvgLvlTree.GetObjectCompare"/>
+      <element name="TAvgLvlTree.GetObjectCompare.Result"/>
+      <element name="TAvgLvlTree.SetObjectCompare"/>
+      <element name="TAvgLvlTree.SetObjectCompare.AValue"/>
+
+      <element name="TAvgLvlTree.CreateObjectCompare">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- variable Visibility: public -->
-      <element name="TAvgLvlTreeNode.Right">
-        <short>The <var>Right</var> descendant branch node in the tree</short>
-        <descr/>
-        <seealso/>
+      <element name="TAvgLvlTree.CreateObjectCompare.OnCompareMethod">
+        <short></short>
       </element>
-      <!-- variable Visibility: public -->
-      <element name="TAvgLvlTreeNode.Balance">
-        <short>
-          <var>Balance</var> - should be 0 for perfect balance, -1 or +1 for one extra node on either side, more than (+ or -) 1 means tree is unbalanced and needs to be fixed</short>
-        <descr/>
-        <seealso/>
+
+      <element name="TAvgLvlTree.DisposeNode">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- variable Visibility: public -->
-      <element name="TAvgLvlTreeNode.Data">
-        <short>A pointer to the actual <var>Data</var> associated with the node</short>
+      <element name="TAvgLvlTree.DisposeNode.ANode">
+        <short></short>
+      </element>
+
+      <element name="TAvgLvlTree.FreeAndDelete">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TAvgLvlTree.FreeAndDelete.ANode">
+        <short></short>
+      </element>
+
+      <element name="TAvgLvlTree.OwnsObjects">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TAvgLvlTree.OnObjectCompare">
+        <short>Same as OnCompare, but with a method instead of a procedure.</short>
         <descr/>
         <seealso/>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTreeNode.Clear">
+
+      <element name="TAvgLvlTreeClass">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TIndexedAVLTreeNode" link="TAVLTreeNode">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TIndexedAVLTreeNode.LeftCount">
+        <short>The number of nodes in the Left side</short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TIndexedAVLTree" link="TAvgLvlTree">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TIndexedAVLTree.GetItems"/>
+
+      <element name="TIndexedAVLTree.FLastIndex">
+        <short></short>
+      </element>
+      <element name="TIndexedAVLTree.FLastNode">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.DeletingNode">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.DeletingNode.ANode">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.Init">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TIndexedAVLTree.NodeAdded">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.NodeAdded.ANode">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.RotateLeft">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.RotateLeft.ANode">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.RotateRight">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.RotateRight.ANode">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.SwitchPositionWithSuccessor">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.SwitchPositionWithSuccessor.ANode">
+        <short></short>
+      </element>
+      <element name="TIndexedAVLTree.SwitchPositionWithSuccessor.ASuccessor">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.GetNodeAtIndex">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.GetNodeAtIndex.Result">
+        <short></short>
+      </element>
+      <element name="TIndexedAVLTree.GetNodeAtIndex.Index">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.NodeToIndex">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.NodeToIndex.Result">
+        <short></short>
+      </element>
+      <element name="TIndexedAVLTree.NodeToIndex.Node">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.IndexOf">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.IndexOf.Result">
+        <short></short>
+      </element>
+      <element name="TIndexedAVLTree.IndexOf.Data">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.Items">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.Items.Index">
+        <short></short>
+      </element>
+
+      <element name="TIndexedAVLTree.ConsistencyCheck">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TIndexedAVLTree.NodeToReportStr">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TIndexedAVLTree.NodeToReportStr.Result">
+        <short></short>
+      </element>
+      <element name="TIndexedAVLTree.NodeToReportStr.ANode">
+        <short></short>
+      </element>
+
+      <element name="TPointerToPointerItem">
         <short>
-          <var>Clear</var> - remove all the branches leaving an empty tree</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+          <var>TPointerToPointerItem</var> - an item in a PointerToPointer Tree (associative array)
+        </short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTreeNode.TreeDepth">
+      <element name="TPointerToPointerItem.Key">
         <short>
-          <var>TreeDepth</var> - the number of levels in the tree structure, by the longest way down</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+          The <var>Key</var> defining the pointer item
+        </short>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTreeNode.TreeDepth.Result">
-        <short/>
+      <element name="TPointerToPointerItem.Value">
+        <short>
+          The <var>Value</var> of the pointer item
+        </short>
       </element>
-      <!-- pointer type Visibility: default -->
-      <element name="PAvgLvlTreeNode">
+
+      <element name="PPointerToPointerItem">
         <short>
-          <var>PAvgLvlTreeNode</var> - pointer to a <var>TAvgLvlTreeNode</var>
+          <var>PPointerToPointerItem</var> - a pointer to a <var>TPointerToPointerItem</var>
         </short>
-        <descr/>
-        <seealso/>
       </element>
-      <!-- object Visibility: default -->
-      <element name="TAvgLvlTree">
+
+      <element name="TPointerToPointerEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TPointerToPointerEnumerator.FHighToLow"/>
+      <element name="TPointerToPointerEnumerator.FTree"/>
+      <element name="TPointerToPointerEnumerator.FCurrent"/>
+
+      <element name="TPointerToPointerEnumerator.GetCurrent">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TPointerToPointerEnumerator.GetCurrent.Result">
+        <short></short>
+      </element>
+
+      <element name="TPointerToPointerEnumerator.Create">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TPointerToPointerEnumerator.Create.Tree">
+        <short></short>
+      </element>
+
+      <element name="TPointerToPointerEnumerator.GetEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TPointerToPointerEnumerator.GetEnumerator.Result">
+        <short></short>
+      </element>
+
+      <element name="TPointerToPointerEnumerator.MoveNext">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TPointerToPointerEnumerator.MoveNext.Result">
+        <short></short>
+      </element>
+
+      <element name="TPointerToPointerEnumerator.Current">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TPointerToPointerEnumerator.HighToLow">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TPointerToPointerTree">
         <short>
-          <var>TAvgLvlTree</var> - an Average Level binary Tree</short>
+          <var>TPointerToPointerTree</var>is an associative array of PointerToPointer Items, or a tree of trees
+        </short>
         <descr>
-          <var>TAvgLvlTree</var> is an Average Level binary Tree. This binary tree is always balanced, so that inserting, deleting and finding a node is performed in O(log(#Nodes))</descr>
-        <errors/>
-        <seealso/>
+          <p>
+            <var>TPointerToPointerTree</var> is an associative array of PointerToPointer Items, or a tree of trees. This class uses pointers to identify pointers within the array, unlike the <var>TStringToStringTree</var>, which uses strings to identify strings.
+          </p>
+        </descr>
       </element>
-      <!-- variable Visibility: private -->
-      <element name="TAvgLvlTree.FCount">
-        <short/>
-        <descr/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.FItems"/>
+
+      <element name="TPointerToPointerTree.GetCount"/>
+      <element name="TPointerToPointerTree.GetCount.Result"/>
+      <element name="TPointerToPointerTree.GetValues"/>
+      <element name="TPointerToPointerTree.GetValues.Result"/>
+      <element name="TPointerToPointerTree.GetValues.Key"/>
+      <element name="TPointerToPointerTree.SetValues"/>
+      <element name="TPointerToPointerTree.SetValues.Key"/>
+      <element name="TPointerToPointerTree.SetValues.AValue"/>
+      <element name="TPointerToPointerTree.FindNode"/>
+      <element name="TPointerToPointerTree.FindNode.Result"/>
+      <element name="TPointerToPointerTree.FindNode.Key"/>
+      <element name="TPointerToPointerTree.GetNode"/>
+      <element name="TPointerToPointerTree.GetNode.Result"/>
+      <element name="TPointerToPointerTree.GetNode.Node"/>
+      <element name="TPointerToPointerTree.GetNode.Key"/>
+      <element name="TPointerToPointerTree.GetNode.Value"/>
+
+      <element name="TPointerToPointerTree.Create">
+        <short>Constructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Create</var> is the constructor for <var>TPointerToPointerTree</var>.
+          </p>
+        </descr>
+        <seealso></seealso>
       </element>
-      <!-- variable Visibility: private -->
-      <element name="TAvgLvlTree.FOnCompare">
-        <short/>
-        <descr/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.Destroy">
+        <short>Destructor for the class instance</short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- variable Visibility: private -->
-      <element name="TAvgLvlTree.FOnObjectCompare">
-        <short/>
-        <descr/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.Clear">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- procedure Visibility: private -->
-      <element name="TAvgLvlTree.BalanceAfterInsert">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.ClearWithFree">
+        <short>Frees objects stored in Values</short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.BalanceAfterInsert.ANode">
-        <short/>
+
+      <element name="TPointerToPointerTree.Equals">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- procedure Visibility: private -->
-      <element name="TAvgLvlTree.BalanceAfterDelete">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TPointerToPointerTree.Equals.Result">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.BalanceAfterDelete.ANode">
-        <short/>
+      <element name="TPointerToPointerTree.Equals.Obj">
+        <short></short>
       </element>
-      <!-- function Visibility: private -->
-      <element name="TAvgLvlTree.FindInsertPos">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.IsEqual">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindInsertPos.Result">
-        <short/>
+      <element name="TPointerToPointerTree.IsEqual.Result">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindInsertPos.Data">
-        <short/>
+      <element name="TPointerToPointerTree.IsEqual.ATree">
+        <short></short>
       </element>
-      <!-- procedure Visibility: private -->
-      <element name="TAvgLvlTree.SetOnCompare">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.Assign">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.SetOnCompare.AValue">
-        <short/>
+      <element name="TPointerToPointerTree.Assign.ATree">
+        <short></short>
       </element>
-      <!-- procedure Visibility: private -->
-      <element name="TAvgLvlTree.SetOnObjectCompare">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.Remove">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.SetOnObjectCompare.AValue">
-        <short/>
+      <element name="TPointerToPointerTree.Remove.Key">
+        <short></short>
       </element>
-      <!-- procedure Visibility: private -->
-      <element name="TAvgLvlTree.SetCompares">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.Contains">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.SetCompares.NewCompare">
-        <short/>
+      <element name="TPointerToPointerTree.Contains.Result">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.SetCompares.NewObjectCompare">
-        <short/>
+      <element name="TPointerToPointerTree.Contains.Key">
+        <short></short>
       </element>
-      <!-- variable Visibility: public -->
-      <element name="TAvgLvlTree.Root">
+
+      <element name="TPointerToPointerTree.GetFirst">
         <short>
-          <var>Root</var> - the starting node of the tree structure</short>
+          <var>GetFirst</var> - finds the first node matching the supplied arguments; returns True if successful
+        </short>
         <descr/>
         <seealso/>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.Compare">
-        <short>Compare two data. For every two nodes of the tree holds: Compare(Left,Right)</short>
+      <element name="TPointerToPointerTree.GetFirst.Key">
+        <short></short>
+      </element>
+      <element name="TPointerToPointerTree.GetFirst.Value">
+        <short></short>
+      </element>
+
+      <element name="TPointerToPointerTree.GetLast">
+        <short>
+          <var>GetLast</var> - finds the last node matching the supplied arguments; returns True if successful
+        </short>
         <descr/>
-        <errors/>
         <seealso/>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.Compare.Result">
-        <short/>
+      <element name="TPointerToPointerTree.GetLast.Result">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.Compare.Data1">
-        <short/>
+      <element name="TPointerToPointerTree.GetLast.Key">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.Compare.Data2">
-        <short/>
+      <element name="TPointerToPointerTree.GetLast.Value">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.Find">
-        <short>Find node with a Data of the same key. The found Node.Data need not be the same as the Data parameter.</short>
+
+      <element name="TPointerToPointerTree.GetNext">
+        <short>
+          <var>GetNext</var> - finds the next node matching the supplied arguments; returns True if successful
+        </short>
         <descr/>
-        <errors/>
         <seealso/>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.Find.Result">
-        <short/>
+      <element name="TPointerToPointerTree.GetNext.Result">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.Find.Data">
-        <short/>
+      <element name="TPointerToPointerTree.GetNext.Key">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindKey">
-        <short>Search a node with the same key. OnCompareKeyWithData first parameter is the key, second the Node.Data.</short>
+      <element name="TPointerToPointerTree.GetNext.NextKey">
+        <short></short>
+      </element>
+      <element name="TPointerToPointerTree.GetNext.NextValue">
+        <short></short>
+      </element>
+
+      <element name="TPointerToPointerTree.GetPrev">
+        <short>
+          <var>GetPrev</var> - finds the previous node matching the supplied arguments; returns True if successful
+        </short>
         <descr/>
-        <errors/>
         <seealso/>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindKey.Result">
-        <short/>
+      <element name="TPointerToPointerTree.GetPrev.Result">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindKey.Key">
-        <short/>
+      <element name="TPointerToPointerTree.GetPrev.Key">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindKey.OnCompareKeyWithData">
-        <short/>
+      <element name="TPointerToPointerTree.GetPrev.PrevKey">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindSuccessor">
-        <short>Find the next node to the right with the next higher value.</short>
+      <element name="TPointerToPointerTree.GetPrev.PrevValue">
+        <short></short>
+      </element>
+
+      <element name="TPointerToPointerTree.Count">
+        <short>
+          <var>Count</var> - the number of items
+        </short>
         <descr/>
-        <errors/>
         <seealso/>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindSuccessor.Result">
-        <short/>
+
+      <element name="TPointerToPointerTree.Values">
+        <short>
+          <var>Values</var> - a pointer into the array of values associated with the nodes
+        </short>
+        <descr/>
+        <seealso/>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindSuccessor.ANode">
-        <short/>
+      <element name="TPointerToPointerTree.Values.Key">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindPrecessor">
-        <short>Find the next node to the left with the next lower value.</short>
+
+      <element name="TPointerToPointerTree.Tree">
+        <short>
+          The <var>Tree</var> that forms the basis of the associative array
+        </short>
         <descr/>
-        <errors/>
         <seealso/>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindPrecessor.Result">
-        <short/>
+
+      <element name="TPointerToPointerTree.GetEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindPrecessor.ANode">
-        <short/>
+      <element name="TPointerToPointerTree.GetEnumerator.Result">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindLowest">
-        <short>Find the left most node.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TPointerToPointerTree.GetEnumeratorHighToLow">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindLowest.Result">
-        <short/>
+      <element name="TPointerToPointerTree.GetEnumeratorHighToLow.Result">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindHighest">
-        <short>Find the right most node.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TStringMapItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindHighest.Result">
-        <short/>
+      <element name="TStringMapItem.Name">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindNearest">
-        <short>Find a node with the same key. If no node with exact the same key exists a node left or right is returned.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="PStringMapItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindNearest.Result">
-        <short/>
+
+      <element name="TCustomStringMapEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindNearest.Data">
-        <short/>
+
+      <element name="TCustomStringMapEnumerator.FTree"/>
+      <element name="TCustomStringMapEnumerator.FCurrent"/>
+
+      <element name="TCustomStringMapEnumerator.Create">
+        <short>Constructor for the class instance</short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindPointer">
-        <short>As Find, but Key and Data must be the same.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMapEnumerator.Create.Tree">
+        <short></short>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindPointer.Result">
-        <short/>
+
+      <element name="TCustomStringMapEnumerator.MoveNext">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindPointer.Data">
-        <short/>
+      <element name="TCustomStringMapEnumerator.MoveNext.Result">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindLeftMost">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindLeftMost.Result">
-        <short/>
+
+      <element name="TCustomStringMap.FCompareKeyItemFunc"/>
+      <element name="TCustomStringMap.FTree"/>
+      <element name="TCustomStringMap.FCaseSensitive"/>
+
+      <element name="TCustomStringMap.GetCompareItemsFunc">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindLeftMost.Data">
-        <short/>
+      <element name="TCustomStringMap.GetCompareItemsFunc.Result">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindRightMost">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap.DisposeItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindRightMost.Result">
-        <short/>
+      <element name="TCustomStringMap.DisposeItem.P">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindRightMost.Data">
-        <short/>
+
+      <element name="TCustomStringMap.ItemsAreEqual">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindLeftMostKey">
-        <short>As FindKey, but if there are several nodes with the same key, the left most is returned</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMap.ItemsAreEqual.Result">
+        <short></short>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindLeftMostKey.Result">
-        <short/>
+      <element name="TCustomStringMap.ItemsAreEqual.P1">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindLeftMostKey.Key">
-        <short/>
+      <element name="TCustomStringMap.ItemsAreEqual.P2">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindLeftMostKey.OnCompareKeyWithData">
-        <short/>
+
+      <element name="TCustomStringMap.CreateCopy">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindRightMostKey">
-        <short>As FindKey, but if there are several nodes with the same key, the right most is returned</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMap.CreateCopy.Result">
+        <short></short>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindRightMostKey.Result">
-        <short/>
+      <element name="TCustomStringMap.CreateCopy.Src">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindRightMostKey.Key">
-        <short/>
+
+      <element name="TCustomStringMap.Create">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindRightMostKey.OnCompareKeyWithData">
-        <short/>
+      <element name="TCustomStringMap.Create.TheCaseSensitive">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindLeftMostSameKey">
-        <short>Starts at ANode and returns the left most node with the same key as ANode.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMap.Create.ACompareItems">
+        <short></short>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindLeftMostSameKey.Result">
-        <short/>
+      <element name="TCustomStringMap.Create.ACompareNameWithItem">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindLeftMostSameKey.ANode">
-        <short/>
+      <element name="TCustomStringMap.Create.ACompareNameWithItem">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.FindRightMostSameKey">
-        <short>Starts at ANode and returns the left most node with the same key as ANode.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap.Destroy">
+        <short>Destructor for the class instance</short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.FindRightMostSameKey.Result">
-        <short/>
+
+      <element name="TCustomStringMap.Clear">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FindRightMostSameKey.ANode">
-        <short/>
+
+      <element name="TCustomStringMap.Contains">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.Add">
-        <short>Adds a node to the tree</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMap.Contains.Result">
+        <short></short>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.Add.Result">
-        <short/>
+      <element name="TCustomStringMap.Contains.S">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.Add.ANode">
-        <short/>
+
+      <element name="TCustomStringMap.GetNames">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.Add.Data">
-        <short/>
+      <element name="TCustomStringMap.GetNames.List">
+        <short></short>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.Delete">
-        <short>Removes and frees a node. The data is not freed (See FreeAndDelete).</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap.Remove">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.Delete.ANode">
-        <short/>
+      <element name="TCustomStringMap.Remove.Name">
+        <short></short>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.Remove">
-        <short>if the Data with the same key exists one node is removed.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap.CaseSensitive">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.Remove.Data">
-        <short/>
+
+      <element name="TCustomStringMap.Tree">
+        <short>Tree containing PStringMapItem pointers</short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.RemovePointer">
-        <short>RemovePointer - if the Data with the same pointer exists one pointer is removed.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap.FindNode">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.RemovePointer.Data">
-        <short/>
+      <element name="TCustomStringMap.FindNode.Result">
+        <short></short>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.MoveDataLeftMost">
-        <short>If there are several nodes with the same Key as ANode, the node is moved left most of this group.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMap.FindNode.S">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.MoveDataLeftMost.ANode">
-        <short/>
+
+      <element name="TCustomStringMap.Count">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.MoveDataRightMost">
-        <short>If there are several nodes with the same Key as ANode, the node is moved right most of this group.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMap.Count.Result">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.MoveDataRightMost.ANode">
-        <short/>
+
+      <element name="TCustomStringMap.Equals">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- property Visibility: public -->
-      <element name="TAvgLvlTree.OnCompare">
-        <short>
-          <var>OnCompare</var> - user-supplied event handler to define your own sorting. The tree will be rebuilt without losing data.</short>
-        <descr/>
-        <seealso/>
+      <element name="TCustomStringMap.Equals.Result">
+        <short></short>
       </element>
-      <!-- property Visibility: public -->
-      <element name="TAvgLvlTree.OnObjectCompare">
-        <short>Same as OnCompare, but with a method instead of a procedure.</short>
-        <descr/>
-        <seealso/>
+      <element name="TCustomStringMap.Equals.OtherTree">
+        <short></short>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.Clear">
-        <short>Delete all nodes without freeing the data. Calls <var>Clear</var> then performs inherited <var>Destroy</var>
-        </short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap.Assign">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.FreeAndClear">
-        <short>Delete all nodes and call TObject(Node.Data).Free on every data.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMap.Assign.Source">
+        <short></short>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.FreeAndDelete">
-        <short>Call TObject(ANode.Data).Free then delete the node.</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap.CalcMemSize">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.FreeAndDelete.ANode">
-        <short/>
+      <element name="TCustomStringMap.CalcMemSize.Result">
+        <short></short>
       </element>
-      <!-- property Visibility: public -->
-      <element name="TAvgLvlTree.Count">
-        <short>
-          <var>Count</var> - number of nodes</short>
-        <descr/>
-        <seealso/>
+
+      <element name="TCustomStringMap.CompareItemsFunc">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.ConsistencyCheck">
-        <short>
-          <var>ConsistencyCheck</var> - checks that the root node exists and that the tree is correctly balanced with valid nodes on each level</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TCustomStringMap.CompareKeyItemsFunc">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.ConsistencyCheck.Result">
-        <short/>
+
+      <element name="TCustomStringMap.SetCompareFuncs">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTree.WriteReportToStream">
-        <short>
-          <var>WriteReportToStream</var> - sends a status report to the current data stream</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TCustomStringMap.SetCompareFuncs.NewCompareItemsFunc">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.WriteReportToStream.s">
-        <short/>
+
+      <element name="TStringMapEnumerator" link="TCustomStringMapEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.WriteReportToStream.StreamSize">
-        <short/>
+
+      <element name="TStringMapEnumerator.GetCurrent">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTree.ReportAsString">
-        <short>
-          <var>ReportAsString</var> returns the status report sent to the stream, as a string</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TStringMapEnumerator.GetCurrent.Result">
+        <short></short>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTree.ReportAsString.Result">
-        <short/>
+
+      <element name="TStringMapEnumerator.Current">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- constructor Visibility: public -->
-      <element name="TAvgLvlTree.Create">
-        <short>
-          <var>Create</var> - constructor for <var>TAvgLvlTree</var>, allowing the comparison method to be passed as an argument. Performs Inherited Create and copies the specified comparison method to a local variable
-        </short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TStringMap" link="TCustomStringMap">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.Create.OnCompareMethod">
-        <short/>
+
+      <element name="TStringMap.GetValues">
+        <short></short>
       </element>
-      <!-- constructor Visibility: public -->
-      <element name="TAvgLvlTree.CreateObjectCompare">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TStringMap.GetValues.Result">
+        <short></short>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTree.CreateObjectCompare.OnCompareMethod">
-        <short/>
+      <element name="TStringMap.GetValues.S">
+        <short></short>
       </element>
-      <!-- destructor Visibility: public -->
-      <element name="TAvgLvlTree.Destroy">
-        <short>
-          <var>Destroy</var> - destructor for <var>TAvgLvlTree</var>: </short>
-        <descr/>
-        <errors/>
-        <seealso>
-          <link id="#rtl.System.TObject.Destroy"/>
-        </seealso>
+
+      <element name="TStringMap.SetValues">
+        <short></short>
       </element>
-      <!-- pointer type Visibility: default -->
-      <element name="PAvgLvlTree">
+      <element name="TStringMap.SetValues.S">
+        <short></short>
+      </element>
+      <element name="TStringMap.SetValues.AValue">
+        <short></short>
+      </element>
+
+      <element name="TStringMap.Add">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringMap.Add.Name">
+        <short></short>
+      </element>
+
+      <element name="TStringMap.GetEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringMap.GetEnumerator.Result">
+        <short></short>
+      </element>
+
+      <element name="TStringMap.Values">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringMap.Values.S">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TStringToStringItem.Name">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TStringToStringItem.Value">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="PStringToStringItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TStringToStringTreeEnumerator" link="TCustomStringMapEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TStringToStringTreeEnumerator.GetCurrent">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTreeEnumerator.GetCurrent.Result">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTreeEnumerator.Current">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TStringToStringTree" link="TCustomStringMap">
         <short>
-          <var>PAvgLvlTree</var> - a pointer to a <var>TAvgLvlTree</var>
+          <var>TStringToStringTree</var> - an associative array of StringToString Items, or a tree of trees
         </short>
-        <descr/>
+        <descr>
+          <p>
+            <var>TStringToStringTree</var> - an associative array of StringToString Items, or a tree of trees. This class uses strings to identify strings within the array, unlike the <var>TPointerToPointerTree</var>, which uses pointers to identify pointers.
+          </p>
+        </descr>
         <seealso/>
       </element>
-      <!-- object Visibility: default -->
-      <element name="TAvgLvlTreeNodeMemManager">
-        <short>
-          <var>TAvgLvlTreeNodeMemManager</var> - memory manager for TAvgLvlTree nodes</short>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TStringToStringTree.GetValues">
+        <short></short>
       </element>
-      <!-- variable Visibility: private -->
-      <element name="TAvgLvlTreeNodeMemManager.FFirstFree">
-        <short/>
-        <descr/>
-        <seealso/>
+      <element name="TStringToStringTree.GetValues.Result">
+        <short></short>
       </element>
-      <!-- variable Visibility: private -->
-      <element name="TAvgLvlTreeNodeMemManager.FFreeCount">
-        <short/>
-        <descr/>
-        <seealso/>
+      <element name="TStringToStringTree.GetValues.S">
+        <short></short>
       </element>
-      <!-- variable Visibility: private -->
-      <element name="TAvgLvlTreeNodeMemManager.FCount">
-        <short/>
-        <descr/>
-        <seealso/>
+
+      <element name="TStringToStringTree.SetValues">
+        <short></short>
       </element>
-      <!-- variable Visibility: private -->
-      <element name="TAvgLvlTreeNodeMemManager.FMinFree">
-        <short/>
-        <descr/>
-        <seealso/>
+      <element name="TStringToStringTree.SetValues.S">
+        <short></short>
       </element>
-      <!-- variable Visibility: private -->
-      <element name="TAvgLvlTreeNodeMemManager.FMaxFreeRatio">
-        <short/>
-        <descr/>
-        <seealso/>
+      <element name="TStringToStringTree.SetValues.AValue">
+        <short></short>
       </element>
-      <!-- procedure Visibility: private -->
-      <element name="TAvgLvlTreeNodeMemManager.SetMaxFreeRatio">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TStringToStringTree.DisposeItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTreeNodeMemManager.SetMaxFreeRatio.NewValue">
-        <short/>
+      <element name="TStringToStringTree.DisposeItem.P">
+        <short></short>
       </element>
-      <!-- procedure Visibility: private -->
-      <element name="TAvgLvlTreeNodeMemManager.SetMinFree">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+
+      <element name="TStringToStringTree.ItemsAreEqual">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTreeNodeMemManager.SetMinFree.NewValue">
-        <short/>
+      <element name="TStringToStringTree.ItemsAreEqual.Result">
+        <short></short>
       </element>
-      <!-- procedure Visibility: private -->
-      <element name="TAvgLvlTreeNodeMemManager.DisposeFirstFreeNode">
-        <short/>
-        <descr/>
-        <errors/>
-        <seealso/>
+      <element name="TStringToStringTree.ItemsAreEqual.P1">
+        <short></short>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTreeNodeMemManager.DisposeNode">
+      <element name="TStringToStringTree.ItemsAreEqual.P2">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.CreateCopy">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.CreateCopy.Result">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.CreateCopy.Src">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.GetNode">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.GetNode.Result">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetNode.Node">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetNode.Name">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetNode.Value">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.GetString">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.GetString.Result">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetString.Name">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetString.Value">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.Add">
         <short>
-          <var>DisposeNode</var> - method for disposal of a node when it is no longer needed</short>
+          <var>Add</var> an item to the tree (specified by its name, value or delimiter)
+        </short>
         <descr/>
-        <errors/>
         <seealso/>
       </element>
-      <!-- argument Visibility: default -->
-      <element name="TAvgLvlTreeNodeMemManager.DisposeNode.ANode">
-        <short/>
+      <element name="TStringToStringTree.Add.Name">
+        <short></short>
       </element>
-      <!-- function Visibility: public -->
-      <element name="TAvgLvlTreeNodeMemManager.NewNode">
+      <element name="TStringToStringTree.Add.Value">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.Add.Delimiter">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.AddNameValues">
         <short>
-          <var>NewNode</var> - returns a new node for the structure</short>
+          <var>AddNameValues</var> add the specified named values to the tree
+        </short>
         <descr/>
-        <errors/>
         <seealso/>
       </element>
-      <!-- function result Visibility: default -->
-      <element name="TAvgLvlTreeNodeMemManager.NewNode.Result">
+      <element name="TStringToStringTree.AddNameValues.List">
         <short/>
       </element>
-      <!-- property Visibility: public -->
-      <element name="TAvgLvlTreeNodeMemManager.MinimumFreeNode">
+
+      <element name="TStringToStringTree.AddNames">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.AddNames.List">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.Values">
         <short>
-          <var>MinimumFreeNode</var> the value of the smallest (or next) free node</short>
+          The <var>Values</var> of the strings corresponding to the supplied name
+        </short>
         <descr/>
         <seealso/>
       </element>
-      <!-- property Visibility: public -->
-      <element name="TAvgLvlTreeNodeMemManager.MaximumFreeNodeRatio">
+      <element name="TStringToStringTree.S">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.GetNodeData">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.GetNodeData.Result">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetNodeData.Node">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.AsText">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.AsText.Result">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.Assign">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.Assign.Source">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.CalcMemSize">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.CalcMemSize.Result">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.GetEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TStringToStringTree.GetEnumerator.Result">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.GetFirst">
         <short>
-          <var>MaximumFreeNodeRatio</var> - the maximum allowable ratio of free nodes</short>
+          <var>GetFirst</var> - finds the matching first item; returns True if successful
+        </short>
         <descr/>
         <seealso/>
       </element>
-      <!-- property Visibility: public -->
-      <element name="TAvgLvlTreeNodeMemManager.Count">
+      <element name="TStringToStringTree.GetFirst.Result">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetFirst.Name">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetFirst.Value">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.GetLast">
         <short>
-          <var>Count</var> - the running total of nodes</short>
+          <var>GetLast</var> - finds the last matching item; returns True if successful
+        </short>
         <descr/>
         <seealso/>
       </element>
-      <!-- procedure Visibility: public -->
-      <element name="TAvgLvlTreeNodeMemManager.Clear">
+      <element name="TStringToStringTree.GetLast.Result">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetLast.Name">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetLast.Value">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.GetNext">
         <short>
-          <var>Clear</var> - remove all the nodes and leave an empty structure</short>
+          <var>GetNext</var> - finds the next matching item; returns True if successful
+        </short>
         <descr/>
-        <errors/>
         <seealso/>
       </element>
-      <!-- constructor Visibility: public -->
-      <element name="TAvgLvlTreeNodeMemManager.Create">
-        <short>
-          <var>Create</var> - constructor for <var>TAvgLvlTreeNodeMemManager</var>: calls inherited <var>Create</var> then initializes the counters</short>
-        <descr/>
-        <errors/>
-        <seealso>
-          <link id="#rtl.System.TObject.Create">TObject.Create</link>
-        </seealso>
+      <element name="TStringToStringTree.GetNext.Result">
+        <short></short>
       </element>
-      <!-- destructor Visibility: public -->
-      <element name="TAvgLvlTreeNodeMemManager.Destroy">
+      <element name="TStringToStringTree.GetNext.Name">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetNext.NextName">
+        <short></short>
+      </element>
+      <element name="TStringToStringTree.GetNext.NextValue">
+        <short></short>
+      </element>
+
+      <element name="TStringToStringTree.GetPrev">
         <short>
-          <var>Destroy</var> - destructor for memory manager: calls <var>Clear</var> then performs inherited <var>Destroy</var>
+          <var>GetPrev</var> - finds the previous matching item; returns True if successful
         </short>
         <descr/>
-        <errors/>
-        <seealso>
-          <link id="#rtl.System.TObject.Destroy">TObject.Destroy</link>
-        </seealso>
+        <seealso/>
       </element>
-      <element name="TAvgLvlTree.FindNearestKey">
-        <short>Same as FindKey, but if the exact Key can not be found a Node left or right of it is returned.</short>
+      <element name="TStringToStringTree.GetPrev.Result">
+        <short></short>
       </element>
-      <element name="TPointerToPointerItem">
-        <short>
-          <var>TPointerToPointerItem</var> - an item in a PointerToPointer Tree (associative array)</short>
+      <element name="TStringToStringTree.GetPrev.Name">
+        <short></short>
       </element>
-      <element name="TPointerToPointerItem.Key">
-        <short>The <var>Key</var> defining the pointer item</short>
+      <element name="TStringToStringTree.GetPrev.PrevName">
+        <short></short>
       </element>
-      <element name="TPointerToPointerItem.Value">
-        <short>The <var>Value</var> of the pointer item</short>
+      <element name="TStringToStringTree.GetPrev.PrevValue">
+        <short></short>
       </element>
-      <element name="PPointerToPointerItem">
-        <short>
-          <var>PPointerToPointerItem</var> - a pointer to a <var>TPointerToPointerItem</var>
-        </short>
+
+      <element name="TStringToPointerTreeItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TPointerToPointerTree">
-        <short>
-          <var>TPointerToPointerTree</var> - an associative array of PointerToPointer Items, or a tree of trees</short>
-        <descr>
-          <var>TPointerToPointerTree</var> - an associative array of PointerToPointer Items, or a tree of trees. This class uses pointers to identify pointers within the array, unlike the <var>TStringToStringTree</var>, which uses strings to identify strings.</descr>
+      <element name="TStringToPointerTreeItem.Name">
+        <short></short>
       </element>
-      <element name="TPointerToPointerTree.Create">
-        <short>
-          <var>Create</var> - constructor for <var>TPointerToPointerTree</var>. Calls the <var>TAvgLvlTree.Create</var> method</short>
-        <seealso>
-          <link id="#lcl.AvgLvlTree.TAvgLvlTree.Create">TAvgLvlTree.Create</link>
-        </seealso>
+      <element name="TStringToPointerTreeItem.Value">
+        <short></short>
       </element>
-      <element name="TPointerToPointerTree.Destroy">
-        <seealso>
-          <link id="#rtl.System.TObject.Destroy">TObject.Destroy</link>
-        </seealso>
-        <short>
-          <var>Destroy</var> - destructor for <var>TPointerToPointerTree</var>: <var>Clear</var> the tree, <var>Free</var> the items then call inherited <var>Destroy</var>
-        </short>
+
+      <element name="PStringToPointerTreeItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TPointerToPointerTree.Clear">
-        <short>
-          <var>Clear</var> - removes each node from the tree, leaving an empty tree</short>
+
+      <element name="TStringToPointerTreeEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TPointerToPointerTree.Remove">
-        <short>
-          <var>Remove</var> the node specified by <var>Key</var> from the tree</short>
+
+      <element name="TStringToPointerTreeEnumerator.GetCurrent">
+        <short></short>
       </element>
-      <element name="TPointerToPointerTree.Contains">
-        <short>Returns True if the tree <var>Contains</var> the node specified by <var>Key</var>
-        </short>
+      <element name="TStringToPointerTreeEnumerator.GetCurrent.Result">
+        <short></short>
       </element>
-      <element name="TPointerToPointerTree.GetFirst">
-        <short>
-          <var>GetFirst</var> - finds the first node matching the supplied arguments; returns True if successful</short>
+
+      <element name="TStringToPointerTreeEnumerator.Current">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TPointerToPointerTree.GetLast">
-        <short>
-          <var>GetLast</var> - finds the last node matching the supplied arguments; returns True if successful</short>
+
+      <element name="TStringToPointerTree" link="TCustomStringMap">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TPointerToPointerTree.GetNext">
-        <short>
-          <var>GetNext</var> - finds the next node matching the supplied arguments; returns True if successful</short>
+
+      <element name="TStringToPointerTree.FFreeValues"/>
+
+      <element name="TStringToPointerTree.GetValues">
+        <short></short>
       </element>
-      <element name="TPointerToPointerTree.GetPrev">
-        <short>
-          <var>GetPrev</var> - finds the previous node matching the supplied arguments; returns True if successful</short>
+      <element name="TStringToPointerTree.GetValues.Result">
+        <short></short>
       </element>
-      <element name="TPointerToPointerTree.Count">
-        <short>
-          <var>Count</var> - the number of items</short>
+      <element name="TStringToPointerTree.GetValues.S">
+        <short></short>
       </element>
-      <element name="TPointerToPointerTree.Values">
-        <short>
-          <var>Values</var> - a pointer into the array of values associated with the nodes</short>
+
+      <element name="TStringToPointerTree.SetValues">
+        <short></short>
       </element>
-      <element name="TPointerToPointerTree.Tree">
-        <short>The <var>Tree</var> that forms the basis of the associative array</short>
+      <element name="TStringToPointerTree.SetValues.S">
+        <short></short>
       </element>
-      <element name="TStringToStringTree">
-        <descr>
-          <var>TStringToStringTree</var> - an associative array of StringToString Items, or a tree of trees. This class uses strings to identify strings within the array, unlike the <var>TPointerToPointerTree</var>, which uses pointers to identify pointers.</descr>
-        <short>
-          <var>TStringToStringTree</var> - an associative array of StringToString Items, or a tree of trees</short>
+      <element name="TStringToPointerTree.SetValues.AValue">
+        <short></short>
       </element>
-      <element name="TStringToStringItem">
-        <short>
-          <var>TStringToStringItem</var> - an item in a StringToString Tree (associative array)</short>
+
+      <element name="TStringToPointerTree.DisposeItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TStringToStringItem.Name">
-        <short>The <var>Name</var> that identifies the string within the associative array</short>
+      <element name="TStringToPointerTree.DisposeItem.P">
+        <short></short>
       </element>
-      <element name="TStringToStringItem.Value">
-        <short>The <var>Value</var> of the string held within the associative array</short>
+
+      <element name="TStringToPointerTree.ItemsAreEqual">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="PStringToStringItem">
-        <short>
-          <var>PStringToStringItem</var> -  pointer to a TStringToStringItem</short>
+      <element name="TStringToPointerTree.ItemsAreEqual.Result">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.Create">
-        <short>
-          Constuctor for the class instance
-        </short>
-        <descr>
-          Create is the constuctor for the class instance. Overloaded variants of the Create method are provided in the implementation. One variant allows the programmer to specify whether or not the string operations are to be Case Sensitive. A second variant allows the programmer to specify how items in the list are compared.
-        </descr>
-        <seealso>
-          <link id="#rtl.System.TObject.Create">TObject.Create</link>
-        </seealso>
+      <element name="TStringToPointerTree.ItemsAreEqual.P1">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.Create.CaseSensitive">
-        <short>
-          <var>CaseSensitive</var> - if True, string operations (comparisons etc) must be case sensitive</short>
+      <element name="TStringToPointerTree.ItemsAreEqual.P2">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.Destroy">
-        <short>
-          <var>Destroy</var> - destructor for <var>TStringToStringTree</var>: calls <var>Clear</var>, frees items then calls inherited <var>Destroy</var>
-        </short>
+
+      <element name="TStringToPointerTree.CreateCopy">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TStringToStringTree.Clear">
-        <short>
-          <var>Clear</var> - removes all items leaving an empty tree</short>
+      <element name="TStringToPointerTree.CreateCopy.Result">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.Contains">
-        <short>Returns True if the tree <var>Contains</var> the specified string</short>
+      <element name="TStringToPointerTree.CreateCopy.Src">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.Add">
-        <short>
-          <var>Add</var> an item to the tree (specified by its name, value or delimiter)</short>
+
+      <element name="TStringToPointerTree.GetData">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TStringToStringTree.AddNameValues">
-        <short>
-          <var>AddNameValues</var> add the specified named values to the tree</short>
+      <element name="TStringToPointerTree.GetData.Result">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.AddValues">
-        <short>
-          <var>AddValues</var> - adds the specified values to the tree</short>
+      <element name="TStringToPointerTree.GetData.Name">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.GetFirst">
-        <short>
-          <var>GetFirst</var> - finds the matching first item; returns True if successful</short>
+      <element name="TStringToPointerTree.GetData.Value">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.GetLast">
-        <short>
-          <var>GetLast</var> - finds the last matching item; returns True if successful</short>
+
+      <element name="TStringToPointerTree.GetNodeData">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TStringToStringTree.GetNext">
-        <short>
-          <var>GetNext</var> - finds the next matching item; returns True if successful</short>
+      <element name="TStringToPointerTree.GetNodeData.Result">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.GetPrev">
-        <short>
-          <var>GetPrev</var> - finds the previous matching item; returns True if successful</short>
+      <element name="TStringToPointerTree.GetNodeData.Node">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.Count">
-        <short>
-          <var>Count</var> - the number of items</short>
+
+      <element name="TStringToPointerTree.GetEnumerator">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TStringToStringTree.Values">
-        <short>The <var>Values</var> of the strings corresponding to the supplied name</short>
+      <element name="TStringToPointerTree.GetEnumerator.Result">
+        <short></short>
       </element>
-      <element name="TStringToStringTree.Tree">
-        <short>The <var>Tree</var> that forms the basis of the associative array</short>
+
+      <element name="TStringToPointerTree.FreeValues">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TStringToStringTree.CompareItems">
-        <short>
-          <var>CompareItems</var> - the items for comparison</short>
+
+      <element name="TStringToPointerTree.Values">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TStringToStringTree.CompareNameWithItem">
-        <short>
-          <var>CompareNameWithItem</var> - the name for comparison with the item</short>
+      <element name="TStringToPointerTree.Values.S">
+        <short></short>
       </element>
-    <element name="TAvgLvlTree.GetEnumerator"><short>The default enumerator over the nodes from left to right, low to high</short>
+
+      <element name="TFilenameToStringTree">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-    <element name="TAvgLvlTree.AddAscendingSequence"><short>Fast Add for adding a sequence of items.</short><descr> This is an optimized version of "Add" for adding an ascending sequence of nodes.
-  It uses the LastAdded and Successor to skip searching for an insert position.
-  For nodes with same value the order of the sequence is kept.
 
-  Usage:
-    LastNode:=nil; // TAvgLvlTreeNode
-    Successor:=nil; // TAvgLvlTreeNode
-    for i:=1 to 1000 do
-      LastNode:=Tree.AddAscendingSequence(TItem.Create(i),LastNode,Successor);
-</descr>
+      <element name="TFilenameToStringTree" link="TStringToStringTree">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-    <element name="TAvgLvlTree.OwnsObjects"><short>Enable to treat Node.Data as TObject and free on delete</short>
+
+      <element name="TFilenameToStringTree.Create">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
+      <element name="TFilenameToStringTree.Create.CaseSensitive">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TFilenameToPointerTree" link="TStringToPointerTree">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TFilenameToPointerTree.Create">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TFilenameToPointerTree.Create.CaseSensitive">
+        <short></short>
+      </element>
+
+      <element name="ComparePointer">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="ComparePointer.Result">
+        <short></short>
+      </element>
+      <element name="ComparePointer.Data1">
+        <short></short>
+      </element>
+      <element name="ComparePointer.Data2">
+        <short></short>
+      </element>
+
+      <element name="ComparePointerToPointerItems">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="ComparePointerToPointerItems.Result">
+        <short></short>
+      </element>
+      <element name="ComparePointerToPointerItems.Data1">
+        <short></short>
+      </element>
+      <element name="ComparePointerToPointerItems.Data2">
+        <short></short>
+      </element>
+
+      <element name="ComparePointerWithPtrToPtrItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="ComparePointerWithPtrToPtrItem.Result">
+        <short></short>
+      </element>
+      <element name="ComparePointerWithPtrToPtrItem.Key">
+        <short></short>
+      </element>
+      <element name="ComparePointerWithPtrToPtrItem.Data">
+        <short></short>
+      </element>
+
+      <element name="CompareStringToStringItems">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="CompareStringToStringItems.Result">
+        <short></short>
+      </element>
+      <element name="CompareStringToStringItems.Data1">
+        <short></short>
+      </element>
+      <element name="CompareStringToStringItems.Data2">
+        <short></short>
+      </element>
+
+      <element name="CompareAnsiStringWithStrToStrItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="CompareAnsiStringWithStrToStrItem.Result">
+        <short></short>
+      </element>
+      <element name="CompareAnsiStringWithStrToStrItem.Data1">
+        <short></short>
+      </element>
+      <element name="CompareAnsiStringWithStrToStrItem.Data2">
+        <short></short>
+      </element>
+      <element name="CompareAnsiStringWithStrToStrItem.Key">
+        <short></short>
+      </element>
+      <element name="CompareAnsiStringWithStrToStrItem.Data">
+        <short></short>
+      </element>
+
+      <element name="CompareFilenameToStringItems">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="CompareFilenameToStringItems.Result">
+        <short></short>
+      </element>
+      <element name="CompareFilenameToStringItems.Data1">
+        <short></short>
+      </element>
+      <element name="CompareFilenameToStringItems.Data2">
+        <short></short>
+      </element>
+
+      <element name="CompareFilenameAndFilenameToStringTreeItem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="CompareFilenameAndFilenameToStringTreeItem.Result">
+        <short></short>
+      </element>
+      <element name="CompareFilenameAndFilenameToStringTreeItem.Key">
+        <short></short>
+      </element>
+      <element name="CompareFilenameAndFilenameToStringTreeItem.Data">
+        <short></short>
+      </element>
+
+      <element name="CompareFilenameToStringItemsI">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="CompareFilenameToStringItemsI.Result">
+        <short></short>
+      </element>
+      <element name="CompareFilenameToStringItemsI.Data1">
+        <short></short>
+      </element>
+      <element name="CompareFilenameToStringItemsI.Data2">
+        <short></short>
+      </element>
+
+      <element name="CompareFilenameAndFilenameToStringTreeItemI">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="CompareFilenameAndFilenameToStringTreeItemI.Result">
+        <short></short>
+      </element>
+      <element name="CompareFilenameAndFilenameToStringTreeItemI.Key">
+        <short></short>
+      </element>
+      <element name="CompareFilenameAndFilenameToStringTreeItemI.Data">
+        <short></short>
+      </element>
+
     </module>
     <!-- AvgLvlTree -->
   </package>
Index: docs/xml/lazutils/html2textrender.xml
===================================================================
--- docs/xml/lazutils/html2textrender.xml	(revision 63090)
+++ docs/xml/lazutils/html2textrender.xml	(working copy)
@@ -160,8 +160,6 @@
         </descr>
         <seealso>
           <link id="THTML2TextRenderer.Render"/>
-          <link id="THTML2TextRenderer.HtmlTag"/>
-          <link id="THTML2TextRenderer.HtmlEntity"/>
           <link id="THTML2TextRenderer.LineEndMark"/>
           <link id="THTML2TextRenderer.MoreMark"/>
         </seealso>
@@ -260,9 +258,7 @@
             The return value is the result from the <var>AddOutput</var> method, and contains <b>False</b> when the maximum number of lines has been exceeded in the renderer.
           </p>
         </descr>
-        <seealso>
-          <link id="THTML2TextRenderer.AddOutput"/>
-        </seealso>
+        <seealso/>
       </element>
       <element name="THTML2TextRenderer.HtmlEntity.Result">
         <short>True on success, False when the maximum number of lines is exceeded</short>
@@ -360,12 +356,11 @@
         <short>Defines the end-of-line character sequence</short>
         <descr>
           <p>
-            <var>LineEndMark</var> is a <var>String</var> property which contains the end-of-line character sequence inserted in the plain text output for the renderer. The default value for the property is the value from the <var>LineEnding</var> constant defined for the platform or OS. The value is inserted in the renderer output in the <var>AddOutput</var> method.
+            <var>LineEndMark</var> is a <var>String</var> property which contains the end-of-line character sequence inserted in the plain text output for the renderer. By convention, the default value for the property is the value from the <var>LineEnding</var> constant defined for the platform or OS. The value is inserted in the renderer output in the <var>AddOutput</var> method.
           </p>
         </descr>
         <seealso>
-          <link id="THTML2TextRenderer.AddOutput"/>
-          <link id="#rtl.System.LineEnding"/>
+          <link id="#RTL.System.LineEnding"/>
         </seealso>
       </element>
 
@@ -376,9 +371,6 @@
             <var>TitleMark</var> is inserted both prior to and following a title/header found in the HTML content in the <var>HtmlTag</var> method. The default value is the UTF-8 character '◈' (Decimal #9672 or Hex #x25C8).
           </p>
         </descr>
-        <seealso>
-          <link id="THTML2TextRenderer.HtmlTag"/>
-        </seealso>
       </element>
 
       <element name="THTML2TextRenderer.HorzLineMark">
@@ -400,7 +392,6 @@
         </descr>
         <seealso>
           <link id="THTML2TextRenderer.LinkEndMark"/>
-          <link id="THTML2TextRenderer.HtmlTag"/>
         </seealso>
       </element>
 
@@ -413,7 +404,6 @@
         </descr>
         <seealso>
           <link id="THTML2TextRenderer.LinkBeginMark"/>
-          <link id="THTML2TextRenderer.HtmlTag"/>
         </seealso>
       </element>
 
@@ -424,10 +414,7 @@
             <var>ListItemMark</var> is a <var>String</var> property which contains the character(s) inserted before a HTML LI tag. The value is added to the plain text output for the renderer in the <var>HtmlTag</var> method.
           </p>
         </descr>
-        <seealso>
-          <link id="THTML2TextRenderer.HtmlTag"/>
-          <link id="THTML2TextRenderer.AddOutput"/>
-        </seealso>
+        <seealso/>
       </element>
 
       <element name="THTML2TextRenderer.MoreMark">
@@ -439,11 +426,7 @@
             The default value for the property is three (3) Period ('.') characters - <b>NOT</b> an Ellipsis character. The value is added to the plain text output for the renderer when the maximum number of lines has been exceeded in the <var>AddOutput</var> method.
           </p>
         </descr>
-        <seealso>
-          <link id="THTML2TextRenderer.AddOutput"/>
-          <link id="THTML2TextRenderer.HtmlTag"/>
-          <link id="THTML2TextRenderer.HtmlEntity"/>
-        </seealso>
+        <seealso/>
       </element>
 
       <element name="THTML2TextRenderer.IndentStep">
@@ -455,10 +438,7 @@
             <var>IndentStep</var> is an <var>Integer</var> property used to indicate the number of space characters generated for each indentation level in the plain text output for the renderer. The default value for the property is <b>2</b>, and is used in the implementation of the <var>AddOutput</var> method.
           </p>
         </descr>
-        <seealso>
-          <link id="THTML2TextRenderer.AddOutput"/>
-          <link id="THTML2TextRenderer.HtmlTag"/>
-        </seealso>
+        <seealso/>
       </element>
 
     </module>
Index: docs/xml/lazutils/integerlist.xml
===================================================================
--- docs/xml/lazutils/integerlist.xml	(revision 63090)
+++ docs/xml/lazutils/integerlist.xml	(working copy)
@@ -16,7 +16,7 @@
         </p>
       </descr>
 
-      <element name="TByteList" link="#rtl.fgl.TFPGList">
+      <element name="TByteList" link="#RTL.fgl.TFPGList">
         <short>Implements a specialization of TFPGList for Byte data types</short>
         <descr>
           <p>
@@ -24,7 +24,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="#rtl.fgl.TFPGList"/>
+          <link id="#RTL.fgl.TFPGList"/>
         </seealso>
       </element>
 
Index: docs/xml/lazutils/laz2_dom.xml
===================================================================
--- docs/xml/lazutils/laz2_dom.xml	(revision 63090)
+++ docs/xml/lazutils/laz2_dom.xml	(working copy)
@@ -1273,7 +1273,6 @@
         </descr>
         <seealso>
           <link id="TDOMNode.InsertBefore">TDOMNode.InsertBefore</link>
-          <link id="TDOMNode.InternalAppend">TDOMNode.InternalAppend</link>
           <link id="TDOMNode.AppendChild">TDOMNode.AppendChild</link>
           <link id="TDOMNode.DetachChild">TDOMNode.DetachChild</link>
           <link id="TDOMNode.ChildNodes">TDOMNode.ChildNodes</link>
@@ -1389,7 +1388,7 @@
           </p>
         </descr>
         <seealso>
-          <link iid="TDOMDocument">TDOMDocument</link>
+          <link id="TDOMDocument">TDOMDocument</link>
         </seealso>
       </element>
 
@@ -1535,12 +1534,8 @@
           </p>
         </descr>
         <seealso>
-          <link id="TDOMNode_WithChildren.DetachChild">
-            TDOMNode_WithChildren.DetachChild
-          </link>
-          <link id="TDOMNode.NodeType">
-            TDOMNode.NodeType
-          </link>
+          <link id="TDOMNode_WithChildren.DetachChild"/>
+          <link id="TDOMNode.NodeType"/>
         </seealso>
       </element>
 
@@ -2867,9 +2862,6 @@
         <seealso>
           <link id="TDOMNode_WithChildren">TDOMNode_WithChildren</link>
           <link id="TDOMDocument">TDOMDocument</link>
-          <link id="TDOMImplementation.CreateDocumentFragment">
-            TDOMImplementation.CreateDocumentFragment
-          </link>
         </seealso>
       </element>
 
@@ -4820,10 +4812,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="TDOMCharacterData">TDOMCharacterData</link>
-          <link id="TDOMComment.GetNodeType">TDOMComment.GetNodeType</link>
-          <link id="TDOMComment.GetNodeName">TDOMComment.GetNodeType</link>
-          <link id="TDOMComment.CloneNode">TDOMComment.CloneNode</link>
+          <link id="TDOMCharacterData"/>
         </seealso>
       </element>
 
@@ -4888,10 +4877,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="TDOMText">TDOMText</link>
-          <link id="TDOMCDATASection.GetNodeType">TDOMCDATASection.GetNodeType</link>
-          <link id="TDOMCDATASection.GetNodeName">TDOMCDATASection.GetNodeName</link>
-          <link id="TDOMCDATASection.CloneNode">TDOMCDATASection.CloneNode</link>
+          <link id="TDOMText"/>
         </seealso>
       </element>
 
Index: docs/xml/lazutils/laz2_xmlcfg.xml
===================================================================
--- docs/xml/lazutils/laz2_xmlcfg.xml	(revision 63090)
+++ docs/xml/lazutils/laz2_xmlcfg.xml	(working copy)
@@ -58,7 +58,7 @@
         <seealso>
           <link id="TXMLConfig.WriteToStream"/>
           <link id="TXMLConfig.SetValue"/>
-          <link id="TXMLConfig.SetFilename"/>
+          <link id="TXMLConfig.Filename"/>
         </seealso>
       </element>
 
@@ -108,11 +108,10 @@
         </descr>
         <seealso>
           <link id="TXMLConfig.Clear"/>
-          <link id="TXMLConfig.CreateConfigNode"/>
           <link id="TXMLConfig.Destroy"/>
           <link id="TXMLConfig.InternalFindNode"/>
           <link id="TXMLConfig.ReadFromStream"/>
-          <link id="TXMLConfig.SetFilename"/>
+          <link id="TXMLConfig.Filename"/>
           <link id="TXMLConfig.SetValue"/>
         </seealso>
       </element>
@@ -274,7 +273,7 @@
           <link id="TXMLConfig.Destroy"/>
           <link id="TXMLConfig.Clear"/>
           <link id="TXMLConfig.ReadFromStream"/>
-          <link id="TXMLConfig.SetFilename"/>
+          <link id="TXMLConfig.Filename"/>
           <link id="TXMLConfig.InvalidatePathCache"/>
         </seealso>
       </element>
@@ -293,7 +292,7 @@
         </descr>
         <seealso>
           <link id="TXMLConfig.InternalFindNode"/>
-          <link id="TNodeCache"/>
+          <link id="TXmlConfig.TNodeCache"/>
         </seealso>
       </element>
       <element name="TXMLConfig.SetPathNodeCache.Index">
@@ -340,11 +339,10 @@
           </p>
         </descr>
         <seealso>
-          <link id="TXMLConfig.PathNodeCache"/>
+          <link id="TXMLConfig.SetPathNodeCache"/>
           <link id="TXMLConfig.InvalidatePathCache"/>
-          <link id="TXMLConfig.SetPathNodeCache"/>
           <link id="TXMLConfig.FindChildNode"/>
-          <link id="TNodeCache"/>
+          <link id="TXmlConfig.TNodeCache"/>
         </seealso>
       </element>
       <element name="TXMLConfig.InvalidateCacheTilEnd.StartIndex">
@@ -530,7 +528,7 @@
           <link id="TXMLConfig.Document"/>
           <link id="TXMLConfig.Filename"/>
           <link id="TXMLConfig.Modified"/>
-          <link id="TXMLConfig.SetFilename"/>
+          <link id="TXMLConfig.Filename"/>
           <link id="TXMLConfig.WriteXMLFile"/>
         </seealso>
       </element>
@@ -579,7 +577,6 @@
         </descr>
         <seealso>
           <link id="TXMLConfig.Document"/>
-          <link id="TXMLConfig.CreateConfigNode"/>
           <link id="TXMLConfig.WriteFlags"/>
           <link id="#LazUtils.Laz2_XMLWrite.WriteXMLFile"/>
         </seealso>
@@ -636,7 +633,7 @@
         </short>
         <descr>
           <p>
-            <var>GetExtendedValue</var> is an <var>Extended</var> function used to get the value for a DOM node at the specified path as an Extended data type. GetExtendedValue is similar to the <link id="GetValue"/> method; in fact it calls GetValue to retrieve the value for the DOM node in <var>APath</var>. It calls <var>StrToExtended</var> to convert the node value to the Extended data type used as the return value.
+            <var>GetExtendedValue</var> is an <var>Extended</var> function used to get the value for a DOM node at the specified path as an Extended data type. GetExtendedValue is similar to the <link id="TXMLConfig.GetValue"/> method; in fact it calls GetValue to retrieve the value for the DOM node in <var>APath</var>. It calls <var>StrToExtended</var> to convert the node value to the Extended data type used as the return value.
           </p>
           <p>
             Use <var>ADefault</var> to specify the default value used in the method when the DOM node does not contain any content (or value).
@@ -993,7 +990,7 @@
           <link id="TXMLConfig.ReadXMLFile"/>
           <link id="TXMLConfig.FreeDoc"/>
           <link id="TXMLConfig.InternalCleanNode"/>
-          <link id="TXMLConfig.SetFilename"/>
+          <link id="TXMLConfig.Filename"/>
         </seealso>
       </element>
 
@@ -1031,8 +1028,7 @@
         <seealso>
           <link id="TXMLConfig.Clear"/>
           <link id="TXMLConfig.FreeDoc"/>
-          <link id="TXMLConfig.CreateConfigNode"/>
-          <link id="TXMLConfig.SetFilename"/>
+          <link id="TXMLConfig.Filename"/>
           <link id="TXMLDocument"/>
         </seealso>
       </element>
@@ -1080,7 +1076,7 @@
         </descr>
         <seealso>
           <link id="TXMLConfig.Create"/>
-          <link id="TXMLConfig.WriteToSteam"/>
+          <link id="TXMLConfig.WriteToStream"/>
           <link id="TXMLConfig.WriteXMLFile"/>
           <link id="TXMLWriterFlags"/>
         </seealso>
@@ -1225,11 +1221,11 @@
             <var>CompareDomNodeNames</var> is an <var>Integer</var> function used to compare the pointers to DOM nodes specified in <var>DOMNode1</var> and <var>DOMNode2</var>. CompareDomNodeNames calls <var>CompareStr</var> to examine the names in the pointers. The return value contains the relative sort order for the node names as determined in the <var>CompareStr</var> routine.
           </p>
           <p>
-            CompareDomNodeNames is the routine passed as an argument to MergeSortLen in the <var>TXMLConfig.TNodeCache.RefreshChildren</var> method.
+            CompareDomNodeNames is the routine passed as an argument to MergeSortLen in the <var>TNodeCache.RefreshChildren</var> method.
           </p>
         </descr>
         <seealso>
-          <link id="TXMLConfig.TNodeCache.RefreshChildren"/>
+          <link id="TXMLConfig"/>
         </seealso>
       </element>
       <element name="CompareDomNodeNames.Result">
Index: docs/xml/lazutils/laz2_xmlread.xml
===================================================================
--- docs/xml/lazutils/laz2_xmlread.xml	(revision 63090)
+++ docs/xml/lazutils/laz2_xmlread.xml	(working copy)
@@ -114,11 +114,10 @@
             <var>EXMLReadError</var> is an <var>Exception</var> descendant raised when an error occurs while reading XML content. EXMLReadError provides properties that indicate the severity of the error, its error message, and the position where the error occurred.
           </p>
           <p>
-            EXMLReadError is used in the implementation of TXMLReader class which de-serializes XML documents.
+            EXMLReadError is used in the TXMLReader implementation class which de-serializes XML documents.
           </p>
         </descr>
         <seealso>
-          <link id="TXMLReader"/>
           <link id="TErrorSeverity"/>
         </seealso>
       </element>
@@ -142,9 +141,6 @@
         </descr>
         <seealso>
           <link id="TErrorSeverity"/>
-          <link id="TXMLReader.ProcessXML"/>
-          <link id="TXMLReader.ProcessFragment"/>
-          <link id="TXMLReader.ProcessDTD"/>
         </seealso>
       </element>
 
@@ -162,7 +158,6 @@
         <seealso>
           <link id="EXMLReadError.Severity"/>
           <link id="TErrorSeverity"/>
-          <link id="TXMLReader"/>
         </seealso>
       </element>
 
@@ -214,7 +209,6 @@
         </descr>
         <seealso>
           <link id="TXMLDocument"/>
-          <link id="TXMLReader.ProcessXML"/>
           <link id="TXMLReaderFlag"/>
         </seealso>
       </element>
@@ -265,7 +259,6 @@
         </descr>
         <seealso>
           <link id="laz2_DOM.TDOMNode"/>
-          <link id="TXMLReader.ProcessFragment"/>
           <link id="TXMLReaderFlag"/>
         </seealso>
       </element>
Index: docs/xml/lazutils/laz2_xpath.xml
===================================================================
--- docs/xml/lazutils/laz2_xpath.xml	(revision 63090)
+++ docs/xml/lazutils/laz2_xpath.xml	(working copy)
@@ -22,7 +22,7 @@
         </p>
         <p>
           <url href="https://www.w3.org/TR/1999/REC-xpath-19991116/">
-            XML Path Language (XPath) Version 1.0 <br/>
+            XML Path Language (XPath) Version 1.0
             W3C Recommendation 16 November 1999
           </url>
         </p>
@@ -99,10 +99,10 @@
         <short>Token contains the :: axis operator</short>
       </element>
       <element name="TXPathToken.tkLess">
-        <short>Token contains the &amp;lt; operator</short>
+        <short>Token contains the LessThan operator</short>
       </element>
       <element name="TXPathToken.tkLessEqual">
-        <short>Token contains the &amp;lt;= operator</short>
+        <short>Token contains the LessThanOrEqual operator</short>
       </element>
       <element name="TXPathToken.tkEqual">
         <short>Token contains the = operator</short>
@@ -111,10 +111,10 @@
         <short>Token contains the != operator</short>
       </element>
       <element name="TXPathToken.tkGreater">
-        <short>Token contains the &amp;gt; operator</short>
+        <short>Token contains the GreaterThan operator</short>
       </element>
       <element name="TXPathToken.tkGreaterEqual">
-        <short>Token contains the &amp;gt;= operator</short>
+        <short>Token contains the GreaterThanOrEqual operator</short>
       </element>
       <element name="TXPathToken.tkAt">
         <short>Token contains the @ expression character</short>
@@ -364,9 +364,7 @@
 
       <!-- array type Visibility: default -->
       <element name="TXPathNodeArray">
-        <short>
-          Array used to store TXPathExprNode entries
-        </short>
+        <short>Array used to store TXPathExprNode entries</short>
         <descr>
           <p>
             <var>TXPathNodeArray</var> is an array of <var>TXPathExprNode</var> type. It is used to store XPath predicate expressions passed as arguments to <var>TXPathExprNode</var> descendants or <var>TXPathScanner</var>.
@@ -380,9 +378,7 @@
 
       <!-- class Visibility: default -->
       <element name="TXPathConstantNode">
-        <short>
-          Represents an XPath Literal expression
-        </short>
+        <short>Represents an XPath Literal expression</short>
         <descr>
           <p>
             <var>TXPathConstantNode</var> is a <var>TXPathExprNode</var> descendant that represents an XPath predicate expression which contains a Literal value (any value surrounded by Quotation Marks). The return value is the <var>TXPathVariable</var> passed to the constructor for the class instance.
@@ -447,10 +443,8 @@
           <p>
             <var>TXPathVariableNode</var> is a <var>TXPathExprNode</var> descendant that represents an XPath Variable Reference expression in the XPath syntax. For example:
           </p>
+          <code>&#36;prefix:varname</code>
           <p>
-            <code>$prefix:varname</code>
-          </p>
-          <p>
             TXPathVariableNode provides an overridden Evaluate method that is used to get the value for the node from the variable bindings in the XPath environment.
           </p>
         </descr>
@@ -518,10 +512,8 @@
           <p>
             TXPathFunctionNode is a TXPathExprNode descendant that represents a Function Name expression in the XPath syntax. For example:
           </p>
+          <code>local-name() or ms:utc()</code>
           <p>
-            <code>local-name()</code> or <code>ms:utc()</code>
-          </p>
-          <p>
             TXPathFunctionNode provides an overridden Evaluate method which is used to access the named function in the XPath environment with the arguments found in the expression. TXPathFunctionNode provides private members that are used to store the name for the function and its optional arguments.
           </p>
         </descr>
@@ -604,10 +596,8 @@
           <p>
             <var>TXPathNegationNode</var> is a <var>TXPathExprNode</var> descendant used to represent a Unary Expression with a Negation literal in the XPath syntax. For example:
           </p>
+          <code>-&#36;varname</code>
           <p>
-            <code>-$varname</code>
-          </p>
-          <p>
             TXPathNegationNode provides an overridden Evaluate method used to derive the return value for the expression.
           </p>
         </descr>
@@ -941,12 +931,8 @@
           <p>
             <var>TXPathUnionNode</var> is a <var>TXPathBinaryNode</var> descendant used to represent a Union expression in the XPath syntax. For example:
           </p>
+          <code>./child::*|./attribute::*</code>
           <p>
-            <code>
-              ./child::*|./attribute::*
-            </code>
-          </p>
-          <p>
             TXPathUnionNode provides a constructor used to set the operands for the Union expression. An overridden Evaluate method is provided to evaluate node sets generated for the XPath expression. It ensures that the selected node sets for each operand are in document order.
           </p>
         </descr>
@@ -1010,12 +996,8 @@
           <p>
             <var>TXPathFilterNode</var> is a <var>TXPathExprNode</var> descendant used to implement a Filter expression in the XPath syntax. For example:
           </p>
+          <code>//book[@*]</code>
           <p>
-            <code>
-              //book[@*]
-            </code>
-          </p>
-          <p>
             TXPathFilterNode allows a node set to be filtered to ensure that only values matching the XPath expression are included in the result. An overridden Evaluate method is provided to generate the node set in the return value, and to apply predicates in the XPath expression.
           </p>
         </descr>
@@ -1172,12 +1154,8 @@
           <p>
             <var>TStep</var> is a <var>TXPathFilterNode</var> descendant used to implement a Location Step expression in the XPath syntax. A location step expression contains an Axis name, a node test, and optional predicates that determine the items available in a node set. For example:
           </p>
+          <code>./child::book[@lang='en']</code>
           <p>
-            <code>
-              ./child::book[@lang='en']
-            </code>
-          </p>
-          <p>
             Use the constructor to specify the Axis and Node Test for the XPath expression. An overridden Evaluate method is provided to select the nodes included in the node set returned by the method.
           </p>
         </descr>
@@ -1776,11 +1754,8 @@
         <short>Prefix to locate in the Namespace information for the Context node</short>
       </element>
 
-      <!-- class Visibility: default -->
       <element name="TXPathScanner">
-        <short>
-          Implements a lexical scanner/parser using XPath syntax and semantics
-        </short>
+        <short>Implements a lexical scanner and parser using XPath syntax and semantics</short>
         <descr>
           <p>
             <var>TXPathScanner</var> is a class which implements a lexical scanner/parser using the syntax and semantics defined in XPath (XML Path Language). TXPathScanner provides methods used to tokenize and parse the XPath Expression types defined in the specification, at:
@@ -1787,8 +1762,7 @@
           </p>
           <p>
             <url href="https://www.w3.org/TR/1999/REC-xpath-19991116/">
-              XML Path Language (XPath) Version 1.0 <br/>
-              W3C Recommendation 16 November 1999
+              XML Path Language (XPath) Version 1.0  W3C Recommendation 16 November 1999
             </url>
           </p>
           <p>
@@ -1815,43 +1789,33 @@
       <element name="TXPathScanner.FTokenId"/>
       <element name="TXPathScanner.FResolver"/>
 
-      <!-- procedure Visibility: private -->
       <element name="TXPathScanner.Error">
         <short>Raises an exception with the specified message</short>
         <descr></descr>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathScanner.Error.Msg">
         <short>Message for the error</short>
       </element>
 
-      <!-- procedure Visibility: private -->
       <element name="TXPathScanner.ParsePredicates">
         <short>Parses XPath Predicate expressions</short>
         <descr></descr>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathScanner.ParsePredicates.Dest">
         <short>Destination nodes for XPath predicates in the expression</short>
       </element>
 
-      <!-- function Visibility: private -->
       <element name="TXPathScanner.ParseStep">
         <short>Parses XPath Location Steps in the expression</short>
         <descr></descr>
         <seealso></seealso>
       </element>
-
-      <!-- function result Visibility: default -->
       <element name="TXPathScanner.ParseStep.Result">
         <short>TStep class instance for the Location Step</short>
       </element>
 
-      <!-- function Visibility: private -->
       <element name="TXPathScanner.ParseNodeTest">
         <short>
           Parses XPath Node Tests to determine the principal node type for the expression
@@ -1859,13 +1823,9 @@
         <descr></descr>
         <seealso></seealso>
       </element>
-
-      <!-- function result Visibility: default -->
       <element name="TXPathScanner.ParseNodeTest.Result">
         <short>TStep class instance for the Location Step</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathScanner.ParseNodeTest.axis">
         <short>Axis to use for the Location Step in the result value</short>
       </element>
@@ -3089,7 +3049,6 @@
         <short>Ordinal position for the requested XPath function</short>
       </element>
 
-      <!-- property Visibility: public -->
       <element name="TXPathEnvironment.FunctionsByName">
         <short>Gets an XPath function with the specified name</short>
         <descr></descr>
@@ -3096,7 +3055,6 @@
         <seealso></seealso>
       </element>
 
-      <!-- argument Visibility: default -->
       <element name="TXPathEnvironment.FunctionsByName.AName">
         <short>Name for the requested XPath function</short>
       </element>
@@ -3108,24 +3066,19 @@
         <seealso></seealso>
       </element>
 
-      <!-- argument Visibility: default -->
       <element name="TXPathEnvironment.Variables.Index">
         <short>Ordinal position for the requested variable</short>
       </element>
 
-      <!-- property Visibility: public -->
       <element name="TXPathEnvironment.VariablesByName">
         <short>Gets an XPath variable with the specified name</short>
         <descr></descr>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathEnvironment.VariablesByName.AName">
         <short>Name of the requested variable</short>
       </element>
 
-      <!-- class Visibility: default -->
       <element name="TXPathExpression">
         <short>
           Evaluates an XPath expression using the specified scanner and resolver
@@ -3134,32 +3087,23 @@
         <seealso></seealso>
       </element>
 
-      <!-- variable Visibility: private -->
       <element name="TXPathExpression.FRootNode"/>
 
-      <!-- constructor Visibility: public -->
       <element name="TXPathExpression.Create">
         <short>Constructor for the class instance</short>
         <descr></descr>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathExpression.Create.AScanner">
         <short>Lexical scanner/parser used to evaluate the expression</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathExpression.Create.CompleteExpression">
         <short>The XPath expression evaluated in the class instance</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathExpression.Create.AResolver">
         <short>Namespace resolver used to evaluate the expression</short>
       </element>
 
-      <!-- destructor Visibility: public -->
       <element name="TXPathExpression.Destroy">
         <short>Destructor for the class instance</short>
         <descr></descr>
@@ -3166,7 +3110,6 @@
         <seealso></seealso>
       </element>
 
-      <!-- function Visibility: public -->
       <element name="TXPathExpression.Evaluate">
         <short>
           Evaluates an XPath expression using the specified context node and environment
@@ -3174,18 +3117,12 @@
         <descr></descr>
         <seealso></seealso>
       </element>
-
-      <!-- function result Visibility: default -->
       <element name="TXPathExpression.Evaluate.Result">
         <short>Value from the evaluated expression</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathExpression.Evaluate.AContextNode">
         <short>Context node for the expression</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="TXPathExpression.Evaluate.AEnvironment">
         <short>XPath environment for the evaluation</short>
       </element>
@@ -3198,23 +3135,15 @@
         <descr></descr>
         <seealso></seealso>
       </element>
-
-      <!-- function result Visibility: default -->
       <element name="EvaluateXPathExpression.Result">
         <short>XPath variable representing the evaluated XPath expression</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="EvaluateXPathExpression.AExpressionString">
         <short>XPath expression evaluated in the routine</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="EvaluateXPathExpression.AContextNode">
         <short>Context node for the XPath expression</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="EvaluateXPathExpression.AResolver">
         <short>Namespace resolver for the evaluation</short>
       </element>
Index: docs/xml/lazutils/lazcollections.xml
===================================================================
--- docs/xml/lazutils/lazcollections.xml	(revision 63090)
+++ docs/xml/lazutils/lazcollections.xml	(working copy)
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <fpdoc-descriptions>
-<package name="lazutils">
-<!--
-  ====================================================================
+  <package name="lazutils">
+    <!--
+    ====================================================================
     lazCollections
-  ====================================================================
--->
-<module name="lazCollections">
+    ====================================================================
+    -->
+    <module name="lazCollections">
       <short>Contains classes used to implement thread-safe collections</short>
-<descr>
+      <descr>
         <file>lazCollections.pas</file> contains classes used to implement thread-safe collections.
-</descr>
+      </descr>
 
       <!-- unresolved external references -->
       <element name="SysUtils"/>
@@ -17,12 +17,12 @@
       <element name="SyncObjs"/>
       <element name="LazSysUtils"/>
 
-<!-- class Visibility: default -->
-<element name="TLazMonitor">
+      <!-- class Visibility: default -->
+      <element name="TLazMonitor">
         <short>
           Implements a synchronization construct which provides thread-safe access to resources
         </short>
-<descr>
+        <descr>
           <p>
             <var>TLazMonitor</var> is a <var>TCriticalSection</var> descendant which implements a synchronization construct that provides thread-safe access to resources. TLazMonitor extends the ancestor class to use a fixed number of spinlock (or busy waiting) attempts in its Acquire method. Acquire also yields CPU cycles to allow other threads to execute when fixed yield and/or sleep threshold(s) have been reached.
           </p>
@@ -29,77 +29,77 @@
           <p>
             <var>TLazMonitor</var> is used in the implementation of the <var>TLazThreadedQueue</var> class, and in the <var>fppkg</var> package.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazMonitor.Acquire"/>
           <link id="TLazMonitor.SpinCount"/>
           <link id="TLazMonitor.DefaultSpinCount"/>
           <link id="TLazThreadedQueue"/>
-          <link id="#rtl.SyncObjs.TCriticalSection"/>
-</seealso>
-</element>
+          <link id="#FCL.SyncObjs.TCriticalSection"/>
+        </seealso>
+      </element>
 
-<!-- variable Visibility: private -->
+      <!-- variable Visibility: private -->
       <element name="TLazMonitor.FSpinCount" link="TLazMonitor.SpinCount"/>
 
-<!-- variable Visibility: private -->
+      <!-- variable Visibility: private -->
       <element name="TLazMonitor.FDefaultSpinCount" link="TLazMonitor.DefaultSpinCount"/>
 
-<!-- class function Visibility: private -->
+      <!-- class function Visibility: private -->
       <element name="TLazMonitor.GetDefaultSpinCount" link="TLazMonitor.DefaultSpinCount">
         <short>Gets the value for the DefaultSpinCount class property</short>
-</element>
-<!-- function result Visibility: private -->
-<element name="TLazMonitor.GetDefaultSpinCount.Result">
+      </element>
+      <!-- function result Visibility: private -->
+      <element name="TLazMonitor.GetDefaultSpinCount.Result">
         <short>Value for the class property</short>
-</element>
+      </element>
 
-<!-- class procedure Visibility: private -->
+      <!-- class procedure Visibility: private -->
       <element name="TLazMonitor.SetDefaultSpinCount" link="TLazMonitor.DefaultSpinCount">
         <short>Sets the value for the DefaultSpinCount property</short>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazMonitor.SetDefaultSpinCount.AValue">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazMonitor.SetDefaultSpinCount.AValue">
         <short>New value for the property</short>
-</element>
+      </element>
 
-<!-- function Visibility: private -->
+      <!-- function Visibility: private -->
       <element name="TLazMonitor.GetSpinCount" link="TLazMonitor.SpinCount">
         <short>Gets the value for the SpinCount property</short>
-</element>
-<!-- function result Visibility: private -->
-<element name="TLazMonitor.GetSpinCount.Result">
+      </element>
+      <!-- function result Visibility: private -->
+      <element name="TLazMonitor.GetSpinCount.Result">
         <short>Value for the property</short>
-</element>
+      </element>
 
-<!-- procedure Visibility: private -->
+      <!-- procedure Visibility: private -->
       <element name="TLazMonitor.SetSpinCount" link="TLazMonitor.SpinCount">
         <short>Sets the value for the SpinCount property</short>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazMonitor.SetSpinCount.AValue">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazMonitor.SetSpinCount.AValue">
         <short>New value for the property</short>
-</element>
+      </element>
 
-<!-- constructor Visibility: public -->
+      <!-- constructor Visibility: public -->
       <element name="TLazMonitor.Create">
         <short>Constructor for the class instance</short>
-<descr>
+        <descr>
           <p>
             <var>Create</var> is the constructor for the class instance, and sets the value in the <var>SpinCount</var> property to the <var>DefaultSpinCount</var> used in   instances of the class. Create calls the inherited constructor prior to exiting from the method.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazMonitor.SpinCount"/>
           <link id="TLazMonitor.DefaultSpinCount"/>
-          <link id="#rtl.SyncObjs.TCriticalSection.Create"/>
-</seealso>
-</element>
+          <link id="#FCL.SyncObjs.TCriticalSection.Create"/>
+        </seealso>
+      </element>
 
-<!-- procedure Visibility: public -->
-<element name="TLazMonitor.Acquire">
+      <!-- procedure Visibility: public -->
+      <element name="TLazMonitor.Acquire">
         <short>Limits thread access to the calling thread</short>
-<descr>
+        <descr>
           <p>
             <var>Acquire</var> is an overridden procedure used to limit threaded access to resources to the current calling thread. Acquire extends the inherited method to use a spinlock (or busy waiting loop) to get mutually exclusive access to resources shared between threads.
           </p>
@@ -112,18 +112,18 @@
           <p>
             Use the <var>SpinCount</var> property to determine the maximum number of iterations for the spinlock processing cycle. Use <var>DefaultSpinCount</var> to determine the default value used for the SpinCount property in new instances of the class.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazMonitor.SpinCount"/>
           <link id="TLazMonitor.DefaultSpinCount"/>
-          <link id="#rtl.SyncObjs.TCriticalSection.Enter"/>
-</seealso>
-</element>
+          <link id="#FCL.SyncObjs.TCriticalSection.Enter"/>
+        </seealso>
+      </element>
 
-<!-- property Visibility: public -->
-<element name="TLazMonitor.SpinCount">
+      <!-- property Visibility: public -->
+      <element name="TLazMonitor.SpinCount">
         <short>Number of busy waiting iterations used in the monitor</short>
-<descr>
+        <descr>
           <p>
             <var>SpinCount</var> is an <var>Integer</var> property which indicates the number of busy waiting iterations used in the monitor. The default value for the property is set in the <var>Create</var> constructor to the value in the <var>DefaultSpinCount</var> class property.
           </p>
@@ -130,41 +130,41 @@
           <p>
             Set the value in <var>SpinCount</var> to increase or decrease the number of spinlock iterations performed in the <var>Acquire</var> method. The value should be kept as small as possible to avoid the overhead of process scheduler/context switching conflicts for executing threads.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazMonitor.Create"/>
           <link id="TLazMonitor.DefaultSpinCount"/>
           <link id="TLazMonitor.Acquire"/>
-</seealso>
-</element>
+        </seealso>
+      </element>
 
-<!-- property Visibility: public -->
-<element name="TLazMonitor.DefaultSpinCount">
+      <!-- property Visibility: public -->
+      <element name="TLazMonitor.DefaultSpinCount">
         <short>Default number of busy waiting iterations used in instances of the class</short>
-<descr>
+        <descr>
           <p>
             <var>DefaultSpinCount</var> is an <var>Integer</var> class property which identifies the default number of busy waiting iterations used in instances of the class. <var>DefaultSpinCount</var> provides the default value for the <var>SpinCount</var> property in new instances of the class.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazMonitor.SpinCount"/>
           <link id="TLazMonitor.Acquire"/>
-</seealso>
-</element>
+        </seealso>
+      </element>
 
-<!-- generic class Visibility: default -->
-<element name="TLazThreadedQueue">
+      <!-- generic class Visibility: default -->
+      <element name="TLazThreadedQueue">
         <short>
           Implements a thread-safe FIFO queue for items of a generic type
         </short>
-<descr>
+        <descr>
           <p>
             <var>TLazThreadedQueue</var> is generic class which implements a thread-safe FIFO queue using a generic type for its items. The class requires specialization to specify the type stored in the items for the queue. For example:
           </p>
           <code>
-  TLazThreadedQueueString = specialize TLazThreadedQueue&lt;String&gt;;
-  TLazThreadedQueueInt = specialize TLazThreadedQueue&lt;Integer&gt;;
-  TLazThreadedQueueRect = specialize TLazThreadedQueue&lt;TRectangle&gt;;
+            TLazThreadedQueueString = specialize TLazThreadedQueue&lt;String&gt;;
+            TLazThreadedQueueInt = specialize TLazThreadedQueue&lt;Integer&gt;;
+            TLazThreadedQueueRect = specialize TLazThreadedQueue&lt;TRectangle&gt;;
           </code>
           <p>
             <var>TLazThreadedQueue</var> uses an internal <var>TLazMonitor</var> member to synchronize access to resources in the queue between executing threads. Methods in the class which require thread-safe access use the monitor to enable/disable resource protection. Items in the queue are maintained using the <var>PushItem</var>, <var>PopItem</var>, and <var>PopItemTimeout</var> methods. Properties are provided to determine the size of the queue, and the number of items added or removed.
@@ -172,13 +172,13 @@
           <p>
             TLazThreadedQueue specializations are used in the implementation of the <var>fpdserver</var> component, and its integration into the Lazarus IDE.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazMonitor"/>
-</seealso>
-</element>
+        </seealso>
+      </element>
 
-<!-- variable Visibility: private -->
+      <!-- variable Visibility: private -->
       <element name="TLazThreadedQueue.FMonitor"/>
       <element name="TLazThreadedQueue.FList"/>
       <element name="TLazThreadedQueue.FPushTimeout"/>
@@ -190,10 +190,10 @@
       <element name="TLazThreadedQueue.FHasItemEvent"/>
       <element name="TLazThreadedQueue.FShutDown"/>
 
-<!-- function Visibility: private -->
-<element name="TLazThreadedQueue.TryPushItem">
+      <!-- function Visibility: private -->
+      <element name="TLazThreadedQueue.TryPushItem">
         <short>Tries to add the specified item to the queue</short>
-<descr>
+        <descr>
           <p>
             <var>TryPushItem</var> is a <var>Boolean</var> function which tries to add the item specified in <var>AItem</var> to the internal storage for the queue. The return value is <b>True</b> if the item was successfully added in the method.
           </p>
@@ -200,22 +200,22 @@
           <p>
             <var>TryPushItem</var> is used in the implementation of the <var>PushItem</var> method. Use <var>PushItem</var> or to add an item to the thread-safe queue.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.PushItem"/>
-</seealso>
-</element>
-<!-- function result Visibility: private -->
-<element name="TLazThreadedQueue.TryPushItem.Result">
+        </seealso>
+      </element>
+      <!-- function result Visibility: private -->
+      <element name="TLazThreadedQueue.TryPushItem.Result">
         <short>True if the item was added successfully</short>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazThreadedQueue.TryPushItem.AItem">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazThreadedQueue.TryPushItem.AItem">
         <short>Item added to the queue in the method</short>
-</element>
+      </element>
 
-<!-- function Visibility: private -->
-<element name="TLazThreadedQueue.TryPopItem">
+      <!-- function Visibility: private -->
+      <element name="TLazThreadedQueue.TryPopItem">
         <short>
           Tries to remove the next item in the thread-safe queue
         </short>
@@ -222,24 +222,24 @@
         <descr></descr>
         <errors></errors>
         <seealso></seealso>
-</element>
-<!-- function result Visibility: private -->
-<element name="TLazThreadedQueue.TryPopItem.Result">
+      </element>
+      <!-- function result Visibility: private -->
+      <element name="TLazThreadedQueue.TryPopItem.Result">
         <short>
           True if an item was successfully removed from the queue
         </short>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazThreadedQueue.TryPopItem.AItem">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazThreadedQueue.TryPopItem.AItem">
         <short>
           Item removed from the queue in the method
         </short>
-</element>
+      </element>
 
-<!-- constructor Visibility: public -->
+      <!-- constructor Visibility: public -->
       <element name="TLazThreadedQueue.Create">
         <short>Constructor for the class instance</short>
-<descr>
+        <descr>
           <p>
             <var>Create</var> is the constructor for the class instance. Create allocates internal resources used to implement the thread-safe queue, and sets the default values for its properties.
           </p>
@@ -249,70 +249,70 @@
           <p>
             <var>PushTimeout</var> and <var>PopTimeout</var> indicate the number of milliseconds (or ticks) to wait for successful completion of enqueue or dequeue requests, and are assigned as the default value for the corresponding internal members in the class instance.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.Grow"/>
           <link id="TLazThreadedQueue.PushItem"/>
           <link id="TLazThreadedQueue.PopItem"/>
           <link id="TLazThreadedQueue.Destroy"/>
-</seealso>
-</element>
-<!-- argument Visibility: default -->
+        </seealso>
+      </element>
+      <!-- argument Visibility: default -->
       <element name="TLazThreadedQueue.Create.AQueueDepth">
         <short>
           Indicates the maximum number of items that can be stored in the thread-safe queue
         </short>
-</element>
-<!-- argument Visibility: default -->
+      </element>
+      <!-- argument Visibility: default -->
       <element name="TLazThreadedQueue.Create.PushTimeout">
         <short>
           Number of ticks (milliseconds) to wait for successful completion of an enqueue request
         </short>
-</element>
+      </element>
 
-<!-- argument Visibility: default -->
+      <!-- argument Visibility: default -->
       <element name="TLazThreadedQueue.Create.PopTimeout">
         <short>
           Number of ticks (milliseconds) to wait for successful completion of a dequeue request
         </short>
-</element>
+      </element>
 
-<!-- destructor Visibility: public -->
-<element name="TLazThreadedQueue.Destroy">
+      <!-- destructor Visibility: public -->
+      <element name="TLazThreadedQueue.Destroy">
         <short>Destructor for the class instance</short>
-<descr>
+        <descr>
           <p>
             <var>Destroy</var> is the destructor for the class instance. Destroy calls the private <var>DoShutDown</var> method to free internal resources allocated in the class instance. Destroy calls the inherited destructor prior to exiting from the method.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.DoShutDown"/>
           <link id="TLazThreadedQueue.Create"/>
-          <link id="#rtl.SyncObjs.TCriticalSection.Destroy"/>
-</seealso>
-</element>
+          <link id="#FCL.SyncObjs.TCriticalSection.Destroy"/>
+        </seealso>
+      </element>
 
-<!-- procedure Visibility: public -->
-<element name="TLazThreadedQueue.Grow">
+      <!-- procedure Visibility: public -->
+      <element name="TLazThreadedQueue.Grow">
         <short>
           Increases the allocated storage for the queue by the specified size
         </short>
-<descr>
+        <descr>
           <p>
             <var>Grow</var> is a procedure which increases the storage allocated for items in the queue by the specified value in <var>ADelta</var>. The internal queue size is incremented by the value in <var>ADelta</var>. The length of the internal storage for the queue is increased to match the new queue size.
           </p>
-</descr>
+        </descr>
         <seealso></seealso>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazThreadedQueue.Grow.ADelta">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazThreadedQueue.Grow.ADelta">
         <short>Value used to increase the size of the queue</short>
-</element>
+      </element>
 
-<!-- function Visibility: public -->
-<element name="TLazThreadedQueue.PushItem">
+      <!-- function Visibility: public -->
+      <element name="TLazThreadedQueue.PushItem">
         <short>Adds the specified item to the queue</short>
-<descr>
+        <descr>
           <p>
             <var>PushItem</var> is a <var>TWaitResult</var> function used to add the item specified in <var>AItem</var> to the thread-safe queue.
           </p>
@@ -328,25 +328,26 @@
           <p>
             The return value contains a <var>TWaitResult</var> enumeration value that indicates the status for the enqueue request. See <var>TWaitResult</var> for more information about enumeration values and their meanings.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.ShutDown"/>
-          <link id="#rtl.SyncObjs.TWaitFor"/>
-</seealso>
-</element>
-<!-- function result Visibility: public -->
-<element name="TLazThreadedQueue.PushItem.Result">
+          <link id="#FCL.SyncObjs.TWaitResult"/>
+          <link id="#RTL.System.RTLeventWaitFor"/>
+        </seealso>
+      </element>
+      <!-- function result Visibility: public -->
+      <element name="TLazThreadedQueue.PushItem.Result">
         <short>Contains the status for the enqueue request</short>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazThreadedQueue.PushItem.AItem">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazThreadedQueue.PushItem.AItem">
         <short>Item added to the storage for the queue</short>
-</element>
+      </element>
 
-<!-- function Visibility: public -->
-<element name="TLazThreadedQueue.PopItem">
+      <!-- function Visibility: public -->
+      <element name="TLazThreadedQueue.PopItem">
         <short>Pops the next item from the queue</short>
-<descr>
+        <descr>
           <p>
             <var>PopItem</var> is a <var>TWaitResult</var> function used remove the next item available in the thread-safe queue. PopItem calls the <var>PopItemTimeout</var> method using the value in the <var>PopTimeout</var> property as an argument.
           </p>
@@ -356,25 +357,25 @@
           <p>
             The return value contains a <var>TWaitResult</var> enumeration value that indicates the status for the dequeue request. See <var>TWaitResult</var> for more information about enumeration values and their meanings.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.PopItemTimeout"/>
-          <link id="#rtl.SyncObjs.TWaitResult"/>
-</seealso>
-</element>
-<!-- function result Visibility: public -->
-<element name="TLazThreadedQueue.PopItem.Result">
+          <link id="#FCL.SyncObjs.TWaitResult"/>
+        </seealso>
+      </element>
+      <!-- function result Visibility: public -->
+      <element name="TLazThreadedQueue.PopItem.Result">
         <short>Contains the status for the dequeue request</short>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazThreadedQueue.PopItem.AItem">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazThreadedQueue.PopItem.AItem">
         <short>Item removed from the queue</short>
-</element>
+      </element>
 
-<!-- function Visibility: public -->
-<element name="TLazThreadedQueue.PopItemTimeout">
+      <!-- function Visibility: public -->
+      <element name="TLazThreadedQueue.PopItemTimeout">
         <short>Pops an item off the queue with a timeout value</short>
-<descr>
+        <descr>
           <p>
             <var>PopItemTimeout</var> is a <var>TWaitResult</var> function used to remove the next available item in the queue with a timeout in effect for the dequeue operation.
           </p>
@@ -390,32 +391,32 @@
           <p>
             The return value contains a <var>TWaitResult</var> enumeration value that indicates the status for the dequeue request. See <var>TWaitResult</var> for more information about enumeration values and their meanings.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.PopItem"/>
           <link id="TLazThreadedQueue.ShutDown"/>
-          <link id="#rtl.SyncObjs.TWaitResult"/>
-</seealso>
-</element>
-<!-- function result Visibility: public -->
-<element name="TLazThreadedQueue.PopItemTimeout.Result">
+          <link id="#FCL.SyncObjs.TWaitResult"/>
+        </seealso>
+      </element>
+      <!-- function result Visibility: public -->
+      <element name="TLazThreadedQueue.PopItemTimeout.Result">
         <short>Contains  the status for the dequeue request</short>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazThreadedQueue.PopItemTimeout.AItem">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazThreadedQueue.PopItemTimeout.AItem">
         <short>Item removed from the queue</short>
-</element>
-<!-- argument Visibility: default -->
-<element name="TLazThreadedQueue.PopItemTimeout.Timeout">
+      </element>
+      <!-- argument Visibility: default -->
+      <element name="TLazThreadedQueue.PopItemTimeout.Timeout">
         <short>Maximum number of ticks to wait for the item to be removed from the queue</short>
-</element>
+      </element>
 
-<!-- procedure Visibility: public -->
-<element name="TLazThreadedQueue.DoShutDown">
+      <!-- procedure Visibility: public -->
+      <element name="TLazThreadedQueue.DoShutDown">
         <short>
           Performs actions required when the thread-safe queue is freed
         </short>
-<descr>
+        <descr>
           <p>
             <var>DoShutDown</var> is a procedure used to perform actions required when the instance of the thread-safe queue is freed. DoShutDown sets the value in the <var>ShutDown</var> property to <b>True</b> to signal executing threads that the queue is being freed. In additional, RTL events are set/reset to reflect the state for the internal storage in the queue.
           </p>
@@ -422,19 +423,19 @@
           <p>
             <var>DoShutDown</var> is called prior to freeing resources for the class instance in the <var>Destroy</var> method.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.ShutDown"/>
           <link id="TLazThreadedQueue.Destroy"/>
-</seealso>
-</element>
+        </seealso>
+      </element>
 
-<!-- property Visibility: public -->
-<element name="TLazThreadedQueue.QueueSize">
+      <!-- property Visibility: public -->
+      <element name="TLazThreadedQueue.QueueSize">
         <short>
           Number of storage slots for items in the queue
         </short>
-<descr>
+        <descr>
           <p>
             <var>QueueSize</var> is a read-only <var>Integer</var> property that indicates the number of storage slots available in the internal storage for the queue. The initial value for <var>QueueSize</var> is set using an argument passed to the constructor.
           </p>
@@ -444,8 +445,8 @@
           <p>
             Values in the <var>TotalItemsPushed</var>, <var>TotalItemsPopped</var>, and <var>QueueSize</var> properties determine if storage and/or items are available in the queue.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.TotalItemsPopped"/>
           <link id="TLazThreadedQueue.TotalItemsPushed"/>
           <link id="TLazThreadedQueue.Create"/>
@@ -452,15 +453,15 @@
           <link id="TLazThreadedQueue.PushItem"/>
           <link id="TLazThreadedQueue.PopItem"/>
           <link id="TLazThreadedQueue.PopItemTimeout"/>
-</seealso>
-</element>
+        </seealso>
+      </element>
 
-<!-- property Visibility: public -->
-<element name="TLazThreadedQueue.TotalItemsPopped">
+      <!-- property Visibility: public -->
+      <element name="TLazThreadedQueue.TotalItemsPopped">
         <short>
           Total number of items removed from the queue
         </short>
-<descr>
+        <descr>
           <p>
             <var>TotalItemsPopped</var> is a read-only <var>QWord</var> property that indicates the total number of items removed from the queue. The value in the internal member for the property is incremented each time the <var>PopItem</var> or <var>PopItemTimeout</var> method is completed successfully.
           </p>
@@ -467,20 +468,20 @@
           <p>
             Values in <var>TotalItemsPopped</var> and <var>TotalItemsPushed</var> determine whether items are available in the queue. Use <var>TotalItemsPushed</var> to determine the number of items added to the queue.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.PopItem"/>
           <link id="TLazThreadedQueue.PopItemTimeout"/>
           <link id="TLazThreadedQueue.TotalItemsPushed"/>
-</seealso>
-</element>
+        </seealso>
+      </element>
 
-<!-- property Visibility: public -->
-<element name="TLazThreadedQueue.TotalItemsPushed">
+      <!-- property Visibility: public -->
+      <element name="TLazThreadedQueue.TotalItemsPushed">
         <short>
           Total number of items added to the queue
         </short>
-<descr>
+        <descr>
           <p>
             <var>TotalItemsPushed</var> is a read-only <var>QWord</var> property that indicates the total number of items added to the queue. The value in the internal member for the property is incremented each time the <var>PushItem</var> method is completed successfully.
           </p>
@@ -487,19 +488,19 @@
           <p>
             Values in <var>TotalItemsPushed</var> and <var>TotalItemsPopped</var> determine whether items are available in the queue. Use <var>TotalItemsPopped</var> to determine the total number of items removed from the queue.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.PushItem"/>
           <link id="TLazThreadedQueue.TotalItemsPopped"/>
-</seealso>
-</element>
+        </seealso>
+      </element>
 
-<!-- property Visibility: public -->
-<element name="TLazThreadedQueue.ShutDown">
+      <!-- property Visibility: public -->
+      <element name="TLazThreadedQueue.ShutDown">
         <short>
           Indicates if the DoShutdown method has been called but not finished
         </short>
-<descr>
+        <descr>
           <p>
             <var>ShutDown</var> is a read-only <var>Boolean</var> property which indicates if the DoShutDown method has been called, but not yet completed, for the class instance. The value in ShutDown is used in the <var>PushItem</var> and <var>PopItemTimeout</var> methods to determine the status for the respective requests. The value <var>wrAbandoned</var> is returned from these methods when <var>ShutDown</var> contains <b>True</b>.
           </p>
@@ -506,17 +507,16 @@
           <p>
             The value in <var>ShutDown</var> is set to <b>True</b> in the <var>DoShutDown</var> method.
           </p>
-</descr>
-<seealso>
+        </descr>
+        <seealso>
           <link id="TLazThreadedQueue.DoShutDown"/>
           <link id="TLazThreadedQueue.PushItem"/>
           <link id="TLazThreadedQueue.PopItemTimeout"/>
-          <link id="#rtl.SyncObjs.TWaitResult"/>
-</seealso>
-</element>
+          <link id="#FCL.SyncObjs.TWaitResult"/>
+        </seealso>
+      </element>
 
     </module>
     <!-- lazCollections -->
-
 </package>
 </fpdoc-descriptions>
Index: docs/xml/lazutils/lazfileutils.xml
===================================================================
--- docs/xml/lazutils/lazfileutils.xml	(revision 63090)
+++ docs/xml/lazutils/lazfileutils.xml	(working copy)
@@ -32,15 +32,14 @@
             The return value indicates the relative order in a sort operation, and can contain the following values:
           </p>
           <dl>
-            <dt><code> &lt;0 </code></dt>
+            <dt>&lt;0</dt>
             <dd>Filename1 comes before Filename2</dd>
-            <dt><code> 0 </code></dt>
+            <dt>0</dt>
             <dd>Filename1 and Filename2 to have the same value</dd>
-            <dt><code> &gt;0 </code></dt>
+            <dt>&gt;0</dt>
             <dd>Filename1 comes after Filename2</dd>
           </dl>
         </descr>
-        <errors></errors>
         <seealso>
           <link id="CompareFilenamesIgnoreCase"/>
         </seealso>
@@ -74,11 +73,11 @@
             The return value indicates the relative order in a case-insensitive sort operation, and can contain the following values:
           </p>
           <dl>
-            <dt><code> &lt;0 </code></dt>
+            <dt>&lt;0</dt>
             <dd>Filename1 comes before Filename2</dd>
-            <dt><code> 0 </code></dt>
+            <dt>0</dt>
             <dd>Filename1 and Filename2 to have the same value</dd>
-            <dt><code> &gt;0 </code></dt>
+            <dt>&gt;0</dt>
             <dd>Filename1 comes after Filename2</dd>
           </dl>
         </descr>
@@ -164,12 +163,11 @@
             <var>CompareFilenameStarts</var> is an <var>Integer</var> function used to compare the specified file names to determine their relative sort order. Arguments in Filename1 and Filename2 do not need to be the same length. When they have different lengths, the number of characters common to both are used in the comparison. CompareFilenameStarts calls CompareFileNames to perform the comparison, and get the return value for the function.
           </p>
           <p>
-            See CompareFilename for more information about the numeric return value and its meaning.
+            See CompareFilenames for more information about the numeric return value and its meaning.
           </p>
         </descr>
         <seealso>
-          <link id ="CompareFileNames">CompareFilenames</link>
-          <link id ="CompareFileName">CompareFilename</link>
+          <link id ="CompareFileNames"/>
         </seealso>
       </element>
 
@@ -211,11 +209,11 @@
             <var>IgnoreCase</var> indicates if upper- or lower-case differences are ignored in the file name comparison; the default value for the parameter is <b>False</b> (indicating that case differences are <b>not</b> ignored). For platforms where <b>CaseInsensitiveFilenames</b> is defined, the value in IgnoreCase defaults to <b>True</b>. When IgnoreCase is <b>True</b>, the <var>UTF8CompareText</var> function is called to perform a case-insensitive comparison of the specified file names. Otherwise, the ordinal byte values in the specified file names are compared until a difference is found, or the entire file name in Filename1 has been examined.
           </p>
           <p>
-            If either Filename1 or Filename2 are unassigned (contain <b>Nil</b>) or begin with a Null character (<b>Decimal 0</b>), the return value is set <b>0</b> (<b>zero</b>) and no additional actions are performed in the function. See CompareFilename for more information about the numeric return value for the function and its meaning.
+            If either Filename1 or Filename2 are unassigned (contain <b>Nil</b>) or begin with a Null character (<b>Decimal 0</b>), the return value is set <b>0</b> (<b>zero</b>) and no additional actions are performed in the function. See CompareFilenames for more information about the numeric return value for the function and its meaning.
           </p>
         </descr>
         <seealso>
-          <link id="CompareFilename"/>
+          <link id="CompareFilenames"/>
           <link id="UTF8CompareText"/>
         </seealso>
       </element>
@@ -277,10 +275,10 @@
         </errors>
         <seealso>
           <link id="FileCreateUTF8"/>
-          <link id="FileWrite"/>
-          <link id="FileClose"/>
           <link id="DeleteFileUTF8"/>
           <link id="InvalidateFileStateCache"/>
+          <link id="#rtl.SysUtils.FileWrite"/>
+          <link id="#rtl.SysUtils.FileClose"/>
         </seealso>
       </element>
 
@@ -445,7 +443,7 @@
         </short>
         <descr>
           <p>
-            CheckIfFileIsExecutable is a procedure used to examine the specified file name to see if it is executable. CheckIfFileIsExecutable is implemented for UNIX-like environments, and allows TProcess to better determine if the file can be executed on the platform or OS, and to get better error messages when it cannot.
+            CheckIfFileIsExecutable is a procedure used to examine the specified file name to see if it is executable. CheckIfFileIsExecutable is implemented for UNIX-like environments, and allows  a process to better determine if the file can be executed on the platform or OS, and to get better error messages when it cannot.
           </p>
           <p>
             CheckIfFileIsExecutable raises an exception with a specific message when the platform or OS facilities indicate it is necessary.
@@ -493,9 +491,6 @@
            </dd>
           </dl>
         </errors>
-        <seealso>
-          <link id="#fcl.Process.TProcess"/>
-        </seealso>
       </element>
 
       <!-- argument Visibility: default -->
@@ -537,7 +532,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="FpReadLink"/>
+          <link id="#rtl.System.FpReadLink"/>
           <link id="FileGetAttrUTF8"/>
         </seealso>
       </element>
@@ -565,7 +560,7 @@
         </descr>
         <seealso>
           <link id="FileOpenUTF8"/>
-          <link id="fpfstat"/>
+          <link id="#rtl.System.fpfstat"/>
         </seealso>
       </element>
       <element name="FileIsHardLink.Result">
@@ -582,11 +577,11 @@
         </short>
         <descr>
           <p>
-            FileIsReadable is a Boolean function which indicates if the specified file name is readable. For UNIX-like environments, FpAccess is used to get the return value. On Windows, the return value is the result from FileExistsUTF8. In short, the function is not really useful on the Windows platform where a suitable file attribute does not exist for the purpose.
+            <var>FileIsReadable</var> is a <var>Boolean</var> function which indicates if the specified file name is readable. For UNIX-like environments, FpAccess is used to get the return value. On Windows, the return value is the result from FileExistsUTF8. In short, the function is not really useful on the Windows platform where a suitable file attribute does not exist for the purpose.
           </p>
         </descr>
         <seealso>
-          <link id="FpAccess"/>
+          <link id="#rtl.BaseUnix.FpAccess"/>
           <link id="FileExistsUTF8"/>
         </seealso>
       </element>
@@ -1025,7 +1020,7 @@
         <seealso>
           <link id="TPathDelimSwitch"/>
           <link id="SwitchPathDelims"/>
-          <link id="DirectorySeparator"/>
+          <link id="#RTL.System.DirectorySeparator"/>
         </seealso>
       </element>
 
@@ -1494,7 +1489,7 @@
         </descr>
         <errors></errors>
         <seealso>
-          <link id="#rtl.Dos.FIndFirst"/>
+          <link id="#rtl.SysUtils.FIndFirst"/>
         </seealso>
       </element>
 
@@ -1844,14 +1839,16 @@
           <p>
             <var>GetCurrentDirUTF8</var> is a <var>String</var> function used to get the name for the current directory in the local file system.
           </p>
+          <p>
             For the Windows environment, GetCurrentDirectoryW is called to get the current directory name. UTF8Encode is called to convert the WideString value to UTF-8, and used as the return value for the function.
-          <p>
           </p>
           <p>
             For UNIX-like environments, GetCurrentDir in SysUtils is called to get the current directory name.
           </p>
         </descr>
-        <seealso></seealso>
+        <seealso>
+          <link id="#rtl.SysUtils.GetCurrentDir"/>
+        </seealso>
       </element>
 
       <!-- function result Visibility: default -->
@@ -1949,7 +1946,6 @@
             The return value is True when the specified directory is successfully removed.
           </p>
         </descr>
-        <errors></errors>
         <seealso>
           <link id="#rtl.SysUtils.RemoveDir"/>
         </seealso>
@@ -2061,10 +2057,9 @@
       <element name="FileSizeUtf8">
         <short>Gets the size for the specified file name</short>
         <descr>
-          <var>FileSizeUTF8</var> is an <var>Int64</var> function used to get the size for the file specified in the UTF-8-encoded <var>Filename</var> argument. FileSizeUTF8 calls <var>UTFToAnsi</var> to convert the value in Filename to an AnsiString type, and calls the <var>FindFirst</var> routine in the <file>SysUtils</file> unit to get the size for the specified file name.
+          <var>FileSizeUTF8</var> is an <var>Int64</var> function used to get the size for the file specified in the UTF-8-encoded <var>Filename</var> argument. FileSizeUTF8 calls <var>Utf8ToSys</var> to convert the value in Filename to the system string type type, and calls the <var>FindFirst</var> routine in the <file>SysUtils</file> unit to get the size for the specified file name.
         </descr>
         <seealso>
-          <link id="UTF8ToAnsi"/>
           <link id="#RTL.SysUtils.FindFirst"/>
         </seealso>
       </element>
@@ -2230,7 +2225,7 @@
             <var>TPhysicalFilenameOnError</var> is an enumerated type with values that indicate the action taken when an error is encountered when retrieving the physical file name for a symbolic link on the local file system. TPhysicalFilenameOnError includes the following enumeration values and meanings:
           </p>
           <dl>
-            <dd>pfeException</dd>
+            <dt>pfeException</dt>
             <dd>
               Causes an exception to be raised for the missing file name.
             </dd>
@@ -2390,19 +2385,25 @@
             <var>GetAppConfigFileUTF8</var> is a <var>String</var> function used to get a UTF-8-encoded configuration file name for the current application. GetAppConfigFileUTF8 calls the <var>GetAppConfigFile</var> function in the <file>SysUtils</file> unit to get the return value for the function. <var>SysToUTF8</var> is called for the file name to ensure that it is encoded using the UTF-8 encoding scheme.
           </p>
           <p>
-            <var>Global</var> is a <var>Boolean</var> which indicates if system- or user-specific path information is used in the configuration file name. When Global contains <b>True</b>, the system-wide configuration path is used in the return value. Otherwise, a user-specific path is used in the return value.
+            <var>Global</var> is a <var>Boolean</var> which indicates whether system- or user-specific path information is used in the configuration file name. When Global contains <b>True</b>, the system-wide configuration path is used in the return value. Otherwise, a user-specific path is used in the return value.
           </p>
           <p>
-            <var>SubDir</var> is a <var>Boolean</var> value that indicates if a sub-directory for the application is included in the path for the configuration file. When SubDir is <b>True</b>, a sub-directory with the same name as the application is included in the path information.
+            <var>SubDir</var> is a <var>Boolean</var> value that indicates if a sub-directory for the application is included in the path for the configuration file. When SubDir is <b>True</b>, a "Config" sub-directory  is included in the path information.
           </p>
           <p>
             <var>CreateDir</var> is a <var>Boolean</var> argument that indicates if any missing directories in the configuration file path are created in the function. When CreateDir is <b>False</b>, no additional actions are performed in the function. Otherwise, the path information is passed to <var>ForceDirectoriesUTF8</var> to create any missing directories. If any of the directories are not successfully created, an <var>EInOutError</var> exception is raised with the message in <var>lrsUnableToCreateConfigDirectoryS</var>.
           </p>
+          <p>
+            The return value contains the path to the configuration file including the requested path, configuration file name, and configuration file extension.
+          </p>
         </descr>
+        <errors>
+          Raises an EInOutError exception when directories in the  path cannot be created on the local file system.
+        </errors>
         <seealso>
+          <link id="ForceDirectoriesUTF8"/>
           <link id="#RTL.SysUtils.GetAppConfigFile"/>
-          <link id="#RTL.SysUtils.SysToUTF8"/>
-          <link id="ForceDirectoriesUTF8"/>
+          <link id="#LazUtils.LazUTF8.SysToUTF8"/>
         </seealso>
       </element>
       <element name="GetAppConfigFileUTF8.Result">
@@ -2712,7 +2713,6 @@
         </descr>
         <seealso>
           <link id="TInvalidateFileStateCacheEvent"/>
-          <link id="InvalidateFileStateCacheEvent"/>
         </seealso>
       </element>
 
Index: docs/xml/lazutils/lazlinkedlist.xml
===================================================================
--- docs/xml/lazutils/lazlinkedlist.xml	(revision 63090)
+++ docs/xml/lazutils/lazlinkedlist.xml	(working copy)
@@ -26,7 +26,6 @@
           <link id="TLinkListItem.Next"/>
           <link id="TLinkList.First"/>
           <link id="TLinkList.Last"/>
-          <link id="TLinkList.FFirstFree"/>
         </seealso>
       </element>
 
@@ -142,8 +141,6 @@
         </descr>
         <seealso>
           <link id="TLinkList.CreateItem"/>
-          <link id="TLinkList.FFirstFree"/>
-          <link id="TLinkList.FFreeCount"/>
           <link id="TLinkListItem.Prior"/>
           <link id="TLinkListItem.Next"/>
         </seealso>
@@ -186,7 +183,6 @@
         <seealso>
           <link id="TLinkList.Last"/>
           <link id="TLinkList.AddAsLast"/>
-          <link id="TLinkList.Unbind"/>
         </seealso>
       </element>
 
@@ -199,8 +195,6 @@
         </descr>
         <seealso>
           <link id="TLinkList.AddAsLast"/>
-          <link id="TLinkList.Unbind"/>
-          <link id="TLinkList.FLast"/>
         </seealso>
       </element>
 
@@ -212,10 +206,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="TLinkList.Unbind"/>
           <link id="TLinkList.AddAsLast"/>
-          <link id="TLinkList.FCount"/>
-          <link id="TLinkList.FFreeCount"/>
         </seealso>
       </element>
 
@@ -230,7 +221,6 @@
           </p>
         </descr>
         <seealso>
-          <link id="TLinkList.Unbind"/>
           <link id="TLinkList.Count"/>
           <link id="TLinkListItem.Prior"/>
           <link id="TLinkListItem.Next"/>
@@ -253,7 +243,6 @@
           </p>
         </descr>
         <seealso>
-          <link id="TLinkList.Unbind"/>
           <link id="TLinkList.AddAsLast"/>
           <link id="TLinkListItem.Prior"/>
           <link id="TLinkListItem.Next"/>
@@ -306,7 +295,6 @@
         </descr>
         <seealso>
           <link id="TLinkList.Clear"/>
-          <link id="TLinkList.FFirstFree"/>
           <link id="TLinkListItem.Next"/>
         </seealso>
       </element>
Index: docs/xml/lazutils/lazlogger.xml
===================================================================
--- docs/xml/lazutils/lazlogger.xml	(revision 63090)
+++ docs/xml/lazutils/lazlogger.xml	(working copy)
@@ -1,14 +1,59 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <fpdoc-descriptions>
   <package name="LazUtils">
+    <!--
+    ========================================================================
+      LazLogger
+    ========================================================================
+    -->
     <module name="LazLogger">
+      <short>Provides a log framework</short>
+      <descr>
+        <p>
+          LazLogger provides logging facilities to write message to a file. Messages can be logged plain, or enclosed in begin/end like blocks, adding indent to all messages between to points (blocks can be nested). It also has the ability to filter groups of messages.
+        </p>
+        <p>
+          It can reads the command line and environment to find the desired filename. By default it looks for --debug-log= on the command line or "appname"_debuglog in environment.
+        </p>
+        <p>
+          If no log name is found StdOut is used.
+        </p>
+        <p>
+          The easiest method is to use the unit and put "DebugLn"/ "DbgOut" / "DebugLnEnter"/ "DebugLnExit" in your code. This works without any further setup.
+        </p>
+      </descr>
+
+      <element name="Classes"/>
+      <element name="SysUtils"/>
+      <element name="Types"/>
+      <element name="Math"/>
+      <element name="LazLoggerBase"/>
+      <element name="LazClasses"/>
+      <element name="LazFileUtils"/>
+      <element name="LazStringUtils"/>
+      <element name="LazUTF8"/>
+
+      <element name="PLazLoggerLogGroup">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="DebuglnStack">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="DebuglnStack.s">
+        <short></short>
+      </element>
+
       <element name="DbgOut">
         <short>Write message to log</short>
         <descr>
-          <p>Writes the text to the log. Does not append a new line.
-</p>
+          <p>Writes the text to the log. Does not append a new line.</p>
           <p>The Argument can be:</p>
-          <p>One or more string</p>
+          <p>One or more string(s)</p>
           <p>An open array of const: All values are converted to string and joined</p>
           <p>A single string and open array of const:  Will be passed to Format</p>
           <p>Any of the above with a PLazLoggerLogGroup as filter</p>
@@ -15,14 +60,15 @@
           <p>This is a forwarder to the log TLazLogger object. See there for details.</p>
         </descr>
         <seealso>
-          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
+          <link id="#LazUtils.LazLogger.GetDebugLogger"/>
+          <link id="#LazUtils.LazLogger.SetDebugLogger"/>
+          <link id="#LazUtils.LazLogger.DebugLogger"/>
         </seealso>
       </element>
       <element name="DebugLn">
         <short>Write message to log</short>
         <descr>
-          <p>Writes the text to the log. Does append a new line.
-</p>
+          <p>Writes the text to the log. Does append a new line.</p>
           <p>The Argument can be:</p>
           <p>One or more string</p>
           <p>An open array of const: All values are converted to string and joined</p>
@@ -31,14 +77,17 @@
           <p>This is a forwarder to the log TLazLogger object. See there for details.</p>
         </descr>
         <seealso>
-          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
+          <link id="#LazUtils.LazLogger.GetDebugLogger"/>
+          <link id="#LazUtils.LazLogger.SetDebugLogger"/>
+          <link id="#LazUtils.LazLogger.DebugLogger"/>
         </seealso>
       </element>
       <element name="DebugLnEnter">
         <short>Write message to log</short>
         <descr>
-          <p>Writes the text to the log. Does append a new line. Increases the current intend.
-</p>
+          <p>
+            Writes the text to the log. Does append a new line. Increases the current intend.
+          </p>
           <p>The Argument can be:</p>
           <p>One or more string</p>
           <p>An open array of const: All values are converted to string and joined</p>
@@ -47,14 +96,17 @@
           <p>This is a forwarder to the log TLazLogger object. See there for details.</p>
         </descr>
         <seealso>
-          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
+          <link id="#LazUtils.LazLogger.GetDebugLogger"/>
+          <link id="#LazUtils.LazLogger.SetDebugLogger"/>
+          <link id="#LazUtils.LazLogger.DebugLogger"/>
         </seealso>
       </element>
       <element name="DebugLnExit">
         <short>Write message to log</short>
         <descr>
-          <p>Writes the text to the log. Does append a new line. Increases the current intend.
-</p>
+          <p>
+            Writes the text to the log. Does append a new line. Increases the current intend.
+          </p>
           <p>The Argument can be:</p>
           <p>One or more string</p>
           <p>An open array of const: All values are converted to string and joined</p>
@@ -63,161 +115,650 @@
           <p>This is a forwarder to the log TLazLogger object. See there for details.</p>
         </descr>
         <seealso>
-          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
+          <link id="#LazUtils.LazLogger.GetDebugLogger"/>
+          <link id="#LazUtils.LazLogger.SetDebugLogger"/>
+          <link id="#LazUtils.LazLogger.DebugLogger"/>
         </seealso>
       </element>
-      <element name="TLazLogger">
-        <short>A log writer object</short>
+      <element name="DbgS">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="DbgS.Result">
+        <short></short>
+      </element>
+      <element name="DbgS.c">
+        <short></short>
+      </element>
+      <element name="DbgS.i">
+        <short></short>
+      </element>
+      <element name="DbgS.p">
+        <short></short>
+      </element>
+      <element name="DbgS.q">
+        <short></short>
+      </element>
+      <element name="DbgS.r">
+        <short></short>
+      </element>
+      <element name="DbgS.s">
+        <short></short>
+      </element>
+      <element name="DbgS.e">
+        <short></short>
+      </element>
+      <element name="DbgS.b">
+        <short></short>
+      </element>
+      <element name="DbgS.m">
+        <short></short>
+      </element>
+      <element name="DbgS.ASize">
+        <short></short>
+      </element>
+      <element name="DbgS.i1">
+        <short></short>
+      </element>
+      <element name="DbgS.i2">
+        <short></short>
+      </element>
+      <element name="DbgS.i3">
+        <short></short>
+      </element>
+      <element name="DbgS.i4">
+        <short></short>
+      </element>
+      <element name="DbgS.Shift">
+        <short></short>
+      </element>
+
+      <element name="DbgSJoin">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="DbgSJoin.s1">
+        <short></short>
+      </element>
+      <element name="DbgSJoin.s2">
+        <short></short>
+      </element>
+
+      <element name="DbgSName">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="DbgSName.p">
+        <short></short>
+      </element>
+
+      <element name="dbgObjMem">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="dbgObjMem.Result">
+        <short></short>
+      </element>
+      <element name="dbgObjMem.AnObject">
+        <short></short>
+      </element>
+
+      <element name="dbghex">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="dbghex.Result">
+        <short></short>
+      </element>
+      <element name="dbghex.i">
+        <short></short>
+      </element>
+
+      <element name="dbgMemRange">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="dbgMemRange.Result">
+        <short></short>
+      </element>
+      <element name="dbgMemRange.P">
+        <short></short>
+      </element>
+      <element name="dbgMemRange.Count">
+        <short></short>
+      </element>
+      <element name="dbgMemRange.Width">
+        <short></short>
+      </element>
+
+      <element name="dbgMemStream">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="dbgMemStream.Result">
+        <short></short>
+      </element>
+      <element name="dbgMemStream.MemStream">
+        <short></short>
+      </element>
+      <element name="dbgMemStream.Count">
+        <short></short>
+      </element>
+
+      <element name="DumpExceptionBackTrace">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="DbgStr">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="DbgSt.Result">
+        <short></short>
+      </element>
+      <element name="DbgSt.StringWithSpecialChars">
+        <short></short>
+      </element>
+      <element name="DbgSt.StartPos">
+        <short></short>
+      </element>
+      <element name="DbgSt.Len">
+        <short></short>
+      </element>
+      <element name="DbgSt.p">
+        <short></short>
+      </element>
+
+      <element name="DbgWideStr">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="DbgWideStr.Result">
+        <short></short>
+      </element>
+      <element name="DbgWideStr.StringWithSpecialChars">
+        <short></short>
+      </element>
+
+      <element name="TLazLoggerFileHandle">
+        <short>A log file writer object</short>
         <descr>
-          <p>Provides functionality to write messages to a log file. Allows filtering and changing indent level. 
-</p>
-          <p>Can parse options from command line for log filename and filter settings.
-</p>
-          <p>An application can subclass the logger to add it's own functionality
-</p>
+          <p>
+            Provides functionality to write messages to a log file. Allows filtering and changing indent level.
+          </p>
+          <p>
+            Can parse options from command line for log filename and filter settings.
+          </p>
+          <p>
+            An application can subclass the logger to add it's own functionality.
+          </p>
         </descr>
       </element>
-      <element name="TLazLogger.LogName">
-        <short>The name of the log file</short>
-        <descr>This can be set by the application.
+      <element name="TLazLoggerFileHandle.FActiveLogText"/>
+      <element name="TLazLoggerFileHandle.FCloseLogFileBetweenWrites"/>
+      <element name="TLazLoggerFileHandle.FLastWriteFailed"/>
+      <element name="TLazLoggerFileHandle.FLogName"/>
+      <element name="TLazLoggerFileHandle.FText"/>
+      <element name="TLazLoggerFileHandle.FLogTextInUse"/>
+      <element name="TLazLoggerFileHandle.FUseStdOut"/>
+      <element name="TLazLoggerFileHandle.FWriteFailedCount"/>
+      <element name="TLazLoggerFileHandle.DoOpenFile"/>
+      <element name="TLazLoggerFileHandle.DoCloseFile"/>
+      <element name="TLazLoggerFileHandle.GetWriteTarget"/>
+      <element name="TLazLoggerFileHandle.GetWriteTarget.Result"/>
+      <element name="TLazLoggerFileHandle.SetCloseLogFileBetweenWrites"/>
+      <element name="TLazLoggerFileHandle.SetCloseLogFileBetweenWrites.AValue"/>
+      <element name="TLazLoggerFileHandle.SetLogName"/>
+      <element name="TLazLoggerFileHandle.SetLogName.AValue"/>
 
-Alternatively it can be determined according to ParamForLogFileName and EnvironmentForLogFileName</descr>
+      <element name="TLazLoggerFileHandle.Create">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.ParamForLogFileName">
-        <short>Name of the command line option, that has the logfile's name</short>
-        <descr>If LogName is empty and this is set, then the commandline will be checked for a parameter of the name specified. LogName  will be set, if found.
-
-The default is --debug-log=
-Note that the dashes and equal sign must be present.</descr>
+      <element name="TLazLoggerFileHandle.Destroy">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.DbgOut">
-        <short>Write message to log</short>
+      <element name="TLazLoggerFileHandle.OpenFIle">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.CloseFile">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.ResetWriteFailedCounter">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.WriteToFile">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.WriteToFile.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandle.WriteToFile.ALogger">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandle.WriteLnToFile">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.WriteLnToFile.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandle.WriteLnToFile.ALogger">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandle.LogName">
+        <short>The name of the log file</short>
         <descr>
-          <p>Writes the text to the log. Does not append a new line.
-</p>
-          <p>The Argument can be:</p>
-          <p>One or more string</p>
-          <p>An open array of const: All values are converted to string and joined</p>
-          <p>A single string and open array of const:  Will be passed to Format</p>
-          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
+          This can be set by the application. Alternatively it can be determined according to ParamForLogFileName and EnvironmentForLogFileName
         </descr>
-        <seealso>
-          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
-        </seealso>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.DebugLn">
-        <short>Write message to log</short>
+      <element name="TLazLoggerFileHandle.UseStdOut">
+        <short>Enable writing to STDOUT, if LogName is not set</short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.CloseLogFileBetweenWrites">
+        <short>Enable opening and closing the log for each write</short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.WriteTarget">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.ActiveLogText">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.WriteFailedCount">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandle.LastWriteFailed">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+
+      <element name="TLazLoggerFileHandleThreadSave">
+        <short>Performs file operations using a critical section</short>
         <descr>
-          <p>Writes the text to the log. Does append a new line.
-</p>
-          <p>The Argument can be:</p>
-          <p>One or more string</p>
-          <p>An open array of const: All values are converted to string and joined</p>
-          <p>A single string and open array of const:  Will be passed to Format</p>
-          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
+          <p>
+            TLazLoggerFileHandleThreadSave is a TLazLoggerFileHandle descendant which implements a threaded file logger. TLazLoggerFileHandleThreadSave uses a TRTLCriticalSection class instance to lock the log file during file output operations. Requires that DoOpenFile is called by the main application thread. Otherwise the filehandle may get closed.
+          </p>
         </descr>
-        <seealso>
-          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
-        </seealso>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.DebugLnEnter">
-        <short>Write message to log</short>
+
+      <element name="TLazLoggerFileHandleThreadSave.FWriteToFileLock"/>
+
+      <element name="TLazLoggerFileHandleThreadSave.Create">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandleThreadSave.Destroy">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandleThreadSave.WriteToFile">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandleThreadSave.WriteToFile.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandleThreadSave.WriteToFile.ALogger">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandleThreadSave.WriteLnToFile">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandleThreadSave.WriteLnToFile.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandleThreadSave.WriteLnToFile.ALogger">
+        <short></short>
+      </element>
+
+      <element name="TLazLoggerFileHandleMainThread">
+        <short>File operations are queued for the main thread</short>
         <descr>
-          <p>Writes the text to the log. Does append a new line. Increases the current intend.
-</p>
-          <p>The Argument can be:</p>
-          <p>One or more string</p>
-          <p>An open array of const: All values are converted to string and joined</p>
-          <p>A single string and open array of const:  Will be passed to Format</p>
-          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
+          <p>
+            TLazLoggerFileHandleMainThread is a TLazLoggerFileHandle descendant which implements a file-based logger which queues file operations for the main thread in an application.
+          </p>
         </descr>
-        <seealso>
-          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
-        </seealso>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.DebugLnExit">
-        <short>Write message to log</short>
+
+      <element name="TLazLoggerFileHandleMainThread.PWriteListEntry"/>
+      <element name="TLazLoggerFileHandleMainThread.TWriteListEntry"/>
+      <element name="TLazLoggerFileHandleMainThread.TWriteListEntry.Next"/>
+      <element name="TLazLoggerFileHandleMainThread.TWriteListEntry.Data"/>
+      <element name="TLazLoggerFileHandleMainThread.TWriteListEntry.Ln"/>
+      <element name="TLazLoggerFileHandleMainThread.TWriteListEntry.Logger"/>
+      <element name="TLazLoggerFileHandleMainThread.FWriteToFileLock"/>
+      <element name="TLazLoggerFileHandleMainThread.FFirst"/>
+      <element name="TLazLoggerFileHandleMainThread.FLast"/>
+      <element name="TLazLoggerFileHandleMainThread.MainThreadWrite"/>
+
+      <element name="TLazLoggerFileHandleMainThread.Create">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandleMainThread.Destroy">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandleMainThread.WriteToFile">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandleMainThread.WriteToFile.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandleMainThread.WriteToFile.ALogger">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandleMainThread.WriteLnToFile">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFileHandleMainThread.WriteLnToFile.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFileHandleMainThread.WriteLnToFile.ALogger">
+        <short></short>
+      </element>
+
+      <element name="TLazLoggerFile">
+        <short></short>
         <descr>
-          <p>Writes the text to the log. Does append a new line. Increases the current intend.
-</p>
-          <p>The Argument can be:</p>
-          <p>One or more string</p>
-          <p>An open array of const: All values are converted to string and joined</p>
-          <p>A single string and open array of const:  Will be passed to Format</p>
-          <p>Any of the above with a PLazLoggerLogGroup as filter</p>
+          TLazLoggerFile is a TLazLoggerWithGroupParam descendant.
         </descr>
-        <seealso>
-          <link id="#LazUtils.lazlogger.DebugLogger">DebugLogger</link>
-        </seealso>
+        <seealso></seealso>
       </element>
-      <element name="TLazLoggerLogGroupList"/>
-      <element name="TLazLogger.EnvironmentForLogFileName">
-        <short>Name of the environment, that has the logfile's name</short>
-        <descr>If LogName is empty and con not be found from ParamForLogFileName, then the environment variable specified will be checked.
- LogName  will be set, if found.
 
-* will be replaced by param(0)
+      <element name="TLazLoggerFile.FFileHandle"/>
+      <element name="TLazLoggerFile.FOnDbgOut"/>
+      <element name="TLazLoggerFile.FOnDbgLn"/>
+      <element name="TLazLoggerFile.FBlockHandler"/>
+      <element name="TLazLoggerFile.FEnvironmentForLogFileName"/>
+      <element name="TLazLoggerFile.FParamForLogFileName"/>
+      <element name="TLazLoggerFile.FGetLogFileNameDone"/>
+      <element name="TLazLoggerFile.FIndentCriticalSection"/>
+      <element name="TLazLoggerFile.FDebugNestLvl"/>
+      <element name="TLazLoggerFile.FDebugIndent"/>
+      <element name="TLazLoggerFile.FDebugNestAtBOL"/>
+      <element name="TLazLoggerFile.GetFileHandle"/>
+      <element name="TLazLoggerFile.GetFileHandle.Result"/>
+      <element name="TLazLoggerFile.SetEnvironmentForLogFileName"/>
+      <element name="TLazLoggerFile.SetEnvironmentForLogFileName.AValue"/>
+      <element name="TLazLoggerFile.SetFileHandle"/>
+      <element name="TLazLoggerFile.SetFileHandle.AValue"/>
+      <element name="TLazLoggerFile.SetParamForLogFileName"/>
+      <element name="TLazLoggerFile.SetParamForLogFileName.AValue"/>
+      <element name="TLazLoggerFile.GetLogFileName"/>
+      <element name="TLazLoggerFile.GetLogFileName.Result"/>
+      <element name="TLazLoggerFile.GetCloseLogFileBetweenWrites"/>
+      <element name="TLazLoggerFile.GetCloseLogFileBetweenWrites.Result"/>
+      <element name="TLazLoggerFile.GetLogName"/>
+      <element name="TLazLoggerFile.GetLogName.Result"/>
+      <element name="TLazLoggerFile.GetUseStdOut"/>
+      <element name="TLazLoggerFile.GetUseStdOut.Result"/>
+      <element name="TLazLoggerFile.SetCloseLogFileBetweenWrites"/>
+      <element name="TLazLoggerFile.SetCloseLogFileBetweenWrites.AValue"/>
+      <element name="TLazLoggerFile.SetLogName"/>
+      <element name="TLazLoggerFile.SetLogName.AValue"/>
+      <element name="TLazLoggerFile.SetUseStdOut"/>
+      <element name="TLazLoggerFile.SetUseStdOut.AValue"/>
 
-The default is: *_debuglog
-</descr>
+      <element name="TLazLoggerFile.DoInit">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.UseStdOut">
-        <short>Enable writing to STDOUT, if LogName is not set</short>
+      <element name="TLazLoggerFile.DoFinsh">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.CloseLogFileBetweenWrites">
-        <short>Enable opening and closing the log for each write</short>
+      <element name="TLazLoggerFile.IncreaseIndent">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.OnDebugLn">
+      <element name="TLazLoggerFile.IncreaseIndent.LogEnabled">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.DecreaseIndent">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.DecreaseIndent.LogEnabled">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.IndentChanged">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.CreateIndent">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.GetBlockHandler">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.GetBlockHandler.Result">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.GetBlockHandler.AIndex">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.ClearAllBlockHandler">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.DoDbgOut">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.DoDbgOut.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.DoDebugLn">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.DoDebugLn.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.DoDebuglnStack">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.DoDebuglnStack.s">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.FileHandle">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.Create">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.Destroy">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.Assign">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.Assign.Src">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.CurrentIndentLevel">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.CurrentIndentLevel.Result">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.ParamForLogFileName">
+        <short>Name of the command line option, that has the logfile's name</short>
+        <descr>
+          <p>
+            A param on the commandline, that may contain the name (if not already set) example/default: --debug-log=.
+          </p>
+          <p>
+            If LogName is empty and this is set, then the commandline will be checked for a parameter of the name specified. LogName  will be set, if found. The default value is '--debug-log='. Note that the dashes and equal sign must be present.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.EnvironmentForLogFileName">
+        <short>Name of the environment, that has the logfile name</short>
+        <descr>
+          <p>
+            If LogName is empty and con not be found from ParamForLogFileName, then the environment variable specified will be checked. LogName  will be set, if found.
+          </p>
+          <p>* will be replaced by param(0)</p>
+          <p>The default is: *_debuglog.</p>
+        </descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.OnDebugLn">
         <short>Event when writing a full line (Debugln, DebuglnEnter or DebuglnExit)</short>
-        <descr>The event contains the text to be logged.
-It also has a handled var param, that can be set to True to prevent default action (writing to log)</descr>
+        <descr>
+          The event contains the text to be logged. It also has a handled var param, that can be set to True to prevent default action (writing to log).
+        </descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.OnDbgOut">
+      <element name="TLazLoggerFile.OnDbgOut">
         <short>Event when writing without line end (DbgOut)</short>
-        <descr>The event contains the text to be logged.
-It also has a handled var param, that can be set to True to prevent default action (writing to log)</descr>
+        <descr>
+          <p>
+            The event contains the text to be logged. It also has a handled var param, that can be set to True to prevent default action (writing to log).
+          </p>
+        </descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.NestLvlIndent">
-        <short>Indent to be added for each DebuglnEnter</short>
-        <descr>Default is 2</descr>
+      <element name="TLazLoggerFile.AddBlockHandler">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.MaxNestPrefixLen">
-        <short>Maximum indent for DebuglnEnter</short>
-        <descr>If the indent reaches this value, it will not increase anymore. Instead each line is prefixed with the nest-level of DebuglnEnter
-
-Default is 15</descr>
+      <element name="TLazLoggerFile.AddBlockHandler.AHandler">
+        <short></short>
       </element>
-      <element name="TLazLogger.RegisterLogGroup">
-        <short>Register a named filter </short>
-        <descr>var
-   MyFilter: PLazLoggerLogGroup;
+      <element name="TLazLoggerFile.RemoveBlockHandler">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.RemoveBlockHandler.AHandler">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.BlockHandlerCount">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.BlockHandlerCount.Result">
+        <short></short>
+      </element>
+      <element name="TLazLoggerFile.LogName">
+        <short>The name of the log file</short>
+        <descr>
+          This can be set by the application. Alternatively it can be determined according to ParamForLogFileName and EnvironmentForLogFileName
+        </descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.UseStdOut">
+        <short>Enable writing to STDOUT, if LogName is not set</short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
+      <element name="TLazLoggerFile.CloseLogFileBetweenWrites">
+        <short>Enable opening and closing the log for each write</short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
 
-initialization
-  MyFilter := DebugLogger.RegisterLogGroup('MyFilterName');
-
-then write 
-  debugln(MyFilter, ['Notice: ', SomeText]);
-
-
-The filter can be enabled via the command line. See ParamForEnabledLogGroups</descr>
+      <element name="GetDebugLogger">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <element name="TLazLogger.ParamForEnabledLogGroups">
-        <short>Name of the command line option, to enable or disable LogGroups</short>
+      <element name="GetDebugLogger.Result">
+        <short></short>
       </element>
-      <element name="TLazLogger.LogGroupList">
-        <short>List of all LogGroups</short>
+      <element name="SetDebugLogger">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
       </element>
-      <short>Provides a log framework</short>
-      <descr>LazLogger provides logging facilities to write message to a file. 
-Messages can be logged plain, or enclosed in begin/end like blocks, adding indent to all messages between to points (blocks can be nested).
-It also has the ability to filter groups of messages.
+      <element name="SetDebugLogger.ALogger">
+        <short></short>
+      </element>
+      <element name="DebugLogger">
+        <short></short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
 
-It can reads the command line and environment to find the desired filename. By default it looks for --debug-log= on the command line or "appname"_debuglog in environment.
-
-If no log name is found StdOut is used.
-
-The easiest method is to use the unit and put "DebugLn"/ "DbgOut" / "DebugLnEnter"/ "DebugLnExit" in your code. This works 
-without any further setup.</descr>
     </module>
+    <!-- LazLogger -->
   </package>
 </fpdoc-descriptions>
Index: docs/xml/lazutils/lazmethodlist.xml
===================================================================
--- docs/xml/lazutils/lazmethodlist.xml	(revision 63090)
+++ docs/xml/lazutils/lazmethodlist.xml	(working copy)
@@ -22,7 +22,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="#rtl.System.TMethod">TMethod</link>
+          <link id="#rtl.System.TMethod"/>
         </seealso>
       </element>
 
@@ -178,7 +178,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="TMethodList.Ietms">TMethodList.Items</link>
+          <link id="TMethodList.Items">TMethodList.Items</link>
           <link id="TMethodList.CallNotifyEvents">TMethodList.CallNotifyEvents</link>
         </seealso>
       </element>
@@ -306,12 +306,8 @@
         </errors>
         <seealso>
           <link id="TMethodList.AllowDuplicates">TMethodList.AllowDuplicates</link>
-          <link id="TMethodList.InternalInsert">TMethodList.InternalInsert</link>
           <link id="TMethodList.Count">TMethodList.Count</link>
           <link id="TMethodList.Move">TMethodList.Move</link>
-          <link id="TMethodList.RaiseIndexOutOfBounds">
-            TMethodList.RaiseIndexOutOfBounds
-          </link>
         </seealso>
       </element>
       <element name="TMethodList.Insert.Index">
@@ -343,9 +339,6 @@
         <seealso>
           <link id="TMethodList.Items">TMethodList.Items</link>
           <link id="TMethodList.Count">TMethodList.Count</link>
-          <link id="TMethodList.RaiseIndexOutOfBounds">
-            TMethodList.RaiseIndexOutOfBounds
-          </link>
         </seealso>
       </element>
       <element name="TMethodList.Move.OldIndex">
@@ -369,7 +362,7 @@
         <seealso>
           <link id="TMethodList.Items">TMethodList.Items</link>
           <link id="TMethodList.Delete">TMethodList.Delete</link>
-          <link id="#rtl.System.TMethod">TMethod</link>
+          <link id="#rtl.System.TMethod"/>
         </seealso>
       </element>
       <element name="TMethodList.RemoveAllMethodsOfObject.AnObject">
@@ -385,7 +378,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="#rtl.Classes.TNotifyEvent">TNotifyEvent</link>
+          <link id="#rtl.Classes.TNotifyEvent"/>
         </seealso>
       </element>
       <element name="TMethodList.CallNotifyEvents.Sender">
@@ -401,8 +394,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="TItemsEnumerator">TItemsEnumerator</link>
-          <link id="#rtl.Classes.TFPListEnumerator">TFPListEnumerator</link>
+          <link id="TMethodList.GetEnumerator"/>
         </seealso>
       </element>
       <element name="TMethodList.GetReversedEnumerator.Result">
@@ -415,8 +407,7 @@
           <var>GetEnumerator</var> is a <var>TItemsEnumerator</var> function used to get an enumerator for Items in the list. The enumerator provides access to the current value, and allows navigation to the next value for the enumerator. Item navigation occurs in the natural order (ascending ordinal position) in the list.
         </descr>
         <seealso>
-          <link id="TItemsEnumerator">TItemsEnumerator</link>
-          <link id="#rtl.Classes.TFPListEnumerator">TFPListEnumerator</link>
+          <link id="TMethodList.GetReversedEnumerator"/>
         </seealso>
       </element>
       <element name="TMethodList.GetEnumerator.Result">
@@ -455,7 +446,7 @@
           <link id="TMethodList.GetReversedEnumerator">
             TMethodList.GetReversedEnumerator
           </link>
-          <link id="#rtl.System.TMethod">TMethod</link>
+          <link id="#rtl.System.TMethod"/>
           <link id="#rtl.Classes.EListError">EListError</link>
         </seealso>
       </element>
Index: docs/xml/lazutils/laztracer.xml
===================================================================
--- docs/xml/lazutils/laztracer.xml	(revision 63090)
+++ docs/xml/lazutils/laztracer.xml	(working copy)
@@ -26,8 +26,7 @@
         <seealso>
           <link id="GetStackTracePointers"/>
           <link id="StackTraceAsString"/>
-          <link id="#LCL.LCLProc.TDebugLCLItemInfo.CreationStack"/>
-          <link id="#LCL.LCLProc.TDebugLCLItemInfo.DestructionStack"/>
+          <link id="#LCL.LCLProc.TDebugLCLItemInfo"/>
         </seealso>
       </element>
 
@@ -99,12 +98,11 @@
             <var>GetStackTrace</var> is a <var>String</var> function used to retrieve backtrace information for code addresses in a string format.
           </p>
           <p>
-            Calls <var>GetLineInfo</var> to get information for the code addresses, using the value in <var>UseCache</var> as an argument. UseCache indicates if cached line information from an internal AVL tree can be used in the routine. When UseCache contains <b>False</b>, the <var>BackTraceStrFunc</var> in <file>lclproc.pas</file> is called to get the line information for each of the backtrace addresses.
+            Calls <var>GetLineInfo</var> to get information for the code addresses, using the value in <var>UseCache</var> as an argument. UseCache indicates if cached line information from an internal AVL tree can be used in the routine. When UseCache contains <b>False</b>, the <var>BackTraceStrFunc</var> in <file>lclproc.pas</file> initialization section is called to get the line information for each of the backtrace addresses.
           </p>
         </descr>
         <seealso>
           <link id="GetLineInfo"/>
-          <link id="#LCL.LCLProc.BackTraceStrFunc"/>
         </seealso>
       </element>
       <element name="GetStackTrace.Result">
@@ -164,12 +162,10 @@
             <var>GetLineInfo</var> is a <var>String</var> function used to get information about the code address specified in <var>Addr</var>.
           </p>
           <p>
-            <var>UseCache</var> indicates if cached line information from an internal AVL tree can be used in the routine. When UseCache contains <b>False</b>, the <var>BackTraceStrFunc</var> in <file>lclproc.pas</file> is called to get the line information for each of the backtrace addresses.
+            <var>UseCache</var> indicates if cached line information from an internal AVL tree can be used in the routine. When UseCache contains <b>False</b>, the <var>BackTraceStrFunc</var> in the <file>lclproc.pas</file> initialization section is called to get the line information for each of the backtrace addresses.
           </p>
         </descr>
-        <seealso>
-          <link id="#LCL.LCLProc.BackTraceStrFunc"/>
-        </seealso>
+        <seealso/>
       </element>
       <element name="GetLineInfo.Result">
         <short>String with information about the code address</short>
Index: docs/xml/lazutils/lazunicode.xml
===================================================================
--- docs/xml/lazutils/lazunicode.xml	(revision 63090)
+++ docs/xml/lazutils/lazunicode.xml	(working copy)
@@ -37,11 +37,13 @@
           Copies the specified number of codepoints starting at a character position
         </short>
         <descr>
-          Copies the number of codepoints in CharCount from s, starting at the character position in StartCharIndex. For platforms that require UTF-16, UTF16Copy is called. For other platforms, UTF8Copy is called.
+          <p>
+            Copies the number of codepoints in <var>CharCount</var> from <var>s</var>, starting at the character position in <var>StartCharIndex</var>. For platforms that require UTF-16, <var>UTF16Copy</var> is called. For other platforms, <var>UTF8Copy</var> is called.
+          </p>
         </descr>
         <seealso>
-          <link id="#lcl.LazUtils.LazUTF16.UTF16Copy">UTF16Copy</link>
-          <link id="#lcl.LazUtils.LazUTF8.UTF8Copy">UTF8Copy</link>
+          <link id="#LazUtils.LazUTF16.UTF16Copy"/>
+          <link id="#LazUtils.LazUTF8.UTF8Copy"/>
         </seealso>
       </element>
       <!-- function result Visibility: default -->
Index: docs/xml/lazutils/lazutf8.xml
===================================================================
--- docs/xml/lazutils/lazutf8.xml	(revision 63090)
+++ docs/xml/lazutils/lazutf8.xml	(working copy)
@@ -196,11 +196,11 @@
         </short>
         <descr>
           <p>
-            ParamStrUTF8 is a String function used to convert the specified command line parameter to a UTF-8-encoded string. The implementation for ParamStrUTF8 is OS- or platform-specific. For UNIX-like environments, SysToUTF8 is called to convert the value for the command line parameter at the position in Param. For Windows platforms like WinCE,  the stub for the Ansi or WideString version of ParamStr is called.
+            <var>ParamStrUTF8</var> is a String function used to convert the specified command line parameter to a UTF-8-encoded string. The implementation for ParamStrUTF8 is OS- or platform-specific. For UNIX-like environments, SysToUTF8 is called to convert the value for the command line parameter at the position in Param. For Windows platforms like WinCE,  the stub for the Ansi or WideString version of ParamStr is called.
           </p>
         </descr>
         <seealso>
-          <link id="#rtl.ObjPas.ParamStr">ObjPas.ParamStr</link>
+          <link id="SysToUTF8"/>
         </seealso>
       </element>
       <element name="ParamStrUTF8.Result">
Index: docs/xml/lazutils/lazutf8classes.xml
===================================================================
--- docs/xml/lazutils/lazutf8classes.xml	(revision 63090)
+++ docs/xml/lazutils/lazutf8classes.xml	(working copy)
@@ -121,7 +121,7 @@
           Name of the file where stream content is read or written
         </short>
         <descr>
-          FileName is a read-only String property that contains the name of the file where stream content is read or 
+          FileName is a read-only String property that contains the name of the file where stream content is read or
 written. FileName can contain UTF-8-encoded characters.
         </descr>
         <seealso></seealso>
@@ -193,7 +193,7 @@
         </short>
         <descr>
           <p>
-            SaveToFile is a procedure used to save the content in the string list to the specified file name. FileName can 
+            SaveToFile is a procedure used to save the content in the string list to the specified file name. FileName can
 contain UTF-8-encoded characters. SaveToFile uses a TFileStreamUTF8 instance to create the file specified in FileName, and calls the SaveToStream method to store values from the string list.
           </p>
         </descr>
@@ -261,7 +261,7 @@
         </short>
         <descr>
           <p>
-            LoadStringsFromFileUTF8 is a procedure used to load the content for a string list from the specified file name. 
+            LoadStringsFromFileUTF8 is a procedure used to load the content for a string list from the specified file name.
 List is the TStrings decendant where the content from FileName is stored. FileName can contain UTF-8-encoded characters. LoadStringsFromFileUTF8 creates an internal TStringListUTF8 instance (when needed) that is used to load the content in FileName, and calls the Assign method in List to store the values.
           </p>
         </descr>
@@ -314,11 +314,11 @@
             CompareStringListItemsUTF8LowerCase converts the string values to lowercase using UTF8LowerCase, and calls the CompareStr function to perform the comparison. The return value is in the following ranges:
           </p>
           <dl>
-            <dt><code> &lt;0 </code></dt>
+            <dt>&lt;0</dt>
             <dd>String at Index1 comes before String at Index2</dd>
-            <dt><code> 0 </code></dt>
+            <dt>0</dt>
             <dd>Strings have the same value</dd>
-            <dt><code> &gt;0 </code> </dt>
+            <dt>&gt;0</dt>
             <dd>String at Index1 comes after String at Index2</dd>
           </dl>
         </descr>
Index: docs/xml/lazutils/lazversion.xml
===================================================================
--- docs/xml/lazutils/lazversion.xml	(revision 63090)
+++ docs/xml/lazutils/lazversion.xml	(working copy)
@@ -21,9 +21,7 @@
         <descr>
           For the Lazarus version number 2.1.0.42, the value in laz_major is 2.
         </descr>
-        <seealso>
-          <link id="#lcl.LCLVersion.lcl_major"/>
-        </seealso>
+        <seealso/>
         <version>
           Added in revision 57504, and available since Lazarus 1.8.4.0.
         </version>
@@ -34,9 +32,7 @@
         <descr>
           For the Lazarus version number 2.1.0.42, the value in laz_minor is 1.
         </descr>
-        <seealso>
-          <link id="#lcl.LCLVersion.lcl_minor"/>
-        </seealso>
+        <seealso/>
         <version>
           Added in revision 57504, and available since Lazarus 1.8.4.0.
         </version>
@@ -47,9 +43,7 @@
         <descr>
           For the Lazarus version number 2.1.0.42, the value in laz_release is 0.
         </descr>
-        <seealso>
-          <link id="#lcl.LCLVersion.lcl_release"/>
-        </seealso>
+        <seealso/>
         <version>
           Added in revision 57504, and available since Lazarus 1.8.4.0.
         </version>
@@ -60,9 +54,7 @@
         <descr>
           For the Lazarus version number 2.1.0.42, the value in laz_patch is 42.
         </descr>
-        <seealso>
-          <link id="#lcl.LCLVersion.lcl_patch"/>
-        </seealso>
+        <seealso/>
         <version>
           Added in revision 57504, and available since Lazarus 1.8.4.0.
         </version>
@@ -73,9 +65,7 @@
         <descr>
           For the Lazarus version number 2.1.0.42, the value in laz_fullversion is 2010042.
         </descr>
-        <seealso>
-          <link id="#lcl.LCLVersion.lcl_fullversion"/>
-        </seealso>
+        <seealso/>
         <version>
           Added in revision 57504, and available since Lazarus 1.8.4.0.
         </version>
@@ -86,9 +76,7 @@
         <descr>
           For the Lazarus version number 2.1.0.42, the value in laz_version is '2.1.0.42'.
         </descr>
-        <seealso>
-          <link id="#lcl.LCLVersion.lcl_version"/>
-        </seealso>
+        <seealso/>
         <version>
           Added in revision 57504, and available since Lazarus 1.8.4.0.
         </version>
Index: docs/xml/lazutils/maps.xml
===================================================================
--- docs/xml/lazutils/maps.xml	(revision 63090)
+++ docs/xml/lazutils/maps.xml	(working copy)
@@ -555,7 +555,7 @@
           </p>
         </descr>
         <seealso>
-          <link id="TMap.GetData">TMap.GetData</link>
+          <link id="#LazUtils.Maps.TMap.GetData"/>
         </seealso>
       </element>
       <!-- function result Visibility: protected -->
@@ -588,9 +588,8 @@
           </p>
         </descr>
         <seealso>
-          <link id="TBaseMap.Delete">TBaseMap.Delete</link>
-          <link id="TBaseMap.FreeData">TBaseMap.FreeData</link>
-          <link id="TMap.GetDataPtr">TMap.GetDataPtr</link>
+          <link id="TBaseMap.Delete"/>
+          <link id="#LazUtils.Maps.TMap.GetDataPtr"/>
         </seealso>
       </element>
       <!-- function result Visibility: protected -->
Index: docs/xml/lazutils/objectlists.xml
===================================================================
--- docs/xml/lazutils/objectlists.xml	(revision 63090)
+++ docs/xml/lazutils/objectlists.xml	(working copy)
@@ -362,7 +362,7 @@
         <seealso>
           <link id="TObjectArray.List"/>
           <link id="TObjectArray.Count"/>
-          <link id="T2Pointer.Item"/>
+          <link id="T2Pointer"/>
         </seealso>
       </element>
       <element name="TObjectArray.First.Result">
@@ -383,7 +383,7 @@
         </descr>
         <seealso>
           <link id="TObjectArray.List"/>
-          <link id="T2Pointer.Item"/>
+          <link id="T2Pointer"/>
         </seealso>
       </element>
       <element name="TObjectArray.IndexOf.Result">
@@ -452,7 +452,7 @@
         <seealso>
           <link id="TObjectArray.List"/>
           <link id="TObjectArray.Count"/>
-          <link id="T2Pointer.Item"/>
+          <link id="T2Pointer"/>
         </seealso>
       </element>
       <element name="TObjectArray.Last.Result">
@@ -502,7 +502,7 @@
           <link id="TObjectArray.Clear"/>
           <link id="TObjectArray.Count"/>
           <link id="TObjectArray.List"/>
-          <link id="T2Pointer.Item"/>
+          <link id="T2Pointer"/>
         </seealso>
       </element>
       <element name="TObjectArray.Assign.SrcList">
@@ -545,7 +545,7 @@
         <seealso>
           <list id="TObjectArray.List"/>
           <list id="TObjectArray.Count"/>
-          <list id="T2Pointer.Item"/>
+          <list id="T2Pointer"/>
         </seealso>
       </element>
 
fix-links-lazutils.diff (206,874 bytes)   
fix-links-lcl.diff (553,570 bytes)

Maxim Ganetsky

2020-04-30 00:40

developer   ~0122534

Applied, thanks.

Issue History

Date Modified Username Field Change
2020-04-29 04:40 Don Siders New Issue
2020-04-29 04:40 Don Siders File Added: fix-links-lazutils.diff
2020-04-29 04:40 Don Siders File Added: fix-links-lcl.diff
2020-04-30 00:40 Maxim Ganetsky Assigned To => Maxim Ganetsky
2020-04-30 00:40 Maxim Ganetsky Status new => resolved
2020-04-30 00:40 Maxim Ganetsky Resolution open => fixed
2020-04-30 00:40 Maxim Ganetsky Fixed in Version => 2.2
2020-04-30 00:40 Maxim Ganetsky Fixed in Revision => 63092
2020-04-30 00:40 Maxim Ganetsky LazTarget => -
2020-04-30 00:40 Maxim Ganetsky Note Added: 0122534
2020-04-30 04:06 Don Siders Status resolved => closed