docs: function(attr, value, keepKey) {
                      // Convert `attr` to attr parts (if it isn't already).
                      var parts = can.Map.helpers.attrParts(attr, keepKey),
                          // The immediate prop we are setting.
                          prop = parts.shift(),
                          // We only need to get the current value if we are not in init.
                          current = this._init ? undefined : this.__get(prop);
  
                      if (parts.length && Map.helpers.isObservable(current)) {
                          // If we have an `object` and remaining parts that `object` should set it.
                          current._set(parts, value);
                      } else if (!parts.length) {
                          // We're in "real" set territory.
                          if (this.__convert) {
                              //Convert if there is a converter
                              value = this.__convert(prop, value);
                          }
                          this.__set(prop, this.__type(value, prop), current);
                      } else {
                          throw "can.Map: Object does not exist";
                      }
                  }