A useful regression test would separate structural changes from element changes: add an item to the source list, then mutate a field on an object already in it. The first should leave a List.copyOf snapshot unchanged; the second exposes the shallow-copy boundary you describe. For a queued job, immutable element records matter just as much as the list wrapper.