anchor.diff:  		length(Password) rem 16 == 0 ->
   	hide(SharedSecret, Authenticator, Password, []).
   
  --spec unhide(SharedSecret :: string() | binary(),
  +-spec unhide(SharedSecret, Authenticator, UserPassword) -> Password
  +	when
  +		SharedSecret :: string() | binary(),
   		Authenticator :: [byte()] | binary(),
  -		UserPassword :: string() | binary()) ->
  -	Password :: string().
  +		UserPassword :: string() | binary(),
  +		Password :: string().
   %% @doc Return the password hidden in the User-Password attribute.
   %%
   unhide(SharedSecret, Authenticator, UserPassword)
  
positive.code: 		when is_integer(Attribute), is_list(Attributes) ->
  	lists:keystore(Attribute, 1, Attributes, {Attribute, Value}).
  
  -spec store(Vendor :: byte(), Attribute :: byte(), Value :: term(),
  	Attributes :: attributes()) -> NewAttributes :: attributes().
  %% @doc Add a new vendor specific attribute to a RADIUS protocol
  %% attributes list.
  %% 	If `Attribute' exists it is overwritten with the new `Value'.
  
negative.code: 		length(UserPassword) rem 16 == 0 ->
  	unhide(SharedSecret, Authenticator, UserPassword, []).
  
  -spec error_cause(ErrorCause) -> Result
  	when
  		ErrorCause :: byte(),
  		Result :: string().
  %% @doc Given the value of an `Error-Cause' attribute returns a
  %% 	description in English.
  error_cause(201) ->
  