"; max. cell size: " + maxCellSize);
"; max. cell size: " + maxCellSize + "; max cell at [" + maxCellStart + "," + maxCellEnd + "]");
  protected void reclaimItemsInChart() {    int numCells = 0, maxCellSize = 0;    if (debugNumPrunedItems) {      System.err.println(className +                         ": number of items pre-pruned: " + numPrePruned);      System.err.println(className + ": number of items pruned: " + numPruned);      System.err.println(className + ": total number of pruned items: " +                         (numPrePruned + numPruned));    }    if (debugCellSize) {      System.err.println(className +                         ": total No. of items in chart: " + totalItems);    }    if (totalItems > 0) {      if (debugNumItemsGenerated) {	System.err.println(className +                           ": generated " + totalItemsGenerated + " for the " +			   "previous sentence");      }      if (debugPoolUsage) {        System.err.println(className + ": pool has " + itemPool.size() +                           " items; capacity = " + itemPool.capacity() +                           "; reclaiming " + totalItems + " items");      }      for (int i = 0; i < size; i++) {        for (int j = i; j < size; j++) {	  Map map = chart[i][j].map;	  itemPool.putBackAll(map.keySet());          if (debugCellSize) {            if (map.size() > 0)              numCells++;            if (map.size() > maxCellSize)              maxCellSize = map.size();          }        }      }    }    if (debugPoolUsage) {      System.err.println(className + ": pool has " + itemPool.size() +                         " items; capacity = " + itemPool.capacity());    }    if (debugCellSize) {      if (numCells > 0)	System.err.println(className + ": num. cells: " + numCells +			   "; avg. cell size: " +                           (totalItems / (float)numCells) +			   "; max. cell size: " + maxCellSize);    }  }