class C implements A {
    C(A a) {}
}

interface A {
    A a = new C(<error descr="'A.this' cannot be referenced from a static context">this</error>);
    A a1 = new C(<error descr="'A.this' cannot be referenced from a static context">this</error>){};

    class B  {
        A foo() {
            return <error descr="'A.this' cannot be referenced from a static context">A.this</error>;
        }

        B foo1() {
            return B.this;
        }

        class D {
            B f() {
                return B.this;
            }
        }
    }
}