https://developer.apple.com/reference/objectivec/objective_c_runtime
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html
http://stackoverflow.com/questions/1315169/how-do-i-remove-instance-methods-at-runtime-in-objective-c-2-0
http://stackoverflow.com/questions/7942453/objective-c-runtime-how-to-remove-a-method-from-a-class