anchor.diff:  assign_task(Task, NodeStats, Tasks, Nodes) ->
       findpref(Task, NodeStats, Tasks, Nodes -- Task#task.taskblack).
   
  +-spec assign_nopref(task(), gb_tree(), [node()]) -> gb_tree().
  +
   assign_nopref(Task, _Tasks, []) ->
       event_server:event(get(jobname),
           "ERROR: ~s:~B Task failed on all available nodes "
  
positive.code:     end, gb_trees:insert(nopref, {0, 0, []}, NTasks),
          lists:flatten([L || {_, _, L} <- gb_trees:values(OTasks)])).
  
  
  get_default(Key, Tree, Default) ->
      case gb_trees:lookup(Key, Tree) of
          none -> Default;
  
negative.code:             {{run, Node, Task}, gb_trees:update(Node, {N - 1, C, R}, Tasks)}
      end.
  
  -spec pop_and_switch_node(gb_tree(), [node()], [node()]) ->
      {'nonodes', gb_tree()} | {{'run', node(), task()}, gb_tree()}.
  pop_and_switch_node(Tasks, _, []) -> {nonodes, Tasks};
  pop_and_switch_node(Tasks, Nodes, AvailableNodes) ->
      case pop_busiest_node(Tasks, Nodes) of
  