/** Fires any available timers. */
 private void fireTimers() throws Exception {
   try {
     for (FiredTimers transformTimers : evaluationContext.extractFiredTimers()) {
       Collection<TimerData> delivery = transformTimers.getTimers();
       KeyedWorkItem<?, Object> work =
           KeyedWorkItems.timersWorkItem(transformTimers.getKey().getKey(), delivery);
       @SuppressWarnings({"unchecked", "rawtypes"})
       CommittedBundle<?> bundle =
           evaluationContext
               .createKeyedBundle(
                   transformTimers.getKey(),
                   (PCollection) transformTimers.getTransform().getInput())
               .add(WindowedValue.valueInGlobalWindow(work))
               .commit(evaluationContext.now());
       scheduleConsumption(
           transformTimers.getTransform(),
           bundle,
           new TimerIterableCompletionCallback(delivery));
       state.set(ExecutorState.ACTIVE);
     }
   } catch (Exception e) {
     LOG.error("Internal Error while delivering timers", e);
     throw e;
   }
 }