anchor.diff:  
   -spec data_rollback_raw(integer(), list(), integer(), integer(), integer()) -> {integer(), integer(), integer()}.
   data_rollback_raw(_,[],GuiCnt,GuiTop,GuiBot) -> {GuiCnt,GuiTop,GuiBot};
  -data_rollback_raw(TableId,[Row|ChangeList],GuiCnt,GuiTop,GuiBot) when (element(1,element(3,Row))==?NoKey)  ->
  +data_rollback_raw(TableId,[Row|ChangeList],GuiCnt,GuiTop,GuiBot) when (element(2,element(3,Row))==?NoKey)  ->
       Id = element(1,Row),
       ets:delete(TableId,Id),    
       data_rollback_raw(TableId,ChangeList,GuiCnt,GuiTop,GuiBot);
  
positive.code: 
  -spec data_commit_raw(integer(), list(), integer(), integer(), integer()) -> tuple().
  data_commit_raw(_,[],GuiCnt,GuiTop,GuiBot) -> {GuiCnt,GuiTop,GuiBot};
  data_commit_raw(TableId,[{Id,NK}|ChangedKeys],GuiCnt,GuiTop,GuiBot) when (element(1,NK)==?NoKey)  ->
      ets:delete(TableId,Id),    
      data_commit_raw(TableId,ChangedKeys,GuiCnt,GuiTop,GuiBot);
  data_commit_raw(TableId,[{Id,NK}|ChangedKeys],GuiCnt,GuiTop,GuiBot) ->
      ets:insert(TableId,{Id,nop,NK}),    
  
negative.code: 
  -spec data_rollback_ind(integer(), integer(), fun(), fun(), fun(), list(), integer(), tuple(), tuple()) -> {integer(), tuple(), tuple()}.
  data_rollback_ind(_,_,_,_,_,[],GuiCnt,GuiTop,GuiBot) -> {GuiCnt,GuiTop,GuiBot};
  data_rollback_ind(TableId,IndexId,RowFun,SortFun,FilterFun,[Row|ChangeList],GuiCnt,GuiTop,GuiBot) when (element(2,element(3,Row))==?NoKey) ->
      Id = element(1,Row),
      ets:delete(TableId,Id),    
      data_rollback_ind(TableId,IndexId,RowFun,SortFun,FilterFun,ChangeList,GuiCnt,GuiTop,GuiBot);
  