public boolean take(
     int amnt,
     final boolean note,
     final Map<Integer, Integer> items,
     final Map<Integer, Integer> used) {
   amnt *= getWeight(itemId);
   if (note && canNote()) {
     int noteId = getNotedId();
     int amntToUse = Math.min(amnt, get(items, noteId) - get(used, noteId));
     amnt -= amntToUse;
     update(used, noteId, amntToUse);
   }
   int itemId = getItemId();
   int amntToUse = Math.min(amnt, get(items, itemId) - get(used, itemId));
   amnt -= amntToUse;
   update(used, itemId, amntToUse);
   return amnt <= 0;
 }