Как создать глубокую неизменяемую коллекцию?

Я часто делаю поле коллекции неизменяемым, прежде чем возвращать его из метода получения:

private List<X> _xs;
....
List<X> getXs(){
  return Collections.unmodifiableList(_xs);
}

Но я не могу придумать удобный способ сделать это, если X выше сам по себе List:

private List<List<Y>> _yLists;
.....
List<List<Y>> getYLists() {
  return Collections.unmodifiableList(_yLists);
}

Проблема в приведенном выше состоит, конечно, в том, что, хотя клиент не может изменить список списков, он может добавлять / удалять объекты Y из встроенных списков.

Какие-нибудь мысли?

Ответы на вопрос(6)

Ваш ответ на вопрос