Class ProvenContainerChange

java.lang.Object
org.ek9lang.compiler.phase5.ProvenContainerChange

final class ProvenContainerChange extends Object
THE reading of whether something may change the OBJECT an Optional / Result / Iterator variable refers to, so that a proof that its get(), ok(), error() or next() is safe (E08030) no longer holds: D66 ("a call that is not pure forgets what it can reach", Steve 2026-10-21) applied to the safe-access proofs. It answers from the same readings the value tracker forgets by - ObjectSharing for one occurrence of a name, ProgramCodeSites for the places code of the program's own runs, and the tracker's own sharing, escape and from-outside record (ValueTrackingAnalyzer.mayBeChangedThrough(ISymbol, ISymbol), ValueTrackingAnalyzer.mayBeChangedByCall(ISymbol, boolean, Collection)). Never a second list of the ways an object can change.

Where the tracker is not following a callable (it records nothing outside one) nothing is known about who shares what, so every change counts as a change to every container: it fails closed.

Before 2026-11-10 a proof survived everything but a store to the variable itself (E08040): if name? then forget(name) with a forget that empties its argument (target :=: Optional()), then name.get() compiled clean and threw 'No such element'.