public void RemoveRange(IEnumerable <T> value) { if (!IsSorted(this)) { Sort(Comparer); } var list = new StackListQueue <int>(value.Select(v => BinarySearch(v, Comparer)) .Where(index => index >= 0)); list.Sort(); list.Reverse(); foreach (int index in list) { RemoveAt(index); } }