title: Unrelated defaults inheritance error for type variables: why?
body: <p><strong>Disclaimer</strong>: this is <strong>not</strong> about this case (while error sounds as same): <a href="https://stackoverflow.com/questions/22746948/class-inherits-unrelated-defaults-for-spliterator-from-types-java-util-set-and">class inherits unrelated defaults for spliterator() from types java.util.Set and java.util.List</a></p>
  
  <p>and here is why:</p>
  
  <p>consider two interfaces (in package "<code>a</code>")</p>
  
  <pre><code>interface I1 {
      default void x() {}
  }
  
  interface I2 {
      default void x() {}
  }
  </code></pre>
  
  <p>It is definitely clear to me why we can not declare such class as:</p>
  
  <pre><code>abstract class Bad12 implements I1, I2 {
  }
  </code></pre>
  
  <p><strong>(!)</strong> But I can not understand this restriction with reference to <strong>type variables</strong>:</p>
  
  <pre><code>class A&lt;T extends I1&amp;I2&gt; {
      List&lt;T&gt; makeList() {
          return new ArrayList&lt;&gt;();
      }
  }
  </code></pre>
  
  <p>with error: <code>class java.lang.Object&amp;a.I1&amp;a.I2 inherits unrelated defaults for x() from types a.I1 and a.I2</code>.</p>
  
  <p>Why I can not define such type variable? Why <code>java</code> cares about unrelated defaults in this case? What such type variable could "break"?</p>
  
  <p><strong>UPDATE:</strong> Just for clarification. I can create several classes of the form:</p>
  
  <pre><code>class A1 implements I1, I2 {
      public void x() { };
  }
  
  class A2 implements I1, I2 {
      public void x() { };
  }
  </code></pre>
  
  <p>and even</p>
  
  <pre><code>abstract class A0 implements I1, I2 {
      @Override
      public abstract void x();
  }
  </code></pre>
  
  <p>and so on. Why I can not declare special kind of type variable for such group of classes?</p>
  
  <p><strong>UPD-2:</strong> BTW I didn't find any distinct restriction for this case in JLS. It would be nice to confirm your answer with references to JLS.</p>
  
  <p><strong>UPD-3:</strong> Some of users told that this code is compiled well in Eclipse. I can not check it, but I checked with <code>javac</code> and got this error:</p>
  
  <pre><code> error: class INT#1 inherits unrelated defaults for x() from types I1 and I2
  class A&lt;T extends I1&amp;I2&gt; {
          ^
    where INT#1 is an intersection type:
      INT#1 extends Object,I1,I2
  1 error
  </code></pre>