code: function(beginIndex, endIndex) {
          var ret = Ember.A();
          var length = get(this, 'length');
  
          if (isNone(beginIndex)) {
            beginIndex = 0;
          }
  
          if (isNone(endIndex) || (endIndex > length)) {
            endIndex = length;
          }
  
          if (beginIndex < 0) {
            beginIndex = length + beginIndex;
          }
  
          if (endIndex < 0) {
            endIndex = length + endIndex;
          }
  
          while (beginIndex < endIndex) {
            ret[ret.length] = this.objectAt(beginIndex++);
          }
  
          return ret;
        }
docs: Add any extra methods to Ember.Array that are native to the built-in Array. 
  Returns a new array that is a slice of the receiver. This implementation
  uses the observable array methods to retrieve the objects for the new
  slice.
  
  ```javascript
  var arr = ['red', 'green', 'blue'];
  
  arr.slice(0);       // ['red', 'green', 'blue']
  arr.slice(0, 2);    // ['red', 'green']
  arr.slice(1, 100);  // ['green', 'blue']
  ```
  
  @method slice
  @param {Integer} beginIndex (Optional) index to begin slicing from.
  @param {Integer} endIndex (Optional) index to end the slice at (but not included).
  @return {Array} New array with specified slice