code: function slice (arrayLike, start, end) {
      var len = _toArrayLength(arrayLike.length);
      var begin = _toInteger(start);
      var upTo = _toInteger(end);
  
      if (begin < 0) {
          begin = begin < -len ? 0 : begin + len;
      }
  
      if (upTo < 0) {
          upTo = upTo < -len ? 0 : upTo + len;
      } else if (upTo > len) {
          upTo = len;
      }
  
      var resultLen = upTo - begin;
      var result = resultLen > 0 ? Array(resultLen) : [];
  
      for (var i = 0; i < resultLen; i++) {
          result[i] = arrayLike[begin + i];
      }
  
      return result;
  }
docs: Builds an array by extracting a portion of an array-like object.<br/>
  Note that unlike the native array method this function ensures that dense
  arrays are returned.<br/>
  Also, unlike the native method, the <code>start</code> and <code>end</code>
  parameters aren't optional and will be simply converted to integer.<br/>
  See {@link module:lamb.dropFrom|dropFrom} and {@link module:lamb.drop|drop} if you want a
  slice to the end of the array-like.
  @example
  var arr = [1, 2, 3, 4, 5];
  
  _.slice(arr, 0, 2) // => [1, 2]
  _.slice(arr, 2, -1) // => [3, 4]
  _.slice(arr, -3, 5) // => [3, 4, 5]
  
  @memberof module:lamb
  @category Array
  @see {@link module:lamb.sliceAt|sliceAt}
  @see {@link module:lamb.dropFrom|dropFrom}, {@link module:lamb.drop|drop}
  @since 0.1.0
  @param {ArrayLike} arrayLike - Any array like object.
  @param {Number} start - Index at which to begin extraction.
  @param {Number} end - Index at which to end extraction. Extracts up to but not including end.
  @returns {Array}