anchor.diff:      {reply, {ok, WorkerPid}, State#state{worker_pids = NewChildren}};
   
   handle_call({checkin, WorkerPid}, _From, #state{num_of_children = NumOfChildren,
  -                                                worker_mod  = WorkerMod,
  +                                                num_overflow = NumOverflow,
                                                   worker_pids = Children} = State) ->
       case length(Children) >= NumOfChildren of
           true ->
  -            %% send stop
  -            %% actual stop process will happend at handle_info with DOWN
  -            WorkerMod:stop(WorkerPid);
  +            {reply, ok, State#state{num_overflow = NumOverflow + 1}};
           false ->
  -            void
  -    end,
  -    NewChildren = [WorkerPid|Children],
  -    {reply, ok, State#state{worker_pids = NewChildren}};
  +            NewChildren = [WorkerPid|Children],
  +            {reply, ok, State#state{worker_pids = NewChildren}}
  +    end;
   
   handle_call(status, _From, #state{num_of_children = NumOfChildren,
                                     max_overflow = MaxOverflow,
  
positive.code: 
  %% @doc gen_server callback - Module:handle_info(Info, State) -> Result
  %%
  handle_info({'DOWN', MonitorRef, _Type, Pid, _Info}, #state{worker_mod      = WorkerMod,
                                                              worker_args     = WorkerArgs,
                                                              num_of_children = NumOfChildren,
                                                              num_overflow    = NumOverflow,
                                                              worker_pids     = ChildPids} = State) ->
      true = erlang:demonitor(MonitorRef),
      ChildPids1 = lists:delete(Pid, ChildPids),
      case length(ChildPids1) >= NumOfChildren of
          false ->
              ChildPids2 = case start_child(WorkerMod, WorkerArgs) of
                               {ok, ChildPid} ->
                                   [ChildPid|ChildPids1];
                               _ ->
                                   ChildPids1
                           end,
              {noreply, State#state{worker_pids = ChildPids2}};
          true ->
              {noreply, State#state{worker_pids = ChildPids1, num_overflow = NumOverflow - 1}}
      end;
  
  handle_info(_Info, State) ->
      {noreply, State}.
  
negative.code: %% @doc gen_server callback - Module:handle_cast(Request, State) -> Result
  %%
  handle_cast({checkin_async, WorkerPid}, #state{num_of_children = NumOfChildren,
                                                 num_overflow = NumOverflow,
                                                 worker_pids = Children} = State) ->
      case length(Children) >= NumOfChildren of
          true ->
              {noreply, State#state{num_overflow = NumOverflow + 1}};
          false ->
              NewChildren = [WorkerPid|Children],
              {noreply, State#state{worker_pids = NewChildren}}
      end;
  
  handle_cast(_, State) ->
      {noreply, State}.
  