anchor.diff:  
   % Functional, immutable consistent-hash-ring.
   
  --record(cring, {hash,    % A tuple of {HashMod, HashCfg}.
  -                ring,    % [#carc{}, ...], ordered by ascending point field.
  -                addr_num % length(AddrDataList).
  +-record(cring, { % [#carc{}, ...], ordered ascending, or "clockwise".
  +                 ring_asc,
  +                 % [#carc{}, ...], ordered descending, or "counter-clouckwise".
  +                 ring_dsc,
  +                 % A tuple of {HashMod, HashCfg} passed to cring:create().
  +                 hash,
  +                 % length(AddrDataList) that was passed to cring:create().
  +                 addr_num
                  }).
   
   % A CArc is defines an arc in the consistent-hash-ring, in clockwise
  
positive.code: ring_entry_test() ->
      (fun () ->
        C = create([{a, 1}, {b, 2}], ?MODULE, 1),
        ?assertEqual(2, length(C#cring.ring)),
        ?assertEqual(2, C#cring.addr_num),
        H = hd(C#cring.ring),
        [Ha] = hash_addr(a, 1),
        [Hb] = hash_addr(b, 1),
        case Ha < Hb of
  
negative.code:        {n30, {20, 25}, n25}],
        [{n15, undefined},
         {n25, undefined}]),
      delta_check(
        [10, 15, 20, 25, 30, 35],
        [10, 20, 30],
        [{n20, {10, 15}, n15},
         {n30, {20, 25}, n25},
         {n10, {30, 35}, n35}],
        [{n15, undefined},
         {n25, undefined},
         {n35, undefined}]),
      ok.
  
  delta_grow_replicas_test() ->
  