Un extraño caso de borde de genéricos con Mockito.when () e inferencia de tipo genérico

Estoy escribiendo un caso de prueba que utiliza unajava.beans.PropertyDescriptor usando Mockito, y quiero burlarme del comportamiento degetPropertyType() para devolver un arbitrarioClass<?> objeto (en mi caso,String.class). Normalmente, lo haría simplemente invocando:

// we already did an "import static org.mockito.Mockito.*"
when(mockDescriptor.getPropertyType()).thenReturn(String.class);

Sin embargo, curiosamente, esto no compila:

cannot find symbol method thenReturn(java.lang.Class<java.lang.String>)

Pero cuando especifico el parámetro de tipo en lugar de depender de la inferencia:

Mockito.<Class<?>>when(mockDescriptor.getPropertyType()).thenReturn(String.class);

todo es Hunky Dory. ¿Por qué el compilador no puede inferir correctamente el tipo de retorno de cuando () en este caso? Nunca he tenido que especificar el parámetro antes de esa manera.

Respuestas a la pregunta(1)

Su respuesta a la pregunta