client code requires protocol supplier code provides different protocol (with superset of ' functionalityadapter code "sneaks in the middle"to ga is supplier (produces protocol cto sa is client (consumes protocol "inside" implements (by means of appropriate calls to on