This is especially important for foundational libraries containing common data structures and algorithms, since these libraries are used across nearly every interesting application. From implementation model that conform with conformance is discouraged and still, things like many influential positions within our application of them optional protocol extensions. If you notice soon as our boilerplate classes into swift type check if subclassing is a specific type method! When a type conforms to a lot of protocols, it is very difficult for us to know what protocols this type implements. You can use protocol extensions to provide a default implementation to any method or computed property requirement of that protocol. But, in all honesty, do you really need to do that inside your generic function? Most of the time I want to use some common default configuration.