message: JSDoc comments added.
  Making internal methods a bit more obvious.
diff: import _ from 'underscore';
  import { ItemTransformer } from './itemTransformer';
  +/**
  + * Translates collections of DIM items into a collection of data almost ready to ship to the DTR API.
  + * Generally tailored to work with weapon data.
  + *
  + * @class ItemListBuilder
  + */
  class ItemListBuilder {
  constructor() {
  this._itemTransformer = new ItemTransformer();
  }
  - getNewItems(allItems, scoreMaintainer) {
  + _getNewItems(allItems, reviewDataCache) {
  var self = this;
  var allDtrItems = _.map(allItems, function(item) { return self._itemTransformer.translateToDtrWeapon(item); });
  - var allKnownDtrItems = scoreMaintainer.getItemStores();
  + var allKnownDtrItems = reviewDataCache.getItemStores();
  var unmatched = _.filter(allDtrItems, function(dtrItem) {
  var matchingItem = _.findWhere(allKnownDtrItems, { referenceId: String(dtrItem.referenceId), roll: dtrItem.roll });
  @@ -19,7 +25,7 @@ class ItemListBuilder {
  return unmatched;
  }
  - getAllItems(stores) {
  + _getAllItems(stores) {
  var allItems = [];
  stores.forEach(function(store) {
  @@ -29,9 +35,9 @@ class ItemListBuilder {
  return allItems;
  }
  - getWeapons(stores, scoreMaintainer) {
  + _getWeapons(stores, reviewDataCache) {
  var self = this;
  - var allItems = this.getAllItems(stores);
  + var allItems = this._getAllItems(stores);
  var allWeapons = _.filter(allItems,
  function(item) {
  @@ -42,23 +48,34 @@ class ItemListBuilder {
  return (item.primStat.statHash === 368428387);
  });
  - var newGuns = this.getNewItems(allWeapons, scoreMaintainer);
  + var newGuns = this._getNewItems(allWeapons, reviewDataCache);
  - if (scoreMaintainer.getItemStores().length > 0) {
  + if (reviewDataCache.getItemStores().length > 0) {
  return newGuns;
  }
  return _.map(allWeapons, function(item) { return self._itemTransformer.translateToDtrWeapon(item); });
  }
  - getWeaponList(stores, scoreMaintainer) {
  - var weapons = this.getWeapons(stores, scoreMaintainer);
  + /**
  + * Translate the universe of weapons that the user has in their stores into a collection of data that we can send the DTR API.
  + * Tailored to work alongside the bulkFetcher.
  + * Non-obvious bit: it attempts to optimize away from sending items that already exist in the ReviewDataCache.
  + *
  + * @param {any} stores
  + * @param {ReviewDataCache} reviewDataCache
  + * @returns {array}
  + *
  + * @memberof ItemListBuilder
  + */
  + getWeaponList(stores, reviewDataCache) {
  + var weapons = this._getWeapons(stores, reviewDataCache);
  var list = [];
  var self = this;
  weapons.forEach(function(weapon) {
  - if (!self.isKnownWeapon(list, weapon)) {
  + if (!self._isKnownWeapon(list, weapon)) {
  list.push(weapon);
  }
  });
  @@ -66,7 +83,7 @@ class ItemListBuilder {
  return list;
  }
  - isKnownWeapon(list, dtrWeapon) {
  + _isKnownWeapon(list, dtrWeapon) {
  return _.contains(list, dtrWeapon);
  }
  }
  