code: def _get_adjusted_merge_area(self, attrs, insertion_point, no_to_insert,
                                   axis):
          
  
          assert axis in range(2)
  
          if "merge_area" not in attrs or attrs["merge_area"] is None:
              return
  
          top, left, bottom, right = attrs["merge_area"]
          selection = Selection([(top, left)], [(bottom, right)], [], [], [])
  
          selection.insert(insertion_point, no_to_insert, axis)
  
          __top, __left = selection.block_tl[0]
          __bottom, __right = selection.block_br[0]
  
          # Adjust merge area if it is beyond the grid shape
          rows, cols, tabs = self.shape
  
          if __top < 0 and __bottom < 0 or __top >= rows and __bottom >= rows or\
             __left < 0 and __right < 0 or __left >= cols and __right >= cols:
              return
  
          if __top < 0:
              __top = 0
  
          if __top >= rows:
              __top = rows - 1
  
          if __bottom < 0:
              __bottom = 0
  
          if __bottom >= rows:
              __bottom = rows - 1
  
          if __left < 0:
              __left = 0
  
          if __left >= cols:
              __left = cols - 1
  
          if __right < 0:
              __right = 0
  
          if __right >= cols:
              __right = cols - 1
  
          return __top, __left, __bottom, __right
docs: Returns updated merge area
  
          Parameters
          ----------
          attrs: Dict
          \tCell attribute dictionary that shall be adjusted
          insertion_point: Integer
          \tPont on axis, before which insertion takes place
          no_to_insert: Integer >= 0
          \tNumber of rows/cols/tabs that shall be inserted
          axis: Integer in range(2)
          \tSpecifies number of dimension, i.e. 0 == row, 1 == col