anchor.diff:  
   -spec tester_create_state(Status, Range, Interval,
       CBState, CBStatus, ExchData, Round, TriggerLock, Cycles) -> state()
  -    when    Status :: init | uninit,
  -            Range :: intervals:interval(),
  -            Interval :: pos_integer(),
  -            CBState :: any(),
  -            CBStatus :: unstarted | started | tombstone,
  -            ExchData :: any(),
  -            Round :: non_neg_integer(),
  -            TriggerLock :: free | locked,
  -            Cycles :: non_neg_integer().
  +    when    is_subtype(Status, init | uninit),
  +            is_subtype(Range, intervals:interval()),
  +            is_subtype(Interval, pos_integer()),
  +            is_subtype(CBState, any()),
  +            is_subtype(CBStatus, unstarted | started | tombstone),
  +            is_subtype(ExchData, any()),
  +            is_subtype(Round, non_neg_integer()),
  +            is_subtype(TriggerLock, free | locked),
  +            is_subtype(Cycles, non_neg_integer()).
   tester_create_state(Status, Range, Interval, CBState, CBStatus,
           ExchData, Round, TriggerLock, Cycles) ->
       State = ?PDB:new(state, ?PDB_OPTIONS),
  
positive.code: 
  
  -spec start_gossip_task(CBModule, Args) -> ok when
      CBModule :: atom() | cb_module() | {cb_module(), uid:global_uid()},
      Args :: list().
  start_gossip_task(ModuleName, Args) when is_atom(ModuleName) ->
      Id = uid:get_global_uid(),
      start_gossip_task({ModuleName, Id}, Args);
  
negative.code: 
  
  -spec cb_call(FunName, CBModule) -> non_neg_integer() | pos_integer() when
      is_subtype(FunName, min_cycles_per_round | max_cycles_per_round | trigger_interval),
      is_subtype(CBModule, cb_module()).
  cb_call(FunName, CBModule) ->
      cb_call(FunName, [], CBModule).
  
  -spec cb_call(FunName, Args, CBModule) -> Return when
      is_subtype(FunName, init | min_cycles_per_round | max_cycles_per_round | trigger_interval),
      is_subtype(Args, list()),
      is_subtype(CBModule, cb_module()),
      is_subtype(Return, non_neg_integer() | pos_integer() | {ok, any()}).
  cb_call(FunName, Args, CBModule) ->
      {CBModuleName, _Id} = CBModule,
      apply(CBModuleName, FunName, Args).
  
  
  -spec cb_call(FunName, Arguments, Msg, CBModule, State) -> Return when
      is_subtype(FunName, cb_fun_name()),
      is_subtype(Arguments, list()),
      is_subtype(Msg, message()),
      is_subtype(CBModule, cb_module()),
      is_subtype(State, state()),
      is_subtype(Return, ok | discard_msg
          | send_back | boolean() | {any(), any(), any()} | list({list(), list()})).
  cb_call(FunName, Args, Msg, CBModule, State) ->
      {ModuleName, _InstanceId} = CBModule,
      CBState = state_get(cb_state, CBModule, State),
  