// Don't treat f.caller as a singleton property access, it
// has a non-default getter.
function f(obj) {
    return f.caller;
}
function g(obj) {
    return f(obj);
}
function gg(obj) {
    return f.call(obj, obj);
}

assertEq(g({}), g);

actual = gg(function() {});
assertEq(actual, gg);