Since we always shift here, would it be better to do a nil check against that?

```
recv = args.shift
raise ArgumentError, "no receiver given" unless recv
recv.__send__(sym, *args)
```