code: function(target, source) {
  		if(typeReflections.isIteratorLike(source) || typeReflections.isMoreListLikeThanMapLike(source) ) {
  			// copy to array and add these keys in place
  			shapeReflections.updateList(target, source);
  		} else {
  			shapeReflections.updateMap(target, source);
  		}
  		return target;
  	}
docs: @function can-reflect.update update
  @parent can-reflect/shape
  @description Updates the values of an object match the values of an other object.
  
  @signature `.update(target, source)`
  
  Updates the values (and properties if map-like) of `target` to match the values of `source`.
  Properties of `target` that are not on `source` will be removed. This does
  not recursively update.  For that, use [can-reflect.updateDeep].
  
  For map-like objects, every enumerable property on `target` is copied:
  
  ```js
  var target = {name: {first: "Justin"}, age: 34};
  var source = {name: {last: "Meyer"}};
  var result = canReflect.update(target, source);
  target //->  {name: {last: "Meyer"}}
  ```
  
  With Arrays all items of the source will be replaced with the new items.
  
  ```js
  var target = ["a","b","c"];
  var source = ["A","B"];
  canReflect.update(target, source);
  target //-> ["A","B"]
  ```
  
  @param  {Object} target The value that will be updated with `source`'s values.
  @param  {Object} source A source of values to copy to `target`.
  @return {Object} The target.