@Override
 public final CommittedResult handleResult(
     CommittedBundle<?> inputBundle, TransformResult result) {
   CommittedResult committedResult = evaluationContext.handleResult(inputBundle, timers, result);
   for (CommittedBundle<?> outputBundle : committedResult.getOutputs()) {
     allUpdates.offer(
         ExecutorUpdate.fromBundle(
             outputBundle, valueToConsumers.get(outputBundle.getPCollection())));
   }
   CommittedBundle<?> unprocessedInputs = committedResult.getUnprocessedInputs();
   if (unprocessedInputs != null && !Iterables.isEmpty(unprocessedInputs.getElements())) {
     if (inputBundle.getPCollection() == null) {
       // TODO: Split this logic out of an if statement
       pendingRootBundles.get(result.getTransform()).offer(unprocessedInputs);
     } else {
       allUpdates.offer(
           ExecutorUpdate.fromBundle(
               unprocessedInputs,
               Collections.<AppliedPTransform<?, ?, ?>>singleton(
                   committedResult.getTransform())));
     }
   }
   if (!committedResult.getProducedOutputTypes().isEmpty()) {
     state.set(ExecutorState.ACTIVE);
   }
   outstandingWork.decrementAndGet();
   return committedResult;
 }