Use SBWorkspaceEventQueue instead of hooking SBWorkspace's -setCurrentTransaction: method.
Use %c() instead of objc_getClass().