   args: (args...) ->
     _check_args_usage(@, args...)
     _set_args_for_current_signature(@, args)
-    _check_for_duplicate_signatures(@)
+    _check_for_duplicate_signatures(@)                          # check after setting args as args are part of the signature
     _set_state(@, "args")
     @
 

  #
  throws: (error) ->
    _check_throws_usage(@, error)
    _check_for_duplicate_signatures(@)
    _set_throws_for_current_signature(@, error)
    _set_state(@, "throws")
    @

  #
  returns: (value) ->
    _check_returns_usage(@, value)
    _check_for_duplicate_signatures(@)                          # args() may not be used so need to check for dups here as well
    _set_return_for_current_signature(@, value)
    _set_state(@, "returns")
    @
