code: function(obj) {
          if (get(this, 'isFrozen')) throw new EmberError(FROZEN_ERROR);
          if (isNone(obj)) return this; // nothing to do
  
          var guid = guidFor(obj);
          var idx  = this[guid];
          var len  = get(this, 'length');
          var added;
  
          if (idx>=0 && idx<len && (this[idx] === obj)) return this; // added
  
          added = [obj];
  
          this.enumerableContentWillChange(null, added);
          propertyWillChange(this, 'lastObject');
  
          len = get(this, 'length');
          this[guid] = len;
          this[len] = obj;
          set(this, 'length', len+1);
  
          propertyDidChange(this, 'lastObject');
          this.enumerableContentDidChange(null, added);
  
          return this;
        }
docs: implements Ember.MutableEnumerable