can-map.js
function(attr){
			// If this is List.
			var parts = mapHelpers.attrParts(attr),
			// The actual property to remove.
				prop = parts.shift(),
			// The current value.
				current = this.___get(prop);

			// If we have more parts, call `removeAttr` on that part.
			if (parts.length && current) {
				return canReflect.deleteKeyValue(current, parts.join("."));
			} else {

				// If attr does not have a `.`
				if (typeof attr === 'string' && !!~attr.indexOf('.')) {
					prop = attr;
				}

				this.__remove(prop, current);
				return current;
			}
		}
function(attr){
			// If this is List.
			var parts = mapHelpers.attrParts(attr),
			// The actual property to remove.
				prop = parts.shift(),
			// The current value.
				current = this.___get(prop);

			// If we have more parts, call `removeAttr` on that part.
			if (parts.length && current) {
				return canReflect.deleteKeyValue(current, parts.join("."));
			} else {

				// If attr does not have a `.`
				if (typeof attr === 'string' && !!~attr.indexOf('.')) {
					prop = attr;
				}

				this.__remove(prop, current);
				return current;
			}
		}
function ( attr ) { // If this is List. var parts = mapHelpers . attrParts ( attr ) , // The actual property to remove. prop = parts . shift ( ) , // The current value. current = this . ___get ( prop ) ; // If we have more parts, call `removeAttr` on that part. if ( parts . length && current ) { return canReflect . deleteKeyValue ( current , parts . join ( "." ) ) ; } else { // If attr does not have a `.` if ( typeof attr === 'string' && ! ! ~ attr . indexOf ( '.' ) ) { prop = attr ; } this . __remove ( prop , current ) ; return current ; } }
### _remove Handles removing nested observes.
### _remove Handles removing nested observes .