Declaration and initialization
Method requirements
Property requirements
Constructor requirements
Subscript requirements
Inheritance of interfaces
Protocol composition
Conformance checking (is, as)
Collection of interfaces
Explicit implementation
Class-only protocols
Optional requirements
Associated type