code: function state(list, sortMethod)
  {
    var isNamedList = !Array.isArray(list)
      , initState =
      {
        index    : 0,
        keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
        jobs     : {},
        results  : isNamedList ? {} : [],
        size     : isNamedList ? Object.keys(list).length : list.length
      }
      ;
  
    if (sortMethod)
    {
      // sort array keys based on it's values
      // sort object's keys just on own merit
      initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
      {
        return sortMethod(list[a], list[b]);
      });
    }
  
    return initState;
  }
docs: Creates initial state object
  for iteration over list
  
  @param   {array|object} list - list to iterate over
  @param   {function|null} sortMethod - function to use for keys sort,
  or `null` to keep them as is
  @returns {object} - initial state object