// casts
public class a {
void f(i ii) {
boolean b;
b = 2 instanceof a;
b = null instanceof int;
b = (c3)null instanceof Boolean;
b = ii instanceof i;
b = ((c2)ii) instanceof c4;
b = null instanceof a;
b = ii instanceof c3;
b = Boolean.valueOf("true") instanceof Boolean;
b = new Long(3) instanceof Number;
b = this instanceof a;
b = ii instanceof a;
b = this instanceof i;
// casts
c2 c2i = null;
c3 c3i = null;
c4 c4i = null;
Object o;
c4i = (c4) this;
o = (boolean) c2i;
o = (Integer) c3i;
o = (a) c2i;
o = (int) c3i;
o = (a) ii;
o = (i) c4i; //cast to interface
o = (c3) c2i;
o = (c3) c3i;
o = (c3) c4i;
o = (Object) ii;
o = (iunrelated) ii;
o = (iunrelated) c2i;
o = (c4) c2i;
o = (c4) ii;
o = (c5) ii;
int[] ai = null;
o = (byte[])ai;
o = (double[])ai;
c3[] ac3i = null;
o = ac3i;
o = (c4[])ac3i;
o = (i[])ac3i;
Object[] results = null;
int index = ((Integer) results).intValue();
// arrays and Serializable/Cloneable/Object
int[] ai2 = (int[])o;
Cloneable cloneable = null;
ai2 = (int[]) cloneable;
java.io.Serializable serializable = null;
ai2 = (int[]) serializable;
}
}
interface iunrelated {}
interface i {}
class c2 implements i {
public c2() {}
public void f() {}
protected void g() {}
}
class c3 extends c2 {
protected c3() {}
private int g(int k) { return 0; }
}
final class c4 extends c3 {
private c4() {
int[] a=new int[3];
Cloneable s=a;
java.io.Serializable ss = a;
}
}
final class c5 {}
// clashing interfaces
interface A {
void g();
}
interface B {
int g();
}
interface BB extends B {
}
class Foo {
void f(A a) {
B b = (B) a;
BB b2 = (BB) a;
A a2 = (A) b2;
}
}