public void merge(EasyPostResource obj, EasyPostResource update) {
	    if (!obj.getClass().isAssignableFrom(update.getClass())) {
	        return;
	    }

	    Method[] methods = obj.getClass().getMethods();

	    for (Method fromMethod: methods) {
	        if (fromMethod.getDeclaringClass().equals(obj.getClass()) && fromMethod.getName().startsWith("get")) {

	            String fromName = fromMethod.getName();
	            String toName = fromName.replace("get", "set");

	            try {
	                Object value = fromMethod.invoke(update, (Object[]) null);
	                if (value != null) {
		                Method toMethod = obj.getClass().getMethod(toName, fromMethod.getReturnType());
	                    toMethod.invoke(obj, value);
	                }
	            } catch (Exception e) {
	                e.printStackTrace();
	            }
	        }
	    }
	}