function forIn(object, fn, scope) {
  var symbols,
      k,
      i,
      l;

  for (k in object)
    fn.call(scope || null, k, object[k]);

  if (Object.getOwnPropertySymbols) {
    symbols = Object.getOwnPropertySymbols(object);

    for (i = 0, l = symbols.length; i < l; i++)
      fn.call(scope || null, symbols[i], object[symbols[i]]);
  }
}
Iterate over an object that may have ES6 Symbols.

@param  {object}   object  Object on which to iterate.
@param  {function} fn      Iterator function.
@param  {object}   [scope] Optional scope.