(meta o)
Returns the metadata of obj, returns nil if there is no metadata.
(defn meta [o] (when (and (not (nil? o)) (satisfies? IMeta o)) (-meta o)))