import Foundation final class MutableNoticeEntryView { private let key: NoticeEntryKey fileprivate var value: NoticeEntry? init(accountManagerImpl: AccountManagerImpl, key: NoticeEntryKey) { self.key = key self.value = accountManagerImpl.noticeTable.get(key: key) } func replay(accountManagerImpl: AccountManagerImpl, updatedKeys: Set) -> Bool { if updatedKeys.contains(self.key) { self.value = accountManagerImpl.noticeTable.get(key: self.key) return true } return false } func immutableView() -> NoticeEntryView { return NoticeEntryView(self) } } public final class NoticeEntryView { public let value: NoticeEntry? init(_ view: MutableNoticeEntryView) { self.value = view.value } }