+ reimplement copyObject based on merge document