Updated Without() extension methods to use ThrowIf + better asymptotic complexit (HashSet usage)