1 Writing Adaptors

Adapting takes an input object, and returns the object if it provides the
desired protocol. If the input object does not provide the protocol, a
lookup takes place to find an adapter function that will convert the object
or create a wrapper to adapt it.