code: function(changeset) {
  					changeset.forEach(function(change) {
  						if(change.name!=="__target__") {
  							if(change.type==="delete") {
  								if(handler.deleteProperty) {
  									if(!handler.deleteProperty(target,change.name)) { // restore property if delete handler fails
  										Object.original.defineProperty(Object,proxy,Object.original.getOwnPropertyDescriptor(target,change.name));
  									}
  								} else {
  									delete target[change.name];
  								}
  							} else {
  								if(handler.defineProperty) {
  									var desc = Object.getOwnPropertyDescriptor(target,change.name);
  									if(!desc) {
  										desc = Object.original.getOwnPropertyDescriptor.call(Object,proxy,change.name);
  									}
  									if(desc && handler.defineProperty(target,change.name,desc)) {
  										addHandling(proxy,change.name,desc.value);
  									} else { // delete property if define handler fails
  										delete proxy[change.name];
  									}
  								} 
  								if(target[change.name]!==proxy[change.name]){
  									target[change.name] = proxy[change.name];
  								}
  							}
  						}
  					});
  				}
docs: Observe the proxy for add/delete and set value on target, the target observer will add the handling