anchor.diff:         restart_first]},
        {three_nodes, [sequence],
         [start_first_node,
  +       test_subscription,
          mine_on_first,
          start_second_node,
          start_third_node,
  
positive.code:             end;
          {From, Ref, {unsubscribe, Event}} ->
              From ! {Ref, ok},
              Res = (catch aec_events:unsubscribe(Event)),
              error_logger:info_report([{?MODULE, proxy_unsubscribe},
                                        {event, Event},
                                        {result, Res}]),
              proxy_loop([S || S <- Subs,
                               S =/= {From, Event}], Events);
          {From, Ref, {events, E, Since}} ->
  
negative.code: 
  tell_subscribers(Subs, Event, Msg) ->
      lists:foreach(
        fun({P, E}) when E =:= Event, is_pid(P) ->
                P ! Msg;
           (_) ->
                ok
        end, Subs).
  
  set_subscriptions() ->
      Es = events(),
      [aec_events:subscribe(E) || E <- Es],
      Es.
  
  ensure_markers(Es, Subs) ->
      lists:foldl(
        fun(E, Acc) ->
                case lists:member({marker, E}, Acc) of
                    true ->
                        Acc;
                    false ->
                        [{marker, E}|Acc]
                end
        end, Subs, Es).
  
  events() -> [block_created, chain_sync].
  
  