code: function (array, startIdx, endIdx) {
          
          if (!Arrays.isArrayLike(array))
              throw "IllegalArgumentException: array must be Array-like, and have \"length\" property.";
          
          var len = array.length;
          if (len === 0)
              return [];
          
          startIdx = Arrays._sliceIdx(startIdx, 0,   len);
          endIdx   = Arrays._sliceIdx(endIdx,   len, len);
          
          if (startIdx > endIdx)
              throw "UnsupportedOperationException: startIdx must be lesser or equal to endIdx.";
          
          var a = [];
          for (var i = startIdx; i < endIdx; i++)
              a.push(array[i]);
          return a;
      }
docs: This function behaves identical to the Array prototype's slice() method.
  We implement this version to provide slice() for Array-like object
  (objects that are similar to Array, but aren't constructed by the
  Array() constructor - i.e. a function's "arguments").
  @param array (Array-like object)
  @param startIdx (Integer, optional, non-negative)
  @param endIdx (Integer, optional, non-negative) less or equal to array.length