anchor.diff:      gen_server:start_link({local, ?MODULE}, ?MODULE, DriverMod, []).
   
   msgs([Adr | Msgs]) ->
  -    do_msgs(Adr, Msgs).
  +    EncodedMsgs = do_msgs(Adr, Msgs),
  +    gen_server:call(?MODULE, {msgs, EncodedMsgs}).
  +
   
   %--- Callbacks -----------------------------------------------------------------
   
  
positive.code:     {ok, #state{driver = {DriverMod, Ref}}}.
  
  % @private
  handle_call({msgs, Enc_msgs}, _From, State) ->
      {DriverMod, Ref} = State#state.driver,
      Resp = DriverMod:command(Ref, Enc_msgs),
      {reply, Resp, State}.
  
  % @private
  handle_cast(Request, _State) -> error({unknown_cast, Request}).
  
negative.code: %--- Internal ------------------------------------------------------------------
  
  do_msgs(Adr, Msgs) ->
      do_msgs(Adr, Msgs, [], []).
  
  do_msgs(_Adr, [], [], ReversedEncodedMsgs) ->
      lists:reverse(ReversedEncodedMsgs);
  do_msgs(Adr, [], ReversedToEncode, ReversedEncodedMsgs) ->
      ToEncode = lists:reverse(ReversedToEncode),
      EncodedMsgs = encode_msgs([Adr | ToEncode]),
      NewReversedEncodedMsgs = [EncodedMsgs | ReversedEncodedMsgs],
      do_msgs(Adr, [], [], NewReversedEncodedMsgs);
  do_msgs(Adr, [{sleep, Time} | Rest], ReversedToEncode, ReversedEncodedMsgs) ->
      ToEncode = lists:reverse(ReversedToEncode),
      EncodedMsgs = encode_msgs([Adr | ToEncode]),
      NewReversedEncodedMsgs = [EncodedMsgs | ReversedEncodedMsgs],
      NewReversedEncodedMsgsWithSleep = [{sleep, Time} | NewReversedEncodedMsgs],
      do_msgs(Adr, Rest, [], NewReversedEncodedMsgsWithSleep);
  do_msgs(Adr, [Msg | Rest], ReversedToEncode, ReversedEncodedMsgs) ->
      NewReversedToEncode = [Msg | ReversedToEncode],
      do_msgs(Adr, Rest, NewReversedToEncode, ReversedEncodedMsgs).
  
  encode_msgs(Msgs) ->
      encode_msgs(Msgs, undefined, <<>>, <<>>).
  