anchor.diff:  
   mock_exception_fun(Class, Reason) -> fun() -> {exception, Class, Reason} end.
   
  -call_expect(_Mod, _Func, {value, Return}, _Args) ->
  -    Return;
  -call_expect(_Mod, _Func, {func, Fun}, Args) when is_function(Fun) ->
  +call_expect(_Mod, _Func, meck_undefined, _Args) ->
  +    erlang:error(function_clause);
  +call_expect(_Mod, _Func, {meck_value, Value}, _Args) ->
  +    Value;
  +call_expect(_Mod, _Func, {meck_func, Fun}, Args) when is_function(Fun) ->
       apply(Fun, Args);
   call_expect(Mod, Func, passthrough, Args) ->
  -    apply(original_name(Mod), Func, Args).
  +    apply(original_name(Mod), Func, Args);
  +call_expect(_Mod, _Func, Value, _Args) ->
  +    Value.
   
   inject(_Mod, _Func, _Args, []) ->
       [];
  
positive.code:       Func :: atom(),
        Expect :: StubFun | [ClauseSpec],
        StubFun :: fun(),
        ClauseSpec :: {ArgsPattern, RetSpec},
        ArgsPattern :: [term() | '_'],
        RetSpec :: term() | ret_spec().
  expect(Mod, Func, StubFun)
    when is_atom(Mod), is_atom(Func), is_function(StubFun) ->
      {arity, Arity} = erlang:fun_info(StubFun, arity),
      Clause = {arity_2_matcher(Arity), {func, StubFun}},
      call(Mod, {expect, {Func, Arity}, [Clause]});
  expect(Mod, Func, ClauseSpecs)
    when is_atom(Mod), is_atom(Func), is_list(ClauseSpecs) ->
  
negative.code:     NewExpects.
  
  
  update_clause(Expects, FuncAri, ArgsMatcher, RetSpec) ->
      dict:update(FuncAri,
                  fun(Clauses) ->
                          lists:keyreplace(ArgsMatcher, 1, Clauses,
                                           {ArgsMatcher, RetSpec})
                  end,
                  Expects).
  
  
  find_match(Args, [{ArgsMatcher, RetSpec} | Rest]) ->
      case ArgsMatcher of
          {pattern, _ArgsPattern, MatchSpec} ->
              case ets:match_spec_run([Args], MatchSpec) of
                  [] ->
                      find_match(Args, Rest);
                  _ ->
                      {ArgsMatcher, RetSpec}
              end;
          {hamcrest, _Matchers} ->
              throw(unimplemented) % TODO Hamcrest support is comming
  