The `objc_msgSend` family of functions should _always_ be cast before invocation. The calling conventions may differ depending on the argument and return types, and — perhaps more relevant — whether or not the function is variadic.

They're just trampolines, so we need to invoke them in the way that we'd invoke the actual targeted method.