anchor.diff:  -include("internal.hrl").
   
   %% -- public --
  --export([start_link/1, start_link/2, stop/1]).
  --export([call/2, cast/2]).
  +-export([start_link/1, start_link/2]).
  +-export([call/2]).
   
   %% -- behaviour: gen_server --
   -behaviour(gen_server).
  
positive.code:            true -> throw({badarg,K})
          end,
      [T|List];
  validate({max_allowed_packet=K,Value}, List) -> % integer()
      T = if is_integer(Value)                 -> {K, Value};
             true -> throw({badarg,K})
          end,
      [T|List];
  validate({timeout=K,Value}, List) -> % integer()
      T = if is_integer(Value)                 -> {K, Value};
             true -> throw({badarg,K})
          end,
      [T|List];
  
negative.code:          handle_call/3, handle_cast/2, handle_info/2]).
  
  %% -- private --
  -record(state, {
            args :: [property()],
            handle :: tuple()
           }).
  
  -define(SOCKET(Handle), element(2,Handle)).     % !CAUTION!
  
  %% == public ==
  
  -spec start_link([property()]) -> {ok,pid()}|ignore|{error,_}.
  start_link(Args) ->
      start_link(Args, false).
  
  -spec start_link([property()],boolean()) -> {ok,pid()}|ignore|{error,_}.
  start_link(Args, false)
  