}
//log.info("Start: " + item + " " + currentRow + "/" + rowSpan + " " + currentCol + "/" + colSpan + " " + colCounts);
for(int i = row; i < row + rowSpan; i++) {
int currentMaxColumns = ((Integer) colCounts.objectAtIndex(i)).intValue();
currentMaxColumns = currentMaxColumns - (colSpan - (i == row ? 1 : 0));
colCounts.replaceObjectAtIndex(Integer.valueOf(currentMaxColumns), i);
//log.info("Curr: " + item + " " + i + "/" + rowSpan + " " + currentMaxColumns + "/" + colSpan + " " + colCounts);
}
//log.info("Intern: " + item + " " + currentRow + "/" + rowSpan + " " + currentCol + "/" + colSpan + " " + colCounts);
int currentRowMaxColums = ((Integer) colCounts.objectAtIndex(row)).intValue();
total += rowSpan * colSpan;