If the underlying store is mutable, keep a cached immutable snapshot and update it only when the store actually changes.