I think you should keep it as Set rather than UnmodifieableSetView. Externally it is better if the APIs stick to core collections. Now you can still assign UnmodifieableSetView to it, that way it will blow up if anyone tries to change it.