anchor.diff:  % accepted messages of an active cyclon process
   -type(message() ::
       {cy_shuffle} |
  -    {rm_changed, OldNeighbors::nodelist:neighborhood(), NewNeighbors::nodelist:neighborhood()} |
  +    {rm_changed, NewNode::node:node_type()} |
       {check_state} |
       {cy_subset, SourcePid::comm:mypid(), PSubset::cyclon_cache:cache()} |
       {cy_subset_response, QSubset::cyclon_cache:cache(), PSubset::cyclon_cache:cache()} |
  
positive.code:     TriggerState2 = trigger:next(TriggerState),
      {NewCache, Node, Cycles + 1, TriggerState2};
  
  on_active({rm_changed, _OldNeighbors, NewNeighbors}, {Cache, _OldNode, Cycles, TriggerState}) ->
      Node = nodelist:node(NewNeighbors),
      {Cache, Node, Cycles, TriggerState};
  
  on_active({check_state}, State) ->
      check_state(State),
  
negative.code:          ({deactivate_cyclon}, state_active()) -> {'$gen_component', [{on_handler, Handler::on_inactive}], State::state_inactive()}.
  on_active({deactivate_cyclon}, {_Cache, _Node, _Cycles, TriggerState})  ->
      log:log(info, "[ Cyclon ~.0p ] deactivating...~n", [comm:this()]),
      rm_loop:unsubscribe(self(), fun rm_loop:subscribe_default_filter/2, fun cyclon:rm_send_changes/3),
      gen_component:change_handler({inactive, msg_queue:new(), TriggerState},
                                   on_inactive);
  
  