function foo(arg){print("calling foo " + this.constructor.name + " " + arg)}
foo.call = function(){print("not calling foo")};
var obj = {foo: foo};
foo(1);
obj.foo(2);
foo.call(obj, 3);
Function.prototype.call.call(foo, obj, 4);
ZnVuY3Rpb24gZm9vKGFyZyl7cHJpbnQoImNhbGxpbmcgZm9vICIgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAiICIgKyBhcmcpfQpmb28uY2FsbCA9IGZ1bmN0aW9uKCl7cHJpbnQoIm5vdCBjYWxsaW5nIGZvbyIpfTsKdmFyIG9iaiA9IHtmb286IGZvb307Cgpmb28oMSk7Cm9iai5mb28oMik7CmZvby5jYWxsKG9iaiwgMyk7CkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmNhbGwoZm9vLCBvYmosIDQpOw==