anchor.diff:  %% Public functions
   %%====================================================================
   
  +-spec init(InitArgs) -> Result when
  +	InitArgs :: Args | {Args, Term :: term()},
  +	Args :: term(),
  +	Result :: {ok, State}
  +			| {ok, State, hibernate}
  +			| {error, Reason :: term()},
  +	State :: term().
   init({player, BcPlayer}) ->
   	{ok, #state{player = BcPlayer}}.
   
  +-spec handle_event(Event :: term(), State :: term()) -> Result when
  +	Result :: {ok, NewState}
  +			| {ok, NewState, hibernate}
  +			| {swap_handlers, Args1, NewState, Handler2, Args2}
  +			| remove_handler,
  +	NewState :: term(), Args1 :: term(), Args2 :: term(),
  +	Handler2 :: Module2 | {Module2, Id :: term()},
  +	Module2 :: atom().
   handle_event({game_started, BcPlayers}, 
   			 #state{player = BcPlayer} = State) ->
   	PlayerPid = bc_player:pid(BcPlayer),
  
positive.code: 				  game_event => #{event_type => game_error,
  							 	  reason => Reason}},
  	{ok, State};
  handle_event({PlayerEventType, BcPlayer}, 
  			 #state{player = BcPlayer} = State) ->
  	PlayerPid = bc_player:pid(BcPlayer),
  	PlayerPid ! #{type => game_event,
  				  game_event => #{event_type => PlayerEventType,
  							 	  player => bc_player:serialize(BcPlayer)}},
  	{ok, State}.
  
negative.code: -module(bc_game_event).
  -behavior(gen_event).
  
  -export([init/1, 
  		 handle_event/2, 
  		 handle_call/2, 
  		 handle_info/2, 
  		 terminate/2, 
  		 code_change/3]).
  
  %% internal state
  -record(state, {player}).
  