docs: public static void deepCopy(Object from, Object to) {
  		if (from == null) throw new IllegalArgumentException("from must not be null");
  		if (to == null) throw new IllegalArgumentException("to must not be null");
  		if (from.getClass() != to.getClass()) throw new IllegalArgumentException("from and to must have exactly same class, from has " + from.getClass() + " to has " + to.getClass());
  
  		try {
  			_deepCopy(from, to, new ArrayList(), new ArrayList());
  		} catch (IllegalAccessException | IllegalArgumentException x) {
  			throw new RuntimeException(x);
  		}
  	}