anchor.diff:  %% @end
   %%------------------------------------------------------------------------------
   -spec create_node(Credentials        :: credentials(),
  -                      NodeName           :: string() | binary(),
  -                      SizeId             :: string() | binary(),
  -                      ImageId            :: string() | binary(),
  -                      KeyName            :: string() | binary(),
  -                      SecurityGroupNames :: [string() | binary()]) ->
  +                  NodeName           :: string() | binary(),
  +                  SizeId             :: string() | binary(),
  +                  ImageId            :: string() | binary(),
  +                  KeyName            :: string() | binary(),
  +                  SecurityGroupNames :: [string() | binary()]) ->
             elibcloud_func_result(no_such_size |
                                   no_such_image |
                                   no_such_key |
                                   no_such_group).
  -create_node({Provider, UserName, Password}, NodeName, SizeId, ImageId,
  -                KeyName, SecurityGroupNames) ->
  +create_node({Provider, UserName, Password}, NodeName, SizeId, ImageId, KeyName,
  +            SecurityGroupNames) ->
   
       lager:debug("Create node (NodeName=~p)", [NodeName]),
       JsonInput = [{<<"action">>,             <<"create_node">>},
  
positive.code: -type elibcloud_func_result(ErrorAtoms) ::
            {'ok', json_term()} |
            {error, {ErrorAtom :: ErrorAtoms,
                     Details :: json_term()}} |
            {'error', string()}.
  
  -type security_rule() :: {FromPort :: integer(),
                            ToPort :: integer(),
                            Port :: tcp | udp | icmp}.
  
  %% Supported provider: "EC2".
  -type credentials() :: {Provider   :: string() | binary(),
                          UserName   :: string() | binary(),
                          Password   :: string() | binary()}.
  
  -export_type([credentials/0]).
  
  
negative.code:           elibcloud_func_result(no_predefined_error).
  list_nodes({Provider, UserName, Password}) ->
  
      JsonInput = [{<<"action">>,   <<"list_nodes">>},
                   {<<"provider">>, bin(Provider)},
                   {<<"userName">>, bin(UserName)},
                   {<<"password">>, bin(Password)}],
  
      case libcloud_wrapper(JsonInput) of
          {ok, JsonRes} ->
  