anchor.diff:  %%
   %% == client_event/3 ==
   %% <pre>
  -%% Module:client_event( Client :: pid(), Event :: json(), Info() ) ->
  -%%     callback_return() ).
  -%%
  -%%     Client :: Process of the client connection.  New requests or events
  -%%         can be sent to the process directly.
  +%% Module:client_event( ClientInfo :: #client_info{}, Event :: json(), Info() ) ->
  +%%     callback_return().
  +%%
  +%%     ClientInfo :: the client connection's info record.  New requests or
  +%%         events can be sent to the process directly.
   %%     Event :: The payload for the event.
   %%     Info :: The internal state of the callbakc channel.
   %%         callback_return() can update this.
  
positive.code: %% 
  %% == client_request/4 ==
  %% <pre>
  %% Module:client_request( Client :: pid(), Id :: any(), Request :: json(),
  %%     Info :: any()) -> callback_return() ).
  %%
  %%     Client :: process of the client connection.  Responses and events
  %%         can be sent to this process directly.
  %%     Id :: An opaque data type used for sending a response.
  %%     Request :: The json request payload.
  
negative.code: %% -------------------------------------------------------------------
  
  %% @hidden
  handle_event({request, ClientInfo, Channel, Id, Request} = Msg, {Channel, Module, Info} = State) ->
  	Out = Module:client_request(ClientInfo, Id, Request, Info),
  	handle_return(Out, Msg, State);
  
  handle_event({response, ClientInfo, Channel, Id, Response} = Msg, {Channel, Module, Info} = State) ->
  	Out = Module:client_response(ClientInfo, Id, Response, Info),
  	handle_return(Out, Msg, State);
  
  handle_event({event, ClientInfo, Channel, Event} = Msg, {Channel, Module, Info} = State) ->
  	Out = Module:client_event(ClientInfo, Event, Info),
  	handle_return(Out, Msg, State);
  
  handle_event(_Msg, State) ->
  