/*
 * @test /nodynamiccopyright/
 * @bug 8062977
 * @summary Inference: NullPointerException during bound incorporation
 *
 * @compile/fail/ref=T8062977.out -XDrawDiagnostics T8062977.java
 */

import java.util.List;

class T8062977 {
    <T extends B, B> T m(Class<B> cb) { return null; }

    void test1(Class<Iterable<?>> cb) {
        List<Integer>[] r1 = m(cb); //fail
        List<Integer> r2 = m(cb); //ok
    }

    void test2(Class<Iterable<?>[]> cb) {
        List<Integer>[] r1 = m(cb); //ok
        List<Integer> r2 = m(cb); //fail
    }

    void test3(Class<Iterable<?>[][]> cb) {
        List<Integer>[][] r1 = m(cb); //ok
        List<Integer>[] r2 = m(cb); //fail
        List<Integer> r3 = m(cb); //fail
    }
}