anchor.diff:            put({ Type, Id }, Pid),
             From ! Pid;
           Pid ->
  -          Pid ! { touch },
  -          From ! Pid
  +          case erlang:is_process_alive(Pid) of
  +            true ->
  +              Pid ! { touch },
  +              From ! Pid;
  +            false ->
  +              NewPid = spawn(fun() -> file_loop(self(), Dir, Type, Id) end),
  +              put({ Type, Id }, NewPid),
  +              From ! NewPid
  +          end
         end,
  -      file_registry_loop(Dir);
  -
  -    { delf, Type, Id } ->
  -      erase({ Type, Id }),
         file_registry_loop(Dir);
   
       shutdown ->
  
positive.code: %
  % playing the role of a lock
  %
  file_loop(Registry, Dir, Type, Id) ->
  
    { TypePath, DocPath } = get_path(Dir, Type, Id),
  
    receive
  
      { touch } ->
        file_loop(Registry, Dir, Type, Id);
  
      { From, do_get } ->
        { _, _, _, Doc } = get_file(DocPath),
        From ! Doc,
        file_loop(Registry, Dir, Type, Id);
  
      { From, do_put, Doc, Rev } ->
        { _, _, CurrentRev, CurrentDoc } = get_file(DocPath),
  
negative.code:         true ->
            From ! CurrentDoc
        end,
        file_loop(Cloche, Dir, Type, Id);
  
      { From, do_delete, Rev } ->
        R = file:delete(DocPath),
        From ! R,
        file_loop(Cloche, Dir, Type, Id)
  
    after 2000 ->
      over
    end.
  
  %
  