Компиляторы ведут себя по-разному с нулевым параметром универсального метода

Следующий код прекрасно компилируется с Eclipse, но не компилируется с javac:

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

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

Я упростил код, поэтому T сейчас вообще не используется. Тем не менее, я не вижу причины ошибки. По какой-то причине javac решает, что T обозначает Object, а затем жалуется, что Object не соответствует границам T (что верно):

HowBizarre.java:6: несовместимые типы; выводимый аргумент (ы) типа java.lang.Number, java.lang.Object не соответствуют границам переменных типа (s) P, T

найденный :<P,T>недействительным

требуется: недействительно

       doIt(null);
           ^

Обратите внимание, что если я заменяю нулевой параметр ненулевым значением, он компилируется нормально.

Какой из компиляторов ведет себя правильно и почему? Это ошибка одного из них?

Ответы на вопрос(1)

Ваш ответ на вопрос