Função que genericamente leva um tipo e retorna o mesmo tipo

Estou tendo dificuldade em entender por que o compilador Scala está insatisfeito com essa definição de função:

def trimNonWordCharacters[T <: Iterable[String]](items: T): T =
     items map { _.replaceAll("\\W", "") }

Aqui está oREPL&nbsp;saída:

scala> def trimNonWordCharacters[T <: Iterable[String]](items: T): T =
     items map { _.replaceAll("\\W", "") }
<console>:5: error: type mismatch;
 found   : Iterable[java.lang.String]
 required: T
       def trimNonWordCharacters[T <: Iterable[String]](items: T): T = items map { _.replaceAll("\\W", "") }

O objetivo é passar em qualquer implementação de um Iterable e obter o mesmo tipo de retorno. Isso é possível?