Genéricos Java com curinga ilimitado?

Eu tenho uma interface para converter objeto em string:

public interface Converter<T> {
    String asString(T object);
}

E um mapa para armazenar todos os conversores disponíveis:

Map<Class<?>, Converter<?>> converterMap;

Agora eu tenho uma lista de dados heterogêneos para converter assim:

List<?> data = fetchData();
List<String> stringData = new ArrayList<>(data.size());
for (Object datum : data) {
    stringData.add(convertrMap.get(datum.getClass()).asString(datum));
}

Mas este código não compila:

error: method asString in interface Converter<T> cannot be applied to given types;
            stringData.add(converterMap.get(datum.getClass()).asString(datum));
  required: CAP#1
  found: Object
  reason: actual argument Object cannot be converted to CAP#1 by method invocation conversion
  where T is a type-variable:
    T extends Object declared in interface Converter
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Object from capture of ?

Como devo mudar o código?

questionAnswers(3)

yourAnswerToTheQuestion