anchor.diff:  	when
   		Identity :: string() | binary(),
   		Password :: string() | binary(),
  -		Product :: string(),
  +		Product :: string() | undefined,
   		Result :: {ok, #subscriber{}} | {error, Reason},
   		Reason :: term().
   %% @equiv add_subscriber(Identity, Password, Product, [], [], [], true, false)
  
positive.code: 		when is_binary(Password), is_list(Product), Product /= [], is_list(Buckets), is_list(Attributes),
  		is_boolean(EnabledStatus), is_boolean(MultiSession) ->
  	F2 = fun() ->
  				case mnesia:read(product, Product, read) of
  					[#product{start_date = SD, end_date = TD, status = Status }] ->
  						F1 = fun(_, _, 0) ->
  									mnesia:abort(retries);
  
negative.code: 	when 
  		Identity :: string() | binary(),
  		Password :: string() | binary(),
  		Product :: string() | undefined,
  		Characteristics :: [tuple()],
  		Buckets :: [#bucket{}],
  		Result :: {ok, #subscriber{}} | {error, Reason},
  