Los compiladores se comportan de manera diferente con un parámetro nulo de un método genérico

El siguiente código se compila perfectamente con Eclipse, pero no se compila con javac:

public class HowBizarre {
      public static <P extends Number, T extends P> void doIt(P value) {
      }

      public static void main(String[] args) {
            doIt(null);
      }
}

Simplifiqué el código, por lo que T no se usa en absoluto ahora. Aún así, no veo una razón para el error. Por alguna razón, javac decide que T significa Objeto, y luego se queja de que Objeto no se ajusta a los límites de T (lo cual es cierto):

HowBizarre.java:6: tipos incompatibles; argumento (s) de tipo inferido java.lang.Number, java.lang.Object no se ajusta a los límites de las variables de tipo P, T

encontró :<P,T>vacío

requerido: nulo

       doIt(null);
           ^

Tenga en cuenta que si reemplazo el parámetro nulo con un valor no nulo, se compila bien.

¿Cuál de los compiladores se comporta correctamente y por qué? ¿Es esto un error de uno de ellos?

Respuestas a la pregunta(3)

Su respuesta a la pregunta