anchor.diff:      EpochNode;
   owner_of(Seq, [_ | Rest]) ->
       owner_of(Seq, Rest).
  +
  +validate_epochs(Epochs) ->
  +    %% Assert uniqueness.
  +    case length(Epochs) == length(lists:ukeysort(2, Epochs)) of
  +        true  -> ok;
  +        false -> erlang:error(duplicate_epoch)
  +    end,
  +    %% Assert order.
  +    case Epochs == lists:sort(fun({_, A}, {_, B}) -> B =< A end, Epochs) of
  +        true  -> ok;
  +        false -> erlang:error(epoch_order)
  +    end.
   
   -ifdef(TEST).
   -include_lib("eunit/include/eunit.hrl").
  
positive.code:     ?assert(is_owner(foo, 2, [{foo, 1}])),
      ?assert(is_owner(foo, 50, [{bar, 100}, {foo, 1}])),
      ?assert(is_owner(foo, 50, [{baz, 200}, {bar, 100}, {foo, 1}])),
      ?assert(is_owner(bar, 150, [{baz, 200}, {bar, 100}, {foo, 1}])).
  
  -endif.
  
negative.code:     end.
  
  is_owner(Node, Seq, Epochs) ->
      validate_epochs(Epochs),
      Node =:= owner_of(Seq, Epochs).
  
  owner_of(_Seq, []) ->
  