public class CompletionInstanceofOperator1 {
	void foo(WWWCompletionInstanceof2 x) {
		if(x instanceof WWWCompletionInstanceof){}
	}
}

class WWWCompletionInstanceof1 {

}

class WWWCompletionInstanceof2 extends WWWCompletionInstanceof1 {

}

class WWWCompletionInstanceof3 extends WWWCompletionInstanceof2 {

}

class WWWCompletionInstanceof4 {

}