if (nRow == 0 && nCol == 0) { //nothing to do!
return null;
}
final Book book = (Book) sheet.getWorkbook();
final RefSheet refSheet = getRefSheet(book, sheet);
final Set<Ref>[] refs = refSheet.moveRange(tRow, lCol, bRow, rCol, nRow, nCol);
final List<CellRangeAddress[]> shiftedRanges = nCol != 0 && nRow == 0 ?
((HSSFSheetImpl)sheet).shiftColumnsRange(lCol, rCol, nCol, tRow, bRow, true, false, true, false, Range.FORMAT_NONE):
nCol == 0 && nRow != 0 ?
((HSSFSheetImpl)sheet).shiftRowsRange(tRow, bRow, nRow, lCol, rCol, true, false, true, false, Range.FORMAT_NONE):
((HSSFSheetImpl)sheet).shiftBothRange(tRow, bRow, nRow, lCol, rCol, nCol, true); //nCol != 0 && nRow != 0