var baseToPairs = require('./_baseToPairs'),

getTag = require('./_getTag'),
mapToArray = require('./_mapToArray'),
setToPairs = require('./_setToPairs');

/** `Object#toString` result references. */ var mapTag = '[object Map]',

setTag = '[object Set]';

/**

* Creates a `_.toPairs` or `_.toPairsIn` function.
*
* @private
* @param {Function} keysFunc The function to get the keys of a given object.
* @returns {Function} Returns the new pairs function.
*/

function createToPairs(keysFunc) {

return function(object) {
  var tag = getTag(object);
  if (tag == mapTag) {
    return mapToArray(object);
  }
  if (tag == setTag) {
    return setToPairs(object);
  }
  return baseToPairs(object, keysFunc(object));
};

}

module.exports = createToPairs;