(defprotocol Datafiable :extend-via-metadata true (datafy [o] "return a representation of o as data (default identity)"))