whole_func_string: function difference(array) {
        var index = -1,
            indexOf = getIndexOf(),
            length = array ? array.length : 0,
            seen = baseFlatten(arguments, true, true, 1),
            result = [];
  
        var isLarge = length >= largeArraySize && indexOf === baseIndexOf;
  
        if (isLarge) {
          var cache = createCache(seen);
          if (cache) {
            indexOf = cacheIndexOf;
            seen = cache;
          } else {
            isLarge = false;
          }
        }
        while (++index < length) {
          var value = array[index];
          if (indexOf(seen, value) < 0) {
            result.push(value);
          }
        }
        if (isLarge) {
          releaseObject(seen);
        }
        return result;
      }
func_code_string: function difference(array) {
        var index = -1,
            indexOf = getIndexOf(),
            length = array ? array.length : 0,
            seen = baseFlatten(arguments, true, true, 1),
            result = [];
  
        var isLarge = length >= largeArraySize && indexOf === baseIndexOf;
  
        if (isLarge) {
          var cache = createCache(seen);
          if (cache) {
            indexOf = cacheIndexOf;
            seen = cache;
          } else {
            isLarge = false;
          }
        }
        while (++index < length) {
          var value = array[index];
          if (indexOf(seen, value) < 0) {
            result.push(value);
          }
        }
        if (isLarge) {
          releaseObject(seen);
        }
        return result;
      }
func_documentation_string: Creates an array excluding all values of the provided arrays using strict
  equality for comparisons, i.e. `===`.
  
  @static
  @memberOf _
  @category Arrays
  @param {Array} array The array to process.
  @param {...Array} [array] The arrays of values to exclude.
  @returns {Array} Returns a new array of filtered values.
  @example
  
  _.difference([1, 2, 3, 4, 5], [5, 2, 10]);
  // => [1, 3, 4]