Hi David, this sounds like a good enhancement.
As far as the API is concerned, here are some quick comments: 1. We already have the ConditionalFeature enum, there's probably no need to invent another one. 2. AboutHandler and PreferencesHandler can be Runnable instead, there's nothing special about the method they provide. 3. setAboutHandler and setPreferencesHandler shouldn't throw an exception on non-macOS platforms, since there's no harm done when a handler is set (but can't be invoked).