Start here. This is the direct spoken answer to practice first.
Overview
Preventing mutation through one reference does not necessarily make the observed data stable.
An unmodifiable collection rejects mutation through its own API, but it may still be a view of a mutable backing collection. If the owner changes that backing collection, the view can reflect the change. List.copyOf creates an unmodifiable snapshot of the input elements, while Collections.unmodifiableList wraps a list as a read-only view. Neither option makes mutable elements themselves immutable, so the distinction is usually shallow.