can-map.js
function(value, prop){

			if (typeof value === "object" &&
				!canReflect.isObservableLike( value ) &&
				mapHelpers.canMakeObserve(value) &&
				!canReflect.isListLike(value)
			) {

				var cached = mapHelpers.getMapFromObject(value);
				if(cached) {
					return cached;
				}
				var MapConstructor = this.constructor.Map || Map;
				return new MapConstructor(value);

			}
			return value;
		}
function(value, prop){

			if (typeof value === "object" &&
				!canReflect.isObservableLike( value ) &&
				mapHelpers.canMakeObserve(value) &&
				!canReflect.isListLike(value)
			) {

				var cached = mapHelpers.getMapFromObject(value);
				if(cached) {
					return cached;
				}
				var MapConstructor = this.constructor.Map || Map;
				return new MapConstructor(value);

			}
			return value;
		}
## __type Converts set values to another type.  By default, this converts Objects to can.Maps and Arrays to can.Lists. This also makes it so if a plain JavaScript object has already been converted to a list or map, that same list or map instance is used.