pub trait HasDual { type Dual; }
The HasDual trait defines the dual relationship between protocols.
Any valid protocol has a corresponding dual.