anchor.diff:  			case Message#mqtt_publish.qos of
   				at_most_once ->
   					Client ! Message,
  -					case State#?MODULE.alert of
  -						true -> {noreply, State, hibernate};
  -						false -> {noreply, State}
  -					end;
  +					noreply(State);
   				_ ->
   					MessageId = (State#?MODULE.message_id rem 16#ffff) + 1,
   					NewMessage= Message#mqtt_publish{message_id=MessageId},
  
positive.code: 	link(Client),
  	% Now flush buffer.
  	lists:foreach(fun(Fubar) -> gen_server:cast(self(), Fubar) end, lists:reverse(Buffer)),
  	NewState = State#?MODULE{client=Client, will=Will, buffer=[]},
  	case State#?MODULE.alert of
  		true -> {reply, ok, NewState, hibernate};
  		false -> {reply, ok, NewState}
  	end;
  handle_call({bind, Will}, {Client, _}, State=#?MODULE{client=OldClient, buffer=Buffer}) ->
  	fubar_log:log(debug, ?MODULE, [State#?MODULE.name, "linking", Client, "and killing", OldClient]),
  	catch unlink(OldClient),
  
negative.code: 			State#?MODULE.client ! #mqtt_pubrec{message_id=MessageId},
  			Worker = proc_lib:spawn_link(?MODULE, transaction_loop, [ClientId, Info, Timeout, Trace]),
  			Complete = #mqtt_pubcomp{message_id=MessageId},
  			noreply(State#?MODULE{transactions=[{MessageId, Worker, Complete} | Transactions]});
  		at_least_once ->
  			% Start 1-way handshake transaction.
  			Worker = proc_lib:spawn_link(?MODULE, transaction_loop, [ClientId, Info, Timeout, Trace]),
  			Worker ! release,
  			State#?MODULE.client ! #mqtt_puback{message_id=MessageId},
  			noreply(State#?MODULE{transactions=[{MessageId, Worker, undefined} | Transactions]});
  		_ ->
  			catch do_transaction(ClientId, Info, Trace),
  			noreply(State)
  	end;
  handle_info(#mqtt_puback{message_id=MessageId}, State=#?MODULE{name=ClientId}) ->
  	% The message id is supposed to be in the retry pool.
  