anchor.diff:  % nodes getting added/removed, and gossiping about config
   % information.
   %
  --record(config, {dynamic = [], % List of TupleList's.  TupleList is {K, V}.
  -                 static = []   % List of TupleList's.  TupleList is {K, V}.
  +-record(config, {static = [], % List of TupleList's.  TupleList is {K, V}.
  +                 dynamic = [] % List of TupleList's.  TupleList is {K, V}.
                   }).
   
   %% gen_server callbacks
  
positive.code: -behaviour(gen_server).
  
  -export([start_link/1, stop/0,
           val/1, get/2, get/1, get/0, set/1, set/2,
           search/2]).
  
  % A static config file is often hand edited.
  
negative.code: -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
           terminate/2, code_change/3]).
  
  start_link(InitInfo) ->
      gen_server:start_link({local, ?MODULE}, ?MODULE, InitInfo, []).
  
  stop() -> gen_server:cast(?MODULE, stop).
  
  set(Key, Val)      -> ?MODULE:set([{Key, Val}]).
  set(KVList)        -> gen_server:call(?MODULE, {set, KVList}).
  get()              -> gen_server:call(?MODULE, get).
  get(Node)          -> ?MODULE:get(Node, 500).
  get(Node, Timeout) -> gen_server:call({?MODULE, Node}, get, Timeout).
  
  search(undefined, _Key) -> false;
  search([], _Key)        -> false;
  