code: public static Object copy(Object source) {
  		try {
  			ByteArrayOutputStream baos = new ByteArrayOutputStream();
  			ObjectOutputStream oos = new ObjectOutputStream(baos);
  			oos.writeObject(source);
  			ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
  			ObjectInputStream ois = new ObjectInputStream(bais);
  			Object deepCopy = ois.readObject();
  			return deepCopy;
  		} catch (Exception e) {
  			throw new JKException(e);
  		}
  	}
docs: /////////////////////////////////////////////////////////////////