static Object shallowClone(Object o) { if (o == null) return o; if (o instanceof List) ret cloneList((List) o); if (o instanceof Map) { final Map m = o instanceof TreeMap ? new TreeMap() : new HashMap(); m.putAll((Map) o); return m; } if (o instanceof String || o instanceof Number || o instanceof Boolean) return o; if (o instanceof Object[]) { Object[] l = (Object[]) o; ret l.clone(); } // clone an arbitrary custom object //print("Cloning custom: " + o); Class c = o.getClass(); final Object clone = nuEmptyObject(c); copyFields(o, clone); ret clone; }