Introduction Intro Protocol Associated Type Type Contraints Override Associated Type Protocol Pitfalls Type Eraser Conclusion