function* arrayIndexes(object)
        {
            if (toIndex - fromIndex < sparseIterationThreshold) {
                for (var i = fromIndex; i <= toIndex; ++i) {
                    if (i in object)
                        yield i;
                }
            } else {
                ownPropertyNames = ownPropertyNames || Object.getOwnPropertyNames(object);
                for (var i = 0; i < ownPropertyNames.length; ++i) {
                    var name = ownPropertyNames[i];
                    var index = name >>> 0;
                    if (("" + index) === name && fromIndex <= index && index <= toIndex)
                        yield index;
                }
            }
        }
Note: must declare params as optional.
@param {number=} fromIndex
@param {number=} toIndex
@param {number=} bucketThreshold
@param {number=} sparseIterationThreshold
@param {number=} getOwnPropertyNamesThreshold
@suppressReceiverCheck
@this {Object}