anchor.diff:  handle_info(_, State) ->
       {ok, State}.
   
  -handle_call(filename, {Fd, File, Prev}) ->
  -    {ok, File, {Fd, File, Prev}};
  +handle_call(filename, #st{filename=File}=State) ->
  +    {ok, File, State};
   handle_call(_Query, State) ->
       {ok, {error, bad_query}, State}.
   
  
positive.code:     process_flag(trap_exit, true),
      case file:open(File, [write]) of
  	{ok,Fd} ->
  	    {ok, {Fd, File, PrevHandler}};
  	Error ->
  	    Error
      end.
      
  handle_event({_Type, GL, _Msg}, State) when node(GL) =/= node() ->
      {ok, State};
  handle_event(Event, {Fd, File, PrevHandler}) ->
      write_event(Fd, tag_event(Event)),
      {ok, {Fd, File, PrevHandler}};
  handle_event(_, State) ->
      {ok, State}.
  
  handle_info({'EXIT', Fd, _Reason}, {Fd, _File, PrevHandler}) ->
      case PrevHandler of
  	[] ->
  	    remove_handler;
  
negative.code: 	 handle_event/2, handle_call/2, handle_info/2,
  	 terminate/2, code_change/3]).
  
  -record(st,
  	{fd,
  	 filename,
  	 prev_handler}).
  
  %% This one is used when we takeover from the simple error_logger.
  init({File, {error_logger, Buf}}) ->
      case init(File, error_logger) of
  	{ok, State} ->
  	    write_events(State, Buf),
  	    {ok, State};
  	Error ->
  	    Error
      end;
  