static Printer.Fn<Map<?, ?>> writeMapFn() {
        return new Printer.Fn<Map<?,?>>() {
            @Override
            public void eval(Map<?,?> self, Printer writer) {
                writer.append('{');
                for (Map.Entry<?,?> p: self.entrySet()) {
                    writer.printValue(p.getKey())
                    .printValue(p.getValue());
                }
                writer.append('}');
            }
        };
    }