anchor.diff:  %% ------------------------------------------------------------------
   
   start_link() ->
  -    gen_server:start_link(?MODULE, [], []).
  +    start_link(true, stdout).
   
  -get(Context) ->
  -    gen_server:call(Context, output).
  +start_link(Flush) ->
  +    start_link(Flush, stdout).
   
  -set(Context, Text) ->
  -    gen_server:cast(Context, {output, Text}).
  +start_link(Flush, FlushHandler) ->
  +    gen_server:start_link(?MODULE, [Flush, FlushHandler], []).
  +
  +get(Output) ->
  +    gen_server:call(Output, output).
  +
  +set(Output, Text) ->
  +    gen_server:cast(Output, {output, Text}).
  +
  +destroy(Output) ->
  +    gen_server:cast(Output, stop).
   
   %% ------------------------------------------------------------------
   %% gen_server Function Definitions
   %% ------------------------------------------------------------------
   
  -init([]) ->
  -    {ok, #state{}}.
  +init([Flush, FlushHandler]) ->
  +    {ok, #state{
  +        flush = Flush,
  +        flush_handler = FlushHandler
  +    }}.
   
   handle_call(output, _From, #state{output=Output}=State) ->
       {reply, Output, State#state{output = <<>>}};
  
positive.code: handle_info(_Info, State) ->
      {noreply, State}.
  
  
  terminate(_Reason, _State) ->
      ok.
  
negative.code: %% ------------------------------------------------------------------
  %% Internal Function Definitions
  %% ------------------------------------------------------------------
  
  flush_handler(Text, stdout) ->
      io:fwrite("~s", [Text]),
      ok;
  
  flush_handler(Text, {io, FH}) ->
      io:fwrite(FH, "~s", [Text]),
      ok;
  
  flush_handler(Text, FH) when is_function(FH) ->
      FH(Text),
      ok.
  