@Override
        public void call(MessageRunner runner) {
          ItemPattern pattern = runner.<ItemPattern>getValue("pattern");

          WeightedItemList list = OrbAcquirableItems.idList;
          int size = list.size(), damageRemoved = 0;

          for (Iterator<WeightedItem> iter = list.iterator(); iter.hasNext(); ) {
            Pair<Integer, Boolean> info = iter.next().runBlacklistPattern(pattern);

            if (info.getRight()) iter.remove();
            damageRemoved += info.getLeft();
          }

          size = size - list.size();

          if (size == 0 && damageRemoved == 0)
            MessageLogger.logWarn("Did not find any items to remove.");
          else if (size == 0)
            MessageLogger.logOk("Removed $0 damage value(s) from items.", damageRemoved);
          else
            MessageLogger.logOk(
                "Removed $0 item(s) and $1 damage value(s) in total.", size, damageRemoved);

          if (list.size() == 0)
            MessageLogger.logWarn("No items left in the list, falling back to generic chest loot.");
        }