anchor.diff:  -define(SERVER, ?MODULE).
   
   %% API
  --export([start_link/0, register_task/6, register_task/5, register_task/1,
  +-export([start_link/1, register_task/6, register_task/5, register_task/1,
            unregister_task/1, gen_task_chain/1, get_task_def/1,
            shutdown/0, get_task_defs/0, get_task_opts/1]).
   
  
positive.code: -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
           terminate/2, code_change/3]).
  
  -record(state, {tasks}).
  
  %%====================================================================
  %% API
  %%====================================================================
  %%--------------------------------------------------------------------
  %% @spec start_link() -> {ok,Pid} | ignore | {error,Error}.
  %%
  %% @doc
  %% Starts the server
  %% @end
  %%--------------------------------------------------------------------
  start_link() ->
      gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
  
  %%--------------------------------------------------------------------
  %% @spec shutdown() -> ok
  %%
  %% @doc
  %%  Tell this server to shutdown.
  %% @end
  %%--------------------------------------------------------------------
  shutdown() ->
      gen_server:cast(?SERVER, shutdown).
  
  %%--------------------------------------------------------------------
  %% @spec register_task(TaskName::atom(), TaskImpl::atom(), Deps::list(), Callable::bool(), Desc::string()) -> ok
  %%
  %% @doc
  %%  Register a task with the task handler.
  %% @end
  %%--------------------------------------------------------------------
  register_task(TaskName, TaskImpl, Deps, Callable, Desc) when is_atom(TaskName), is_atom(TaskImpl) ->
      register_task(TaskName, TaskImpl, Deps, Callable, Desc, []).
  
  %%--------------------------------------------------------------------
  %% @spec register_task(TaskName::atom(), TaskImpl::atom(), Deps::list(), Callable::bool(),
  %%                     Desc::string(), Opt::string()) -> ok
  %%
  %% @doc
  %%  Register a task with the task handler.
  %% @end
  %%--------------------------------------------------------------------
  register_task(TaskName, TaskImpl, Deps, Callable, Desc, Opts)
  
negative.code: %%%---------------------------------------------------------------------------
  %%% @author Eric Merritt <cyberlync@gmail.com>
  %%% @doc
  %%%  This module manages tasks, task descriptions and task relationships.
  %%%
  %%%  @type tid() = term(). The ets id for the ets storage table for this gen_server.
  %%%  @type task_name() = atom(). The name of the task. The public global name of the system.
  %%%  @type task_impl() = atom() | function(). The implementation of the task. Either
  %%%    a module that implements the {@link eta_gen_task} behavior or a function that takes
  %%%    two args.
  %%%  @type deps() = [task_name()]. The list of dependent tasks for the task being described.
  %%%  @type desc() = string(). A string description of the task, used in help among other things.
  %%%  @type opts() = [{string(), string(), bool()}]. An option description, in the form of ewl_get_opts.
  %%% @end
  %%% @copyright (C) 2007, Erlware
  %%% Created : 18 Oct 2007 by Eric Merritt <cyberlync@gmail.com>
  