https://mfaani.com/posts/swift-protocol-compile-time-check/
Swift Protocol Compile Time Check