/*@ public behavior @ requires template != null; @ ensures (g_o instanceof FormalInstancePacket) ==> @ \result == g_packet && @ g_packet instanceof FormalInstancePacket; @ signals (CloneNotSupportedException cse) true; @*/ private FormalInstancePacket makeClone() throws CloneNotSupportedException { FormalInstancePacket packet = null; // @ set g_packet = null; Object o = template.clone(); // @ set g_o = o; if (o instanceof FormalInstancePacket) { packet = (FormalInstancePacket) o; // @ set g_packet = packet; } return packet; }