    open func updateItem<I>(_ item: I, forKey key: Key) where I: Item, I.Value == Value {
        storage.updateValue(item.eraseToAnyItem(), forKey: key)
    }
    
    open func removeItem(forKey key: Key) {
        storage.removeValue(forKey: key)
    }
    
    open func setValue(_ value: Value?) {
        self.value = value
    }
    
    // MARK: - Private
}
