docs: function percentBy(valueMapper) {
      var valueSetter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
  
      return function (input) {
          if (input.isEmpty()) {
              return input;
          }
          var percents = input.map(valueMapper).update(percent());
  
          if (!valueSetter) {
              return percents;
          }
          return input.map(function (item, kk, iter) {
              var value = percents.get(kk);
              return valueSetter(item, value, kk, iter);
          });
      };
  }