private static Map<String, Object> canonicalizeMap(final Map<String, Object> from) { final Map<String, Object> canonicalized = new LinkedHashMap<String, Object>(from.size()); final TreeSet<String> keysInOrder = new TreeSet<String>(from.keySet()); for (final String key : keysInOrder) { final Object val = from.get(key); canonicalized.put(key, canonicalize(val)); } return canonicalized; }