class C {
static C x, oldx, y;
int f;
static int oldxf;
static int[] a, olda, b;
static int oldai;
static int i;
//@ requires x != null & y != null;
//@ requires a != null && 0 <= i & i < a.length;
//@ modifies oldx, oldxf, x, x.f, olda, oldai, a, a[i], i;
//@ ensures oldx == \old(x)
//@ ensures oldxf == \old(x.f);
//@ ensures \old(x).f == \old(x.f) + 1;
//@ ensures (\exists C z; z == x & \old(z.f) == \old(y.f));
//@ ensures olda == \old(a) & oldai == \old(a[i]);
//@ ensures \old(a)[\old(i)] == \old(a[i]) + 1;
static void m() {
oldx = x;
oldxf = x.f;
x = y;
oldx.f++;
olda = a;
oldai = a[i];
a = b;
olda[i]++;
i++;
}
}