Me porting Runestone from UIKit to AppKit.
Currently leaning towards having separate implementations of TextView for UIKit and AppKit with shared logic moved into separate types. The alternative is a single implementation with lots of if-else-endif macros.
It makes for some duplicated logic but also means that the two implementations can easily be maintained and implemented in isolation.