== 1. A record does not copy the list you give it == leaky.items() = [pen, book, laptop] after leaky.items().add("phone"), basket = [pen, book, laptop, phone] == 2. List.copyOf in the compact constructor == safe.items() = [pen, book] safe.items().add(...) -> UnsupportedOperationException == 3. 'Changing' a record means building a new one == safe = SafeOrder[id=A-2, items=[pen, book]] bigger = SafeOrder[id=A-2, items=[pen, book, charger]] == 4. A mutable Date component == LeakyEvent.when().getTime() after caller mutates d1 = 86400000 SafeEvent.when().getTime() after both mutations = 0