compute
open override fun <S : Slot> compute(owner: SlotMapOwner, key: Any?, index: Int, compute: SlotMap.SlotComputer<S>): S?
Replaces what key maps to with whatever compute returns: null removes the mapping, and anything else replaces or creates it. If compute throws, nothing changes.
This mirrors Map.compute, which keeps callers from making several calls in a row.
open override fun <S : Slot> compute(owner: SlotMapOwner?, mutableMap: CompoundOperationMap, key: Any?, index: Int, compute: SlotMap.SlotComputer<S>): S?