%%==============================================================================
%% Copyright 2010-2017 Adam Lindberg, 2010-2011 Erlang Solutions Ltd
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%==============================================================================

@author Adam Lindberg <eproxus@gmail.com>
@copyright 2010-2017 Adam Lindberg, 2010-2011 Erlang Solutions Ltd
@version 0.9.2
@title meck, a Mocking Library for Erlang

@doc

== About ==
meck is a mocking library for Erlang.
