Collections Data Structure C#

//http://tfsbugger.codeplex.com/
//GNU General Public License version 2 (GPLv2)
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
namespace TfsBugger.Util
{
    public class Set : Collection
        where T : IComparable
    {
        #region Ctors
        public Set()
        {
        }
        public Set(IList list)
        {
            foreach (T t in list)
                Add(t);
        }
        public Set(IEnumerable items)
        {
            AddRange(items);
        }
        public Set(params T[] items)
        {
            AddRange(items);
        }
        #endregion
        public void AddRange(IEnumerable items)
        {
            foreach (T t in items)
                Add(t);
        }
        public bool RemoveIfPresent(T item)
        {
            if (Contains(item))
            {
                Remove(item);
                return true;
            }
            return false;
        }
        public void Sort(Comparison comparison)
        {
            IEnumerable items = from i in this
                                   orderby comparison
                                   select i;
            Clear();
            AddRange(items);
        }
        public bool TryAdd(T item)
        {
            if (!this.Contains(item))
            {
                Add(item);
                return true;
            }
            return false;
        }
        public bool TryRemove(T item)
        {
            if (this.Contains(item))
            {
                Remove(item);
                return true;
            }
            return false;
        }
        protected override void InsertItem(int index, T item)
        {
            if (!this.Contains(item))
                base.InsertItem(index, item);
        }
        public void ForEach(Action action)
        {
            foreach (T item in this)
                action(item);
        }
        public T[] ToArray()
        {
            return new List(this).ToArray();
        }
    }
}