anchor.diff:              ct:pal("*** Detected cover analysis, have to skip tests of private funs."),
               ok
       end,
  -    %% remained there anything to test?
  +    %% Was there even anything left to test?
       case [] =:= ExcludeExported orelse
           lists:any(fun(X) -> skipped =/= X end,
                     lists:flatten(ResList)) of
  
positive.code: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  -spec type_check_module(module(),
                          [{atom(), non_neg_integer()}], %% fun, arity
                          [{atom(), non_neg_integer()}], %% fun, arity
                         pos_integer()) -> ok.
  type_check_module(Module, ExcludeExported, ExcludePrivate, Count) ->
      ExpFuncs = Module:module_info(exports),
      ExcludeList = [{module_info, 0}, {module_info, 1}] ++ ExcludeExported,
  
      %% only excluded exported functions?
      ErrList = [ case lists:member(X, ExpFuncs) of
                      true -> true;
                      false ->
                          ct:pal("Excluded non exported function ~p:~p", [Module,X]),
                          false
                  end ||
                    X <- ExcludeList ],
      case lists:all(fun(X) -> X end, ErrList) of
          true -> ok;
          false -> throw(error)
      end,
  
      %% perform the actual tests
  
negative.code:     ct:pal("*** Private funs of ~p:~n~.0p", [Module, PrivateFuns]),
  
      %% only excluded existing functions?
      ErrList = [ {Module, X} || X <- ExcludePrivate,
                                 not lists:member(X, PrivateFuns) ],
      case ErrList of
          [] -> ok;
          [_|_] ->
              ct:pal("Excluded non-existing private functions: ~p~n", [ErrList]),
              throw(error)
      end,
  
      _ = type_check_module_funs(Module, PrivateFuns, ExcludePrivate, Count),
  