+2010-04-09 Raja R Harinath <harinath@hurrynot.org>
+
+ Don't maintain state in the view
+ * SortedSet.cs (SortedSubSet.count): Remove.
+ (SortedSubSet..ctor): Move counting loop ...
+ (SortedSubSet.Count): ... here.
+ (SortedSubSet.TryAdd, SortedSubSet.TryRemove): Update to changes.
+ (SortedSubSet.GetMin, SortedSubSet.GetMax): Likewise. Use bounds
+ to determine if the view is empty, rather than the count.
+
+2010-04-07 Raja R Harinath <harinath@hurrynot.org>
+
+ Enable set comparision operations on views, and improve performance
+ * RBTree.cs (Bound): New. Returns the greatest lower bound and
+ least upper bound of the given key.
+ (GetSuffixEnumerator): New. Returns an enumerator that starts at
+ the given key.
+ (NodeEnumerator): Provide suffix enumerator functionality.
+ * SortedSet.cs (GetEnumerator): Delegate to ...
+ (TryGetEnumerator): ... this. New virtual function.
+ (Enumerator): Provide subset enumeration using RBTree's suffix enumerators.
+ (SortedSubSet.count): New.
+ (SortedSubSet.GetCount): Use it.
+ (SortedSubSet.TryAdd, SortedSubSet.TryRemove): Update count.
+ (SortedSubSet.GetMin, SortedSubSet.GetMax): Use RBTree.Bound().
+ (SortedSubSet.GetEnumerator): Remove.
+ (SortedSubSet.TryGetEnumerator): New. Use ranged enumerators.
+
+2010-04-06 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: implement Count for SortedSubSet.
+
+2010-04-05 Raja R Harinath <harinath@hurrynot.org>
+
+ * SortedSet.cs (IsProperSubsetOf, IsSubsetOf): Implement using ...
+ (is_subset_of): ... new helper.
+ (IsProperSupersetOf, IsSupersetOf): Implement using ...
+ (is_superset_of): ... new helper.
+ (covers, nodups, overlaps): New helpers.
+ (SetEquals): Implement.
+ (Overlaps): Implement using overlaps().
+ (SymmetricExceptWith): Use nodups() helper.
+
+2010-04-04 Raja R Harinath <harinath@hurrynot.org>
+
+ * SortedSet.cs (CheckArgumentNotNull): New helper.
+ (IntersectWith, UnionWith): Implement.
+ (ExceptWith, SymmetricExceptWith): Likewise.
+ (SortedSubSet.IntersectWith): Implement override.
+
+ * RBTree.cs (do_remove): Ensure the node returned is suitable for
+ re-insertion.
+
+2010-04-02 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: implement Mix and Max for subsets.
+
+2010-04-02 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: implement GetViewBetween.
+
+2010-04-02 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: optimize Reverse. Add a virtual TryAdd and TryRemove
+ to override in sub trees.
+
+2010-04-02 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: implement Min and Max.
+
+2010-04-02 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: implement RemoveWhere.
+
+2010-04-02 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: implement Reverse.
+
+2010-04-01 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: fix API.
+
+2010-04-01 Jb Evain <jbevain@novell.com>
+
+ * SortedSet.cs: add new SortedSet type in .net 4.0
+
+2010-03-03 Miguel de Icaza <miguel@novell.com>
+
+ * RBTree.cs: Make these serializable, should fix the serialization
+ across appdomains of SortedDictionaries
+
+2010-03-11 Sebastien Pouliot <sebastien@ximian.com>
+
+ * ISet.cs: Add NET_2_1 since this is part of SL4
+
+2009-12-01 Jb Evain <jbevain@novell.com>
+
+ * Stack.cs (Enumerator.Dispose): tag the enumerator as finished
+ upon Dispose.
+
+2009-11-26 Marek Safar <marek.safar@gmail.com>
+
+ * LinkedList.cs: Allocate less.
+
+2009-11-25 Jb Evain <jbevain@novell.com>
+
+ * Queue.cs (Enqueue): deal with the case where the tail
+ is off the array when deciding to enlarge the capacity.
+
+2009-11-25 Jb Evain <jbevain@novell.com>
+
+ * Queue.cs (ICollection.CopyTo): fix typo, remove code duplication.
+
+2009-11-02 Miguel de Icaza <miguel@novell.com>
+
+ * ISet.cs: Added new interface.
+
+2009-10-20 Marek Safar <marek.safar@gmail.com>
+
+ * SortedList.cs, LinkedList.cs, Queue.cs, Stack.cs,
+ SortedDictionary.cs: Improve debugging experience.
+
+2009-07-31 Raja R Harinath <harinath@hurrynot.org>
+
+ * RBTree.cs (NodeEnumerator.check_current): New helper.
+ (NodeEnumerator.Current): Don't check invariants.
+ * SortedDictionary.cs (Enumerator.Current): Likewise.
+ (ValueCollection.Enumerator.Current): Likewise.
+ (KeyCollection.Enumerator.Current): Likewise.
+
+2009-07-26 Miguel de Icaza <miguel@novell.com>
+
+ * Stack.cs: Check arguments.
+
+2009-07-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+ * SortedList.cs: the IComparar.Compare arguments were reversed.
+ Fixes bug #521750. Patch by Kevin Fitzgerald.
+
+2009-05-10 Andy Hume <andyhume32@yahoo.co.uk>
+
+ * LinkedList.cs: Add null check. Fixes #481621.
+
+2009-03-11 Zoltan Varga <vargaz@gmail.com>
+
+ * SortedList.cs: Add version checking to the Key/Value enumerators +
+ implement support for Reset (). Fixes #483985.
+
+2009-05-06 Pia Eriksson <pe@hallerud.se>
+
+ * SortedList.cs: Handle Count == 0 in CopyTo correcly
+ * SortedDictionary.cs: Handle Count == 0 in CopyTo correcly
+
+2007-11-15 Roei Erez <roeie@mainsoft.com>
+
+ * Stack.cs: Performance improvement in the case where the stack is popped
+ until empty. Changed the condition for resizing the array, and instead of
+ check for zero size, check if the inner array is null.
+
+2007-11-15 Jb Evain <jbevain@novell.com>
+
+ * LinkedList.cs: ifdef out manually the Serialization part of the
+ LinkedList.Enumerator. As it is a struct, the field SerializationInfo
+ have to be assigned in the default constructor, and the tuner cannot
+ remove that. Fixes #341938 for real.
+
+2007-10-09 Raja R Harinath <rharinath@novell.com>
+
+ * RBTree.cs (get_Item, do_remove): Remove redundant code.
+
+2007-08-20 Jb Evain <jbevain@novell.com>
+
+ * SortedList.cs: don't crash in ListKeys and ListValues
+ when CopyTo targets an empty array, and that the
+ sorted list is empty. Fixes #82492.
+
+2007-05-08 Raja R Harinath <rharinath@novell.com>
+
+ Avoid unnecessary allocation on indexer access
+ * SortedDictionary.cs (NodeHelper): Rename from NodeComparer.
+ (NodeHelper.CreateNode): New.
+ (Item.set): Move responsibility of creating new nodes to
+ RBTree.Intern.
+ * RBTree.cs (INodeHelper): Rename from INodeComparer.
+ (INodeHelper.CreateNode): New.
+ (Intern): Use it to create a new node if no node is passed in.
+
+2007-05-08 Igor Zelmanovich <igorz@mainsoft.com>
+
+ * RBTree.cs: for TARGET_JVM used Thread Local Storage
+ istead Thread-Relative Static Fields
+
+2007-05-02 Raja R Harinath <rharinath@novell.com>
+
+ * RBTree.cs (Enumerator.Current): Remove nullref.
+
+ * SortedDictionary.cs (ICollection.Contains): Use EqualityComparer
+ for comparing the value field.
+
+ * RBTree.cs (do_remove): Remove some redundant assignments/checks.
+ (NodeEnumerator): Simplify. Keep track of a list of
+ right-pennants that need to be traversed next, rather than
+ comparing parent pointers.
+
+2007-05-02 Raja R Harinath <harinath@gmail.com>
+
+ Make add and remove operations O(log n).
+ * SortedDictionary.cs: Rewrite to use the red-black tree
+ implementation from RBTree.cs.
+ * RBTree.cs: Some more refactoring. Rename Insert() to Intern(),
+ and modify semantics slightly. Replace Contains() with Lookup().
+
+2007-04-30 Raja R Harinath <rharinath@novell.com>
+
+ * RBTree.cs: Refactor to reduce generics code.
+
+2007-04-30 Raja R Harinath <harinath@gmail.com>
+
+ * RBTree.cs: New red-black tree implementation for use with
+ SortedDictionary.
+
2007-04-19 Gert Driesen <drieseng@users.sourceforge.net>
* Queue.cs: Fixed binary serialization, based on patch provided by