public void calcSequentialNavigation(
     IBranchPart branch, IBranchPart startChild, IBranchPart endChild, List<IBranchPart> results) {
   Column2 row = getColumn(branch);
   Item2 startItem = row.findItem(startChild);
   if (startItem != null) {
     Cell2 cell = startItem.getOwnedCell();
     Item2 endItem = row.findItem(endChild);
     if (endItem != null && cell == endItem.getOwnedCell()) {
       int startIndex = cell.getItemIndex(startItem);
       int endIndex = cell.getItemIndex(endItem);
       if (startIndex >= 0 && endIndex >= 0) {
         boolean decreasing = endIndex < startIndex;
         for (int i = startIndex; decreasing ? i >= endIndex : i <= endIndex; ) {
           Item2 item = cell.getItems().get(i);
           results.add(item.getBranch());
           if (decreasing) i--;
           else i++;
         }
       }
     }
   }
   super.calcSequentialNavigation(branch, startChild, endChild, results);
 }
 protected void invalidateBranch(IBranchPart branch) {
   super.invalidateBranch(branch);
   MindMapUtils.setCache(branch, Spreadsheet.CACHE_INVALIDATING, Boolean.TRUE);
 }
 public void fillLayoutData(IBranchPart branch, ReferencedLayoutData data) {
   super.fillLayoutData(branch, data);
   MindMapUtils.flushCache(branch, Spreadsheet.CACHE_INVALIDATING);
 }