On Wed, 15 Mar 2023 18:56:11 GMT, Chen Liang <li...@openjdk.org> wrote:
>> TANSTAAFL >> >> I suggest to leave the code as-is. > > True, my previous suggestion is largely trivial. > > In addition, I suggest to run `replaceAll` to ensure the map elements of each > value of `namedMembers` is unmodifiable as well: > > namedMembers.replaceAll((k, m) -> { > m.replaceAll((n, members) -> Collections.unmodifiableList(members)); > return Collections.unmodifiableMap(m); > }); I believe that shallow unmodifiability of namedMembers is a bug, which you spotted. We either should fix it by making it deeply unmodifiable, or remove this defensiveness altogether: those lists and maps (especially maps) are internal and should never escape. I suppose, it's better to fix it now and revisit later. ------------- PR: https://git.openjdk.org/jdk/pull/13044