*** TODO for libtagcoll

If mergeequivalent is called on a child node of a tree node, the
resulted hiearchy might come out with a single root node.  In that
case, the node previously selected is equivalent to the root.

Option 1: take the parent into account when merging
Option 2: self-expand lone child nodes


 - Implement cleanup of the tagcoll with noise filtering (removing tags with
   cardinality less than a given threshold) and merging of equivalent tags.
   Implement as a method of TagCollection, that gives the new, cleaned
   collection.

	 - Another optimization would be to remove intermediate hierarchy nodes wich
		contain a single child node and no elements.

		It could just be implemented by merging tagsets with cardinality under a
		given threshold into the nearest, bigger one.  Like filtering insignificant
		or "noise" tag data before building the structure.

		The optimization must be kept optional, because it induces a loss of tag
		informations if the resulting tagged collection is used as the only way to
		store the results like with tagbk

 - Document the tree-cleaning features:
	 - noise reduction
	 - merging of equivalent items
    - flattenThreshold

 - Implications can be seen as a simple form of derived tags: handling them in
   that way could avoid the need of multiple
   expand-implications/add-derived-tags/expand-implications cycles

 * Version 0.6

--- 2004-05-20
 + Instantiated template also for Debtags::Package* item type
   (still waiting for a way to avoid having to explicitly instantiate templates
    for any possible future usage)
--- 2004-06-16
 + Implemented InputMerger::getRelatedItems
--- 2004-05-13
 + Moved TagCollection::Change to TagcollChange
 + Implemented InputMerger::applyChange


 * Version 0.5

---
 + Templatize more of the consumer/filter process
 + TagCollection: add an output(consumer) method to dump the collection to a
   consumer
 + TagCollection: add a mergeEquivalenTags method
	If a tree node has only one child non-leaf node, compress them in a single
	one merging the tree tags.
	For example: /a/b/ could become /a,b/
 + Implement CleanSmartHierarchyNode
 + Implement noise reduction (remove tags with cardinality less than a given
   threshold)

 vim:set ts=3 sw=3:
