/*
 * @test /nodynamiccopyright/
 * @author Maurizio Cimadamore
 * @bug     6665356
 * @summary Cast not allowed when both qualifying type and inner class are parameterized
 * @compile/fail/ref=T6665356.out -XDrawDiagnostics T6665356.java
 */

class T6665356 {
    class Outer<S> {
        class Inner<T> {}
    }

    void test1() {
        boolean b;
        b = null instanceof Outer.Inner;
        b = null instanceof Outer<?>.Inner;
        b = null instanceof Outer.Inner<?>;
        b = null instanceof Outer<?>.Inner<?>;
    }

    void test2() {
        boolean b;
        Object o;
        o = (Outer.Inner)null;
        o = (Outer<?>.Inner)null;
        o = (Outer.Inner<?>)null;
        o = (Outer<?>.Inner<?>)null;
    }
}