anchor.diff:  %% ------------------------------------------------------------------
   %% 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.
  
positive.code: 
  -export([
      start_link/0,
      get/1,
      set/2
  ]).
  
  %% ------------------------------------------------------------------
  
negative.code: %% ------------------------------------------------------------------
  
  start_link() ->
      start_link(true, stdout).
  
  start_link(Flush) ->
      start_link(Flush, stdout).
  
  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([Flush, FlushHandler]) ->
      {ok, #state{
          flush = Flush,
          flush_handler = FlushHandler
      }}.
  
  handle_call(output, _From, #state{output=Output}=State) ->
      {reply, Output, State#state{output = <<>>}};
  