Do we want the Protocols to be runtime checkable? Pros: - useful at runtime Cons: - `@runtime_checkable` has some sharp bits! Can get false positives / negatives.