It\'s a bit difficult to implement a deep object copy function. What steps you take to ensure the original object and the cloned one share no reference?
BeanUtils does a really good job deep cloning beans.
BeanUtils.cloneBean(obj);