public Map<String, String> toHash(T object) {
   Map<?, ?> hash = delegate.toHash(object);
   Map<String, String> flatten = new LinkedHashMap<String, String>(hash.size());
   for (Map.Entry<?, ?> entry : hash.entrySet()) {
     flatten.put(String.valueOf(entry.getKey()), String.valueOf(entry.getValue()));
   }
   return flatten;
 }
 @SuppressWarnings({"rawtypes", "unchecked"})
 @Override
 public T fromHash(Map hash) {
   return (T) delegate.fromHash(hash);
 }