-extern long f(long);
-RET(f(5)==5);
+extern long f(long, long);
+RET(f(0xDEAD, 5)==5);
-extern long f(long);
-RET(f(-3)==-3);
+extern long f(long, long);
+RET(f(0xDEAD, -3)==-3);
--- /dev/null
+method foo(a b c)
+ return a;
+end;
+
+method bar(a b c)
+ return b;
+end;
+
+method foobar(a b c)
+ return c;
+end;
--- /dev/null
+extern long foo(long this, long, long, long);
+extern long bar(long this, long, long, long);
+extern long foobar(long this, long, long, long);
+
+RET( (foo(0xDEAD, 3, 4, 5) == 3) && (bar(0xDEAD, 3, 4, 5) == 4) && (foobar(0xDEAD, 3, 4, 5) == 5));
--- /dev/null
+method a()
+ return 5 - 3;
+end;
+
+method b(x)
+ return 5 - x;
+end;
+
+method c(x)
+ return x - 3;
+end;
--- /dev/null
+extern long a(long this);
+extern long b(long this, long x);
+extern long c(long this, long x);
+
+RET( (a(0xDEAD) == 2) && (b(0xDEAD, 23) == -18) && (c(0xDEAD, 23) == 20));
--- /dev/null
+method q(x y)
+ return 5 - ((x - 3) - y);
+end;
+
+method r(x y)
+ return (x - y) - 10;
+end;
--- /dev/null
+extern long q(long this, long, long);
+extern long r(long this, long, long);
+
+RET((q(0xDEAD, 33, 15) == -10) && (r(0xDEAD, 33, 15) == 8));