anchor.diff:  	    cleanup_timer(Timer);
   	{timerstopped, Timer} ->
   	    nil
  +    end.
  +
  +schedulers_on_node(Node) ->
  +    case get(plists_schedulers_on_nodes) of
  +	undefined ->
  +	    X = determine_schedulers(Node),
  +	    put(plists_schedulers_on_nodes,
  +		dict:store(Node, X, dict:new())),
  +	    X;
  +	Dict ->
  +	    case dict:is_key(Node, Dict) of
  +		true ->
  +		    dict:fetch(Node, Dict);
  +		false ->
  +		    X = determine_schedulers(Node),
  +		    put(plists_schedulers_on_nodes,
  +			dict:store(Node, X, Dict)),
  +		    X
  +	    end
  +    end.
  +
  +determine_schedulers(Node) ->
  +    Parent = self(),
  +    Child = spawn(fun () ->
  +		  Parent ! {self(), erlang:system_info(schedulers)}
  +	  end),
  +    erlang:monitor(process, Child),
  +    receive
  +	{Child, X} ->
  +	    receive
  +		{'DOWN', _, _, Child, _Reason} ->
  +		    nil
  +	    end,
  +	    X;
  +	{'DOWN', _, _, Child, Reason} when Reason =/= normal ->
  +	    0
       end.
   
   % local runmany, for when we weren't invoked with {processes, X}
  
positive.code: %
  % % split the list into two sublists and process in two processes<br/>
  % {processes, 2}
  %
  % % split the list into 10-element sublists and process in two processes<br/>
  % [10, {processes, 2}]
  
negative.code: 				  end
  			  end
  		  end),
      Ans = try runmany(Fun, Fuse, List, Nodes, Split, Malt)
  	  catch
  	      % we really just want the after block, the syntax
  	      % makes this catch necessary.
  