Coletando fluxo de volta no mesmo tipo de coleção

Suponha que eu tenha uma coleção do tipo desconhecido. O que eu quero fazer é transmitir, fazer algumas coisas no fluxo e coletá-lo novamente no mesmo tipo de coleção que minha coleção original. Por exemplo:

Collection<? extends Integer> getBigger(Collection<? extends Integer> col, int value) {
    return col.stream().filter(v -> v > value).collect(????);
} 

A ideia deste exemplo de código incompleto é retornar umList E secol é deList classe (ou qualquer subclasse dela), umSet E secol é deSet classe, etc ... O nome do método e as operações reais no fluxo aqui não são importantes, especifiquei-os apenas para ilustrar minha pergunta. Então é possível?

questionAnswers(3)

yourAnswerToTheQuestion