anchor.diff:      end.
   
   -spec ring_get({list(), list()}) -> {any(), {list(), list()}}.
  +ring_get({[], []})        -> {'$dead_code', {[], []}};
   ring_get({[E], []} = Q)   -> {E, Q};
  -ring_get({[], [ E | R ]}) -> {E, {R, [E]}};
  -ring_get({[ E | R ], L})  -> {E, {R, [E|L]}};
  -ring_get({[], []})        -> {'$dead_code', {[], []}}.
  +ring_get({[], L}) -> ring_get({lists:reverse(L), []});
  +ring_get({[ E | R ], L})  -> {E, {R, [E|L]}}.
   
   -spec ring_new(list()) -> {list(), list()}.
   ring_new(L) -> {L, []}.
  
positive.code: % @copyright 2007-2012 Zuse Institute Berlin,
  
  %   Licensed under the Apache License, Version 2.0 (the "License");
  %   you may not use this file except in compliance with the License.
  
negative.code:                 failed ->
                      %% search others
                      case ets:match(?MODULE, {{'_', PidName}, '$1'}) of
                          [[TPid] | _] = Pids ->
                              %% fill process local cache
  
                              %% This should only happen for client
                              %% processes not registered in a pid_group (failed)
                              %% io:format("Ring is created to find a ~p in ~p ~p~n",
                              %% [PidName, self(), pid_groups:group_and_name_of(self())]),
                              Ring = ring_new(lists:flatten(Pids)),
                              {Pid, NewPids} = ring_get(Ring),
                              erlang:put(CachedName, NewPids),
                              Pid;
                          [] ->
                              io:format("***No pid registered for ~p~n",
  