title: Compilers behave differently with a null parameter of a generic method
body: <p>The following code compiles perfectly with Eclipse, but fails to compile with javac:</p>
  
  <pre><code>public class HowBizarre {
        public static &lt;P extends Number, T extends P&gt; void doIt(P value) {
        }
  
        public static void main(String[] args) {
              doIt(null);
        }
  }
  </code></pre>
  
  <p>I simplified the code, so T is not used at all now. Still, I don't see a reason for the error.
  For some reason javac decides that T stands for Object, and then complains that Object does not conform to the bounds of T (which is true):</p>
  
  <blockquote>
    <p>HowBizarre.java:6: incompatible types; inferred type argument(s)
    java.lang.Number,java.lang.Object do not conform to bounds of type
    variable (s) P,T</p>
    
    <p>found   : <code>&lt;P,T&gt;</code>void</p>
    
    <p>required: void</p>
  
  <pre><code>       doIt(null);
             ^
  </code></pre>
  </blockquote>
  
  <p>Note that if I replace the null parameter with a non-null value, it compiles fine.</p>
  
  <p>Which of the compilers behaves correctly and why? Is this a bug of one of them?</p>