Java adicionando a uma lista genérica de tipo desconhecido

Eu me deparei com algo que nunca encontrei antes em Java, ou seja, preciso criar uma nova instância, por exemplo, a classe ArrayList em tempo de execução sem atribuir um tipo conhecido e, em seguida, adicionar dados à lista. Parece um pouco vago, então aqui está um exemplo:

Class<?> c = i.getClass();

Constructor<?> con = ArrayList.class.getConstructor();
ArrayList<?> al = (ArrayList<?>)con.newInstance();

al.add("something");

Agora, o motivo pelo qual estou fazendo isso, em vez de usar apenas genéricos, é porque os genéricos já estão sendo usados intensamente e a variável "i" neste exemplo pode ser usada como tipo "?". Eu realmente preferiria não inserir outro genérico, pois isso causaria mais trabalho ao usuário e seria muito menos flexível no design final. Existe alguma maneira de usar algo como abaixo (Nota: o que está abaixo não funciona). Alguém tem ideias?

ArrayList<c> al = (ArrayList<c>)con.newInstance();

questionAnswers(3)

yourAnswerToTheQuestion