anchor.diff:        ClauseSpec :: {ArgPatterns, RetSpec},
         ArgPatterns :: [term() | '_'],
         RetSpec :: term() | ret_spec().
  -expect(Mod, Func, StubFun) when is_atom(Mod),
  -                                is_atom(Func),
  -                                is_function(StubFun) ->
  +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) ->
  +expect(Mod, Func, ClauseSpecs)
  +  when is_atom(Mod), is_atom(Func), is_list(ClauseSpecs) ->
       {Arity, Clauses} = parse_clause_specs(Mod, Func, ClauseSpecs),
       call(Mod, {expect, {Func, Arity}, Clauses});
   expect(Mod, Func, Expect) when is_list(Mod) ->
  
positive.code: -export([reset/1]).
  
  %% Syntactic sugar
  -export([loop/1,
           seq/1,
           val/1]).
  
  %% Callback exports
  -export([init/1]).
  
negative.code: 
  %% @hidden
  handle_call({get_expect, FuncAri, Args}, _From, S) ->
      {Expect, NewExpects} = get_expect(S#state.expects, S#state.mod, FuncAri,
                                        Args),
      {reply, Expect, S#state{expects = NewExpects}};
  handle_call({expect, FuncAri, Clauses}, _From, S) ->
      NewExpects = store_expect(S#state.mod, FuncAri,
  