public ConsumeRowResult consume() { final RowProcessingConsumer consumer = _consumers.get(_consumerIndex); final boolean process = consumer.satisfiedForConsume(_outcomes, _row); if (process) { if (consumer.isConcurrent()) { consumer.consume(_row, 1, _outcomes, this); } else { synchronized (consumer) { consumer.consume(_row, 1, _outcomes, this); } } } else { // jump to the next step processNext(_row, 1, _outcomes); } return new ConsumeRowResult(_resultRecords, _resultOutcomes); }