Subrayado para tipo existencial en Scala

He leído un blog sobre tipo existencial en Scala:Tipos existenciales en Scala

En este blog, menciona un ejemplo:

Map[Class[T forSome { type T}], String]
Map[Class[T] forSome { type T}, String]
Map[Class[T], String] forSome { type T}

Su explicación "el tercero es el supertipo de todos los tipos de mapas, de modo que hay una T tal que son un Mapa [Clase [T], Cadena]. Entonces, de nuevo, tenemos algún tipo de clase fija para las claves en el mapa - es solo que esta vez no sabemos de qué tipo es. Sin embargo, el medio tiene claves de tipo Clase [T] para algunos {tipo T}. Es decir, sus claves son clases que pueden tener cualquier valor que deseen para su parámetro de tipo. Así que esto es lo que realmente queríamos ".

La explicación no es fácil de seguir. ¿Cuáles son las diferencias entre el segundo y el tercero en el ejemplo de código? ¿Alguien podría darnos algunos ejemplos?

El blog también menciona queMap[Class[_], String] es equivalente al tercero en el ejemplo, cuando realmente queremos el segundo. ¿Esto afectará la semántica cuando usamos_ para tipo existencial?

Respuestas a la pregunta(1)

Su respuesta a la pregunta