Passing a collection as an argument to the collection’s own method is a code defect. Doing so might either have unexpected side effects or always have the same result.
Another case is using set-like operations. For example, using Union between a list and itself will always return the same list. Conversely, using Except between a list and itself will always return an empty list.
var list = new List<int>(); list.AddRange(list); // Noncompliant list.Concat(list); // Noncompliant list.Union(list); // Noncompliant: always returns list list.Intersect(list); // Noncompliant: always returns list list.Except(list); // Noncompliant: always returns empty list.SequenceEqual(list); // Noncompliant: always returns true var set = new HashSet<int>(); set.UnionWith(set); // Noncompliant: no changes set.IntersectWith(set); // Noncompliant: no changes set.ExceptWith(set); // Noncompliant: always returns empty set.SymmetricExceptWith(set); // Noncompliant: always returns empty set.IsProperSubsetOf(set); // Noncompliant: always returns false set.IsProperSupersetOf(set); // Noncompliant: always returns false set.IsSubsetOf(set); // Noncompliant: always returns true set.IsSupersetOf(set); // Noncompliant: always returns true set.Overlaps(set); // Noncompliant: always returns true set.SetEquals(set); // Noncompliant: always returns true