anchor.diff:  
   %% @spec new(Mod:: atom() | list(atom())) -> ok
   %% @equiv new(Mod, [])
  --spec new(Mod:: atom() | list(atom())) -> ok.
  +-spec new(Mod:: atom() | [atom()]) -> ok.
   new(Mod) when is_atom(Mod) -> new(Mod, []);
   new(Mod) when is_list(Mod) -> [new(M) || M <- Mod], ok.
   
  
positive.code: %% and always returns `Result'.
  %%
  %% @see expect/3.
  -spec expect(Mod:: atom() | list(atom()), Func::atom(),
               Arity::pos_integer(), Result::term()) -> ok.
  expect(Mod, Func, Arity, Result)
    when is_atom(Mod), is_atom(Func), is_integer(Arity), Arity >= 0 ->
  
negative.code: %% Types
  %% @type meck_mfa() = {Mod::atom(), Func::atom(), Args::list(term())}.
  %% Module, function and arguments that the mock module got called with.
  -type meck_mfa() :: {Mod::atom(), Func::atom(), Args::[term()]}.
  
  %% @type history() = [{meck_mfa(), Result::term()}
  %%                     | {meck_mfa(), Class:: exit | error | throw,
  