A generic pretty-printer using generics-sop