code: function baseFlatten$1(array, depth, predicate, isStrict, result) {
    var index = -1,
        length = array.length;
  
    predicate || (predicate = isFlattenable);
    result || (result = []);
  
    while (++index < length) {
      var value = array[index];
      if (depth > 0 && predicate(value)) {
        if (depth > 1) {
          // Recursively flatten arrays (susceptible to call stack limits).
          baseFlatten$1(value, depth - 1, predicate, isStrict, result);
        } else {
          arrayPush$3(result, value);
        }
      } else if (!isStrict) {
        result[result.length] = value;
      }
    }
    return result;
  }
docs: The base implementation of `_.flatten` with support for restricting flattening.
  
  @private
  @param {Array} array The array to flatten.
  @param {number} depth The maximum recursion depth.
  @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
  @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
  @param {Array} [result=[]] The initial result value.
  @returns {Array} Returns the new flattened array.