   expects: (method_name) ->
     @_check_expects_usage(method_name)
     @signatures.unshift( new MethodSignature(method_name) )     # .unshift pushes to front of array
-    @[ method_name ] ?= @_define_expected_method(method_name)
+    @[ method_name ] ?= @_build_mocked_method(method_name)
     @_set_state("expects")
     @
     

mock = (fn) ->
  mocks = ( new Mock() for i in [1..5] )
  fn.apply(undefined, mocks)
  errors = ( mock._errors() for mock in mocks ).join("")
  throw errors unless errors == ""



      return signature
    undefined
  
  _build_mocked_method: (method_name) ->
    (args...) ->
      signature = @_find_signature(method_name, args...)
      @_throw_unknown_expectation("#{method_name}(#{args})") unless signature?
      signature.called = true
      signature.returns
  
  _build_errors: ->
    errors = ""
    for signature in @signatures when signature.called == false
      errors += "'#{signature.method_name}(#{signature.args})' was never called\n" 
    errors
  
  _set_state: (state) ->
    @state = state
    
  _is_state_in: (states...) ->
    @state in states
  
  _is_reserved_word: (word) ->
    word in [ "expects", "args", "returns", "check" ]
  
  _check_expects_usage: (method_name) ->
    @_throw_expects_usage() unless method_name?
    @_throw_reserved_word(method_name) if @_is_reserved_word(method_name)
  
  _check_args_usage: (args...) ->
    @_throw_args_must_be_after_expects() unless @_is_state_in("expects")
