anchor.diff:  row_with_key(RowId, {?MODULE,Pid}) when is_integer(RowId) -> 
       % ?Debug("row_with_key ~p", [RowId]),
       gen_fsm:sync_send_all_state_event(Pid,{"row_with_key", RowId}).
  +
  +-spec get_count({atom(), pid()}) -> integer().
  +get_count({?MODULE, Pid}) ->
  +    gen_fsm:sync_send_all_state_event(Pid, get_count).
   
   %% the return tuple type #stmtcol{}. but is not imported
   -spec get_columns({atom(), pid()}) -> [tuple()].
  
positive.code: -spec gres(atom(), integer(), list(), binary(), integer(), boolean(), #gres{}) -> #gres{}.
  gres(SN,Cnt,ToolTip,Sql,DirtyCount,GuiCol,Gres0) ->
      Disable = case DirtyCount of
          0 ->    
              [{<<"commit">>,<<"nothing to commit">>},{<<"rollback">>,<<"nothing to rollback">>}|Gres0#gres.disable];
          _ ->    
              Gres0#gres.disable
      end,    
      Promo = if
          (SN == aborted) ->
              [{<<"restart">>,<<"restart to see more data">>}|Gres0#gres.promote];
          (GuiCol) ->
              [{<<"restart">>,<<"refresh to see correct sorting">>}|Gres0#gres.promote];
          true ->    
              Gres0#gres.promote
      end,    
      SNbin = list_to_binary(atom_to_list(SN)),
      TTbin = list_to_binary(ToolTip),
      Gres0#gres{state=SNbin,cnt=Cnt,toolTip=TTbin,sql=Sql,disable=empty_override(Disable),promote=empty_override(Promo)}.
  
negative.code:                         %% filter FilterSpec   =  {'and',[{Col1,["ValueA".."ValueN"]}, {Col2,["ValueX"]}]}
                          %% sort   GuiSortSpec  =  [{Col1,'asc'}..{ColN,'desc'}]
          , row_with_key/2
          , get_count/1
          , get_columns/1
          , get_query/1
          , get_table_name/1
  