Updater

typealias Updater = Any?

Either a new value or a function (old) -> new that produces one. Resolved by functionalUpdate at the call site. Typed as Any? because Kotlin cannot express the underlying union.