--- /dev/null
+method m()
+ return a(4 - this, (10 * this) - (10 - this));
+end;
+
+method a(x y)
+ return x - y - (this * -1);
+end;
\ No newline at end of file
--- /dev/null
+method m()
+ var x:= (this - 10).a(10, 5);
+ /*return x;*/
+ var z:= x - a(x, this);
+ /*return z;*/
+ return (x * z) - this;
+end;
+
+method a(x y)
+ var u := this - x - y;
+ return u * 2;
+end;
\ No newline at end of file
--- /dev/null
+struct a b c d end;
+
+method m(ar)
+ 20 - ar.inc() - 70;
+ var y := this.b - ar.inc() - (this.inc() * -10) - this.b - ar.b;
+ return ar.inc() - inc() - (y * -1);
+end;
+
+method inc()
+ this.a := this.a - -1;
+ this.b := this.b - -1;
+ this.c := this.c - -1;
+ this.d := this.d - -1;
+ return this.a;
+end;
\ No newline at end of file
--- /dev/null
+extern long long m(long long* ar1, long long *ar2);
+
+long long z1[] = { 0, 2, 4, 6, 8, 10, 12 };
+long long z2[] = { 10, 20, 40, 60, 80, 100, 120 };
+
+long long ret = m(&z1[1], &z2[1]);
+
+//printf("ret :%ld %ld %ld\n", ret, z1[1], z2[1]);
+
+RET(ret == -16 && z1[0] == 0 && z2[0] == 10 && z1[1] == 4 && z1[2] == 6 && z1[3] == 8 && z1[4] == 10 && z1[5] == 10 && z1[6] == 12 && z2[1] == 23 && z2[2] == 43 && z2[3] == 63 && z2[4] == 83 && z2[5] == 100 && z2[6] == 120);
\ No newline at end of file