It makes me a bit weary seeing these `args[0]` all over the place. It seems like it could be pretty easy to treat a regular fn call's `args[0]` as a receiver, or forget to extract out the receiver from a method call. Since there are now only a few cases where regular fn arguments seem to be different from method arguments, could we combine the two into a `ast::CallArgs` enum? That might help make things more clear when we are dealing with a special case.