anchor.diff:  	[{SrcPool, SrcNbConns - 1}, {DestPool, DestNbConns}|Pools2].
   
   %% @private
  --spec remove_pid(pid(), pools(), ets:tid(), [{pid(), reference()}])
  -	-> {pools(), [{pid(), reference()}]}.
  +-spec remove_pid(pid(), pools(), ets:tid(), queue()) -> {pools(), queue()}.
   remove_pid(Pid, Pools, ReqsTable, Queue) ->
   	{MonitorRef, Pool} = ets:lookup_element(ReqsTable, Pid, 2),
   	erlang:demonitor(MonitorRef, [flush]),
   	{Pool, NbConns} = lists:keyfind(Pool, 1, Pools),
   	Pools2 = [{Pool, NbConns - 1}|lists:keydelete(Pool, 1, Pools)],
   	ets:delete(ReqsTable, Pid),
  -	case Queue of
  -		[] ->
  +	case queue:len(Queue) of
  +		0 ->
   			{Pools2, Queue};
  -		[Client|Queue2] ->
  +		_ ->
  +			{{value, Client}, Queue2} = queue:out(Queue),
   			gen_server:reply(Client, ok),
   			{Pools2, Queue2}
   	end.
  
positive.code: -spec init(list()) -> {ok, #state{}}.
  init([MaxConns, ProtoOpts]) ->
  	ReqsTable = ets:new(requests_table, [set, private]),
  	{ok, #state{reqs_table=ReqsTable, max_conns=MaxConns,
  		proto_opts=ProtoOpts}}.
  
  %% @private
  -spec handle_call(_, _, State)
  
negative.code: 	if	AccOptsVsn =/= LisOptsVsn ->
  			{reply, {ugprade, ProtoOpts, LisOptsVsn}, State2};
  		NbConns > MaxConns ->
  			Queue2 = queue:in(From, Queue),
  			{noreply, State2#state{queue=Queue2}};
  		true ->
  			{reply, ok, State2}
  	end;
  