CallbackInfo instances are passed to callbacks in order to provide
information and handling opportunities to the callback to interact with the
callback itself.
For callbacks with a non-void return type, a CallbackInfoReturnable is passed
to the callback instead to allow the callback to interact with the method
return value.