docs: function(prop) {
                      return function(attributes) {
                          // If there're no properties, there can be no model.
                          if (!attributes) {
                              return;
                          }
                          // If this object knows how to serialize, parse, or access itself, we'll use that instead.
                          if (typeof attributes.serialize === 'function') {
                              attributes = attributes.serialize();
                          }
                          if (this.parseModel) {
                              attributes = this.parseModel.apply(this, arguments);
                          } else if (prop) {
                              attributes = can.getObject(prop || "data", attributes);
                          }
  
                          var id = attributes[this.id],
                              // 0 is a valid ID.
                              model = (id || id === 0) && this.store[id] ?
                              // If this model is in the store already, just update it.
                              this.store[id].attr(attributes, this.removeAttr || false) :
                              // Otherwise, we need a new model.
                              new this(attributes);
  
                          return model;
                      };
                  }