public class trace { static public int k; static public void mm() {} //@ requires true; //@ assignable k; //@ signals (Exception e) false; public void m() { k = 1; mm(); k = 2; return ; } //@ requires true; //@ assignable k; //@ ensures k == 2; //@ signals (Exception e) k == 1; public void m2() { try { k = 1; mm(); k = 2; } finally {} } //@ requires true; //@ assignable k; //@ ensures k == 2; //@ signals (Exception e) k == 1; public void m3() { try { k = 1; mm(); k = 2; } catch (Exception e) {} } }