title: Can't infer generic type "? super SomeClass"
body: <p>After trying to identify the problem with my generic method, I've ended up with the following code:</p>
  
  <pre><code>        Map&lt;String, BiConsumerThatThrows&lt;CheckPayment, XMLEventReader&gt;&gt; a = CheckPayment.childMapper;
          BiConsumerThatThrows&lt;CheckPayment, XMLEventReader&gt; a1 = a.get("1");
          BiConsumerThatThrows&lt;? super CheckPayment, XMLEventReader&gt; b1 = a1;
          Map&lt;String, BiConsumerThatThrows&lt;? super CheckPayment, XMLEventReader&gt;&gt; b = new HashMap&lt;&gt;();
          b.put("1", b1);
          b = a;
  </code></pre>
  
  <p>It won't compile with the following error (I've formatted it to make it more readable):</p>
  
  <pre><code>[ERROR] /D:/lalala/MyClass.java:[152,27] 
      incompatible types: 
          java.util.Map&lt;
              java.lang.String,
              blablabla.BiConsumerThatThrows&lt;
                  blablabla.CheckPayment,
                  javax.xml.stream.XMLEventReader
              &gt;
          &gt; 
      cannot be converted to 
          java.util.Map&lt;
              java.lang.String,
              blablabla.BiConsumerThatThrows&lt;
                  ? super blablabla.CheckPayment,
                  javax.xml.stream.XMLEventReader
              &gt;
          &gt;
  </code></pre>
  
  <p>What's most surprising, it crashes only on the last line of the given code snippet.</p>
  
  <p>Why does it happen? What can be done to perform such assignment?</p>
  
  <p>I'm using Oracle JDK 1.8u40 x64.</p>
  
  <p>P.S. Here is the simplified example:</p>
  
  <pre><code>Set&lt;Set&lt;String&gt;&gt; sets = new HashSet&lt;&gt;();
  Set&lt;Set&lt;? super String&gt;&gt; sets2 = new HashSet&lt;&gt;();
  sets2 = sets;
  </code></pre>
  
  <p>Error:</p>
  
  <pre><code>incompatible types: java.util.Set&lt;java.util.Set&lt;java.lang.String&gt;&gt; cannot be converted to java.util.Set&lt;java.util.Set&lt;? super java.lang.String&gt;&gt;
  </code></pre>
  
  <p>P.P.S. Even this is not working:</p>
  
  <pre><code>Set&lt;Set&lt;Object&gt;&gt; sets2 = new HashSet&lt;Set&lt;String&gt;&gt;();
  </code></pre>
  
  <p>why?</p>