code: function(collection, callback) {
      var index, iterable = collection, result = iterable;
      if (!iterable) return result;
      if (!objectTypes[typeof iterable]) return result;
        for (index in iterable) {
          if (hasOwnProperty.call(iterable, index)) {
            if (callback(iterable[index], index, collection) === indicatorObject) return result;
          }
        }
      return result
    }
docs: Iterates over own enumerable properties of an object, executing the callback
  for each property. The callback is bound to `thisArg` and invoked with three
  arguments; (value, key, object). Callbacks may exit iteration early by
  explicitly returning `false`.
  
  @static
  @memberOf _
  @type Function
  @category Objects
  @param {Object} object The object to iterate over.
  @param {Function} [callback=identity] The function called per iteration.
  @param {*} [thisArg] The `this` binding of `callback`.
  @returns {Object} Returns `object`.
  @example
  
  _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {
  console.log(key);
  });
  // => logs '0', '1', and 'length' (property order is not guaranteed across environments)