public int CompareTo(VisualStudioTaskItem other)
            {
                Contract.Requires(this.ItemCategory == other.ItemCategory);
                Contract.Requires(this.Info.Workspace == other.Info.Workspace);
                Contract.Requires(this.Info.Workspace is VisualStudioWorkspace);

                return(ProjectCompareTo(this.Info.Workspace.CurrentSolution, this.Info, other.Info));
            }
            public bool Equals(VisualStudioTaskItem other)
            {
                if (this == other)
                {
                    return(true);
                }

                return(_checked == other._checked && base.Equals(other));
            }
            public bool Equals(VisualStudioTaskItem other)
            {
                if (this == other)
                {
                    return(true);
                }

                return(base.Equals(other) &&
                       this.Info.ProjectId == other.Info.ProjectId &&
                       this.Info.Severity == other.Info.Severity &&
                       this.Info.Id == other.Info.Id);
            }
        private VisualStudioTaskItem[] GetItemsNotInSet_NoLock(VisualStudioTaskItem[] items, int sharedCount)
        {
            var taskItems = new VisualStudioTaskItem[items.Length - sharedCount];

            var index = 0;

            for (var i = 0; i < items.Length; i++)
            {
                if (_inProcessSet.Contains(items[i]))
                {
                    continue;
                }

                taskItems[index++] = items[i];
            }

            Contract.Requires(items.Where(i => !_inProcessSet.Contains(i)).SetEquals(taskItems));
            return(taskItems);
        }