code: function(model) {
        var allFields,
          fieldsUsed = {},
          modelFields = {},
          modelConfigs = [];
        _.each(this.__getAllModelConfigs(), function(modelConfig) {
          if (modelConfig.model && modelConfig.model.cid === model.cid) {
            modelConfigs.push(modelConfig);
          }
        });
        allFields = _.reduce(modelConfigs, function(result, modelConfig) {
          return result || !modelConfig.fields;
        }, false);
        if (allFields) {
          modelFields = this.__cloneVal(model.attributes);
        } else {
          _.each(modelConfigs, function(modelConfig) {
            _.each(modelConfig.fields, function(field) {
              if (!fieldsUsed[field]) {
                fieldsUsed[field] = true;
                modelFields[field] = this.__cloneVal(model.get(field));
              }
            }, this);
          }, this);
        }
        return modelFields;
      }
docs: Returns a map where the keys are the fields that are being tracked on tracked model and values are
  the with current values of those fields.
  @param model {Backbone.Model instance} the object model
  @return {Object} aa map where the keys are the fields that are being tracked on tracked model and
  values are the with current values of those fields.
  @private
  @method __getTrackedModelFields