If we want to have Sets then we could also simply change the signature to accept "Set<? extends ObjectID>". This would put the burden of converting Lists to Sets to the caller. But the benefit would be that some callers can create Sets in the first place (instead of first creating Lists and then converting them to Sets). Is it because we have too many callers which have to be adapted or why don't you go this way