setData : function(rawData) {
  var me = this;
  var fields = me.fields.items;
  var ln = fields.length;
  var isArray = Ext.isArray(rawData);
  var data = me.data = {};
  var i;
  var field;
  var name;
  var value;
  var convert;
  var id;
  if (!rawData) {
   return me;
  }
  for (i = 0; i < ln; i++) {
   field = fields[i];
   name = field.name;
   convert = field.convert;
   if (isArray) {
    value = rawData[i];
   } else {
    value = rawData[name];
    if (typeof value == 'undefined') {
     value = field.defaultValue;
    }
   }
   if (convert) {
    value = field.convert(value, me);
   }

   data[name] = value;
  }

  id = me.getId();
  if (me.associations.length) {
   me.handleInlineAssociationData(rawData);
  }
  return me;
 },

 handleInlineAssociationData : function(data) {
  var associations = this.associations.items;
  var ln = associations.length;
  var i;
  var association;
  var associationData;
  var reader;
  var proxy;
  varassociationKey;

  data = Ext.apply({}, data, this.raw);

  for (i = 0; i < ln; i++) {
   association = associations[i];
   associationKey = association.associatedKey;
   associationData = data[associationKey];

   if (associationData) {
    reader = association.getReader();
    if (!reader) {
     proxy = association.associatedModel.getProxy();
     if (proxy) {
      reader = proxy.getReader();
     } else {
      reader = new Ext.data.JsonReader({
       model : association.getAssociatedModel()
      });
     }
    }
    association.read(this, reader, associationData);
   }
  }
 }