modified to mark returned object in a stack (so that garbage collection to a returned object will not
happen until the object is used by caller).
a bug related to multiple function/method arguments was fixed.
syntax has been simplified (for/while/if/function/method/class)