code: function maintain_this_binding(parent, orig, val) {
            if (parent instanceof AST_UnaryPrefix && parent.operator == "delete"
                || parent instanceof AST_Call && parent.expression === orig
                    && (val instanceof AST_PropAccess || val instanceof AST_SymbolRef && val.name == "eval")) {
                return make_sequence(orig, [ make_node(AST_Number, orig, { value: 0 }), val ]);
            }
            return val;
        }
docs: we shouldn't compress (1,func)(something) to func(something) because that changes the meaning of the func (becomes lexical instead of global).