We could do a further optimisation here and skip `Contains` if `new List`, thoughts?