Describing dispatch scenarios is confusing, and spelling out the code is wordy. In an attempt to keep this document clear and compact, I'll use a short hand to describe the declaration scenarios.
Short hand:
T = Type (class / struct / enum)
ST = Sub Type (only applies to classes)
P = Protocol
M1.T = Type from the other module