anchor.diff:      end;
   start_link(Args, true)
     when is_list(Args) ->
  -    case gen_server:start_link(?MODULE, [], []) of
  -        {ok, Pid} ->
  -            case gen_server:call(Pid, {setup,Args}, infinity) of
  -                ok ->
  -                    {ok, Pid};
  -                {error, Reason} ->
  -                    stop(Pid),
  -                    {error, Reason}
  -            end;
  -        Other ->
  -            Other
  -    end.
  -
  --spec stop(pid()) -> ok.
  -stop(Pid)
  -  when is_pid(Pid) ->
  -    gen_server:cast(Pid, stop).
  +    gen_server:start_link(?MODULE, Args, []).
  +
   
   -spec call(pid(),term()) -> term().
   call(Pid, Command)
     when is_pid(Pid) ->
       gen_server:call(Pid, Command).
   
  --spec cast(pid(),term()) -> ok.
  -cast(Pid, Command)
  -  when is_pid(Pid) ->
  -    gen_server:cast(Pid, Command).
  -
   %% == behaviour: gen_server ==
   
   init(Args) ->
  
positive.code: code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
  handle_call({setup,Args}, _From, #state{}=S) ->
      case setup(Args, S) of
          {ok, State} ->
              {reply, ok, State};
          {error, Reason, State} ->
              {reply, {error,Reason}, State}
      end;
  handle_call({Func,Args}, _From, #state{handle=H}=S)
    when is_atom(Func), is_list(Args)->
      case apply(myer_protocol, Func, [H|Args]) of
          {ok, Handle} ->
              {reply, ok, S#state{handle = Handle}};
  
negative.code:            true -> throw({badarg,K})
          end,
      [T|List];
  validate({max_allowed_packet=K,Value}, List) -> % non_neg_integer()
      T = if is_integer(Value), 0 =< Value      -> {K, Value};
             true -> throw({badarg,K})
          end,
      [T|List];
  validate({timeout=K,Value}, List) -> % timeout()
      T = if is_integer(Value), 0=< Value      -> {K, Value};
             infinity =:= Value                -> {K, Value};
             true -> throw({badarg,K})
          end,
      [T|List];
  