Hi
Obviously this all depends on context and what is trying to be achieved ;)
In certain cases all we want to do is ensure the container is not modifiable but don�t mind access to the held objects within. if the internal data is immutable (e.g. a representation of an error) then we don�t care if they have access to this data but we may care that they modify the collection that holds these objects. You then need to weigh in with a pro/con of using unmodifiable collections versus a copy; most of the time a copy is all you need as the collections will be small.