// 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; } }