Lower-bounded wild card causes trouble in javac, but not Eclipse : <p>This piece of code compiles in Eclipse but not in javac:</p>

<pre class="lang-java prettyprint-override"><code>import java.util.function.Consumer;

public class Test {
    public static final void m1(Consumer&lt;?&gt; c) {
        m2(c);
    }
    private static final &lt;T&gt; void m2(Consumer&lt;? super T&gt; c) {
    }
}
</code></pre>

<p>javac output:</p>

<pre class="lang-none prettyprint-override"><code>C:\Users\lukas\workspace&gt;javac -version
javac 1.8.0_92

C:\Users\lukas\workspace&gt;javac Test.java
Test.java:5: error: method m2 in class Test cannot be applied to given types;
        m2(c);
        ^
  required: Consumer&lt;? super T&gt;
  found: Consumer&lt;CAP#1&gt;
  reason: cannot infer type-variable(s) T
    (argument mismatch; Consumer&lt;CAP#1&gt; cannot be converted to Consumer&lt;? super T&gt;)
  where T is a type-variable:
    T extends Object declared in method &lt;T&gt;m2(Consumer&lt;? super T&gt;)
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Object from capture of ?
1 error
----------------------------------------------------------------
</code></pre>

<p>Which compiler is wrong and why? (<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=497380">Eclipse bug report and parts of discussion here</a>)</p>
