anchor.diff:  %% @doc Return the value as a list
   %% @end
   %%
  -as_atom(Value) when is_atom(Value) =:= true -> Value;
  -as_atom(Value) when is_binary(Value) =:= true -> list_to_atom(binary_to_list(Value));
  -as_atom(Value) when is_list(Value) =:= true -> list_to_atom(Value);
  +as_atom(Value) when is_atom(Value) -> Value;
  +as_atom(Value) when is_binary(Value) -> list_to_atom(binary_to_list(Value));
  +as_atom(Value) when is_list(Value) -> list_to_atom(Value);
   as_atom(Value) ->
     autocluster_log:error("Unexpected data type for atom value: ~p~n", [Value]),
     Value.
  
positive.code: -export([as_atom/1,
           as_integer/1,
           as_string/1,
           node_name/1,
           parse_port/1]).
  
  
negative.code: %% @doc Return the value as a list
  %% @end
  %%
  as_string([]) -> "";
  as_string(Value) when is_atom(Value) -> as_string(atom_to_list(Value));
  as_string(Value) when is_binary(Value) -> as_string(binary_to_list(Value));
  as_string(Value) when is_integer(Value) -> as_string(integer_to_list(Value));
  as_string(Value) when is_list(Value) -> lists:flatten(Value);
  as_string(Value) ->
    autocluster_log:error("Unexpected data type for list value: ~p~n", [Value]),
    Value.
  
  
  %%--------------------------------------------------------------------
  %% @doc Return the module to use for node discovery.
  %% @spec backend_module() -> module() | undefined
  %% @end
  %%--------------------------------------------------------------------
  -spec backend_module() -> module() | undefined.
  backend_module() ->
    backend_module(autocluster_config:get(backend)).
  
  %%--------------------------------------------------------------------
  %% @private
  %% @doc Return the module to use for node discovery.
  %% @spec backend_module(atom()) -> module() | undefined
  %% @end
  %%--------------------------------------------------------------------
  -spec backend_module(atom()) -> module() | undefined.
  backend_module(aws)          -> autocluster_aws;
  backend_module(consul)       -> autocluster_consul;
  backend_module(dns)          -> autocluster_dns;
  backend_module(etcd)         -> autocluster_etcd;
  backend_module(unconfigured) -> undefined.
  
  
  %%--------------------------------------------------------------------
  %% @doc Return the hostname for the current node (without the tuple)
  %% @spec node_hostname() -> string()
  %% @end
  %%--------------------------------------------------------------------
  -spec node_hostname() -> string().
  node_hostname() ->
    {ok, Hostname} = inet:gethostname(),
    Hostname.
  
  
  %% @spec node_name(mixed) -> atom()
  