docs: function(target, source){
  		var assignDeep = target[canSymbol.for("can.assignDeep")];
  		if(assignDeep) {
  			assignDeep.call(target, source);
  		} else if( typeReflections.isMoreListLikeThanMapLike(source) ) {
  			// list-like
  			shapeReflections.assignDeepList(target, source);
  		} else {
  			// map-like
  			shapeReflections.assignDeepMap(target, source);
  		}
  		return target;
  	}