For these `class_addMethod` failure cases, I have a few thoughts about how they should be handled.

On one hand, I would say the code could be more agressive through an assert, to help the developer identify the problem at the source. Also the error message could explains the failure condition in more detail.

On the other hand, I wonder if the code could be more resilient and give the whole setup a re-go, since this new `-rac_signalForSelector:` does handle existing methods, which is what has happened at this point.

Finally, even as is, I'd say add `objc_setAssociatedObject(self, aliasSelector, nil, OBJC_ASSOCIATION_RETAIN);`, just to clean up some.