Program: 76563
Project: 76563
Buggy source:
public void resolveAll(){
  if (rows.size() == 0 || !hasDropCell) {
    return;
  }
  Row row=(Row)rows.getCurrent();
  int rowHeight=row.getArea().getHeight();
  int height=rowHeight;
  boolean hasDropCell=false;
  for (int i=0; i < columnNumber; i++) {
    CellArea cell=row.getCell(start + i);
    assert(cell != null);
    if (cell.getRowSpan() < 0 || cell.getRowSpan() > 1) {
      height=Math.max(height,cell.getHeight());
      hasDropCell=true;
    }
  }
  if (hasDropCell) {
    unfinishedRow=new UnresolvedRow();
    HashSet dropCells=new HashSet();
    int delta=height - rowHeight;
    for (int i=0; i < columnNumber; i++) {
      CellArea cell=row.getCell(start + i);
      assert(cell != null);
      int rowSpan=cell.getRowSpan();
      if (rowSpan < 0 || rowSpan > 1) {
        if (cell instanceof DummyCell) {
          CellArea ref=((DummyCell)cell).getCell();
          int cellHeight=cell.getHeight();
          int refHeight=ref.getHeight();
          if (!dropCells.contains(ref)) {
            ref.setHeight(refHeight - cellHeight + delta);
            verticalAlign(ref);
            dropCells.add(ref);
          }
        }
 else {
          cell.setHeight(height);
          verticalAlign(cell);
        }
        unfinishedRow.addUnresolvedCell((ICellContent)cell.getContent(),getLeftRowSpan(row.finished,rowSpan));
      }
 else       if (rowSpan == 1) {
        if (cell instanceof DummyCell) {
          CellArea ref=((DummyCell)cell).getCell();
          if (!dropCells.contains(ref)) {
            ref.setHeight(ref.getHeight() + delta);
            if (delta > 0) {
              verticalAlign(ref);
            }
            dropCells.add(ref);
          }
        }
 else {
          cell.setHeight(height);
          verticalAlign(cell);
        }
        if (row != null && !row.finished) {
          unfinishedRow.addUnresolvedCell((ICellContent)cell.getContent(),1);
        }
      }
    }
  }
  if (hasDropCell || (row != null && !row.finished)) {
    this.keepUnresolvedCell(row);
  }
}

Fixed version (ground truth):
public void resolveAll(){
  if (rows.size() == 0 || !hasDropCell) {
    return;
  }
  Row row=(Row)rows.getCurrent();
  int rowHeight=row.getArea().getHeight();
  int height=rowHeight;
  boolean hasDropCell=false;
  for (int i=0; i < columnNumber; i++) {
    CellArea cell=row.getCell(start + i);
    if (cell != null) {
      if (cell.getRowSpan() < 0 || cell.getRowSpan() > 1) {
        height=Math.max(height,cell.getHeight());
        hasDropCell=true;
      }
    }
  }
  if (hasDropCell) {
    unfinishedRow=new UnresolvedRow();
    HashSet dropCells=new HashSet();
    int delta=height - rowHeight;
    for (int i=0; i < columnNumber; i++) {
      CellArea cell=row.getCell(start + i);
      if (cell == null) {
        continue;
      }
      int rowSpan=cell.getRowSpan();
      if (rowSpan < 0 || rowSpan > 1) {
        if (cell instanceof DummyCell) {
          CellArea ref=((DummyCell)cell).getCell();
          int cellHeight=cell.getHeight();
          int refHeight=ref.getHeight();
          if (!dropCells.contains(ref)) {
            ref.setHeight(refHeight - cellHeight + delta);
            verticalAlign(ref);
            dropCells.add(ref);
          }
        }
 else {
          cell.setHeight(height);
          verticalAlign(cell);
        }
        unfinishedRow.addUnresolvedCell((ICellContent)cell.getContent(),getLeftRowSpan(row.finished,rowSpan));
      }
 else       if (rowSpan == 1) {
        if (cell instanceof DummyCell) {
          CellArea ref=((DummyCell)cell).getCell();
          if (!dropCells.contains(ref)) {
            ref.setHeight(ref.getHeight() + delta);
            if (delta > 0) {
              verticalAlign(ref);
            }
            dropCells.add(ref);
          }
        }
 else {
          cell.setHeight(height);
          verticalAlign(cell);
        }
        if (row != null && !row.finished) {
          unfinishedRow.addUnresolvedCell((ICellContent)cell.getContent(),1);
        }
      }
    }
  }
  if (hasDropCell || (row != null && !row.finished)) {
    this.keepUnresolvedCell(row);
  }
}