docs: @SuppressWarnings("unchecked")
  	public static <T> T shallowCopy(T original) {
  		
  		Class<? extends T> clazz = (Class<? extends T>) original.getClass();
  		BeanClass<? extends T> beanClass = (BeanClass<? extends T>) classes.get(clazz);
  		
  		if (beanClass == null) {
  			beanClass = BeanClass.buildFrom(clazz);
  			classes.put(clazz, beanClass);
  		}
  		
  		return shallowCopyHelper(original, beanClass);
  	}