Solution (source code)

= Solution

An <immutable object> has no changeable observable state after its <object constructor> finishes. Two clients may hold references to the same <immutable object>, but neither can change what the other observes. Thus sharing an <immutable object> avoids the interference normally associated with <reference aliasing>: for example, sharing a <Java> `String` is safe because a text-changing operation returns another <software object> rather than modifying that <String data type> value.

A `final` reference alone does not establish an <immutable object>: it prevents reassignment of that reference, but its referent could still be mutable. An <immutable object> must also protect any reachable mutable state, for instance through <defensive copying>. With that qualification, the essential answer is
$$
\boxed{\text{unchanging observable state permits sharing without update interference}.}
$$