internal bool Process(IPortElement messageNode, int number, ref ITask deferredTask)
{
int rem = Interlocked.Decrement (ref remaining);
if (rem < 0)
return false;
lock (_lock) {
results [number].Add (messageNode.Item);
}
if (rem == 0) {
ITask task = new Task<ICollection[]> (results, handler);
task.LinkedIterator = LinkedIterator;
deferredTask = task;
var arb = Arbiter;
if (arb != null)
return arb.Evaluate (this, ref deferredTask);
Cleanup ();
}
return true;
}