anchor.diff:      TaskList = gb_trees:to_list(GroupMap),
       send_outputs_to_consumers(S, TaskList, ModifiedGroups).
   
  +-spec send_outputs_to_consumers(state(), [task_id()], [grouped_output()]) -> state().
   send_outputs_to_consumers(S, _, []) ->
       S;
   
  
positive.code:             TaskSpec#task_spec{all_inputs = true}
          end).
  
  send_outputs_to_consumer(S, TaskId, {_, Inputs}) ->
      #state{tasks = Tasks} = S1 = add_inputs_to_spec(S, TaskId, Inputs),
      TaskInfo = jc_utils:task_info(TaskId, Tasks),
  
negative.code:         TaskInfo#task_info{spec=Fun(TaskSpec)}, Tasks),
      S#state{tasks = Tasks1}.
  
  -spec add_inputs_to_spec(state(), task_id(), [{input_id(), data_input()}]) -> state().
  add_inputs_to_spec(S, TaskId, NewInputs) ->
      InputIds = [Id|| {Id,_} <- NewInputs],
      S1 = update_taskspec(S, TaskId,
          fun(TaskSpec) ->
              CurrentInputs = TaskSpec#task_spec.input,
              TaskSpec#task_spec{input = CurrentInputs ++ InputIds}
          end),
      add_inputs_to_data_map(S1, NewInputs).
  
  