¿Qué tipo de Lista <E> devuelve Collectors.toList ()?

Estoy leyendoEstado de la Lambda: Edición de Bibliotecas, y me sorprende una declaración:

Debajo de la secciónCorrientes, hay lo siguiente:

List<Shape> blue = shapes.stream()
                         .filter(s -> s.getColor() == BLUE)
                         .collect(Collectors.toList());

El documento no indica quéshapes&nbsp;en realidad lo es, y no sé si incluso importa.

Lo que me confunde es lo siguiente: qué tipo de concretoList&nbsp;¿vuelve este bloque de código?

Asigna la variable a unList<Shape>, lo cual está completamente bien.stream()&nbsp;nifilter()&nbsp;decide qué tipo de lista usar.Collectors.toList()&nbsp;ninguno especifica el tipo concreto deList.

Y quéhormigón&nbsp;tipo (subclase) deList&nbsp;se está utilizando aquí? ¿Hay alguna garantía?