Asignación y recuperación de maps de tipo seguro

Estoy tratando de realizar llamadas proxy para Observables y LiveData (similar al patrón del Mediador), pero no pude encontrar una solución segura. Este es el problema:

class Proxy { private val backupMap = HashMap<LiveData<Any>, Observer<Any>>() fun <T> add(liveData : LiveData<T>, observer : Observer<T>) { // !This is the issue LiveData<Any> is expected backupMap.put(liveData, observer) } fun attach() { backupMap.forEach { (key, value) -> key.observeForever(value) } } } fun addSome() { Proxy().apply { add(MutableLiveData<String>(), Observer { }) } } 

Podría lanzar backupMap.put a backupMap.put(liveData as LiveData<Any>, observer as Observer<Any>) pero esto causa un Unchecked Cast .