Implements the decorator pattern for clojure protocols