@Override
 public void handleData(final ITmfEvent event) {
   super.handleData(event);
   if (event.getTrace() == trace) {
     sci.processEvent(event);
   }
 }
 @Override
 public void handleCompleted() {
   /*
    * If we're using a threaded state provider, we need to make sure
    * all events have been handled by the state system before doing
    * queries on it.
    */
   if (fPartialInput instanceof AbstractTmfStateProvider) {
     ((AbstractTmfStateProvider) fPartialInput).waitForEmptyQueue();
   }
   super.handleCompleted();
 }
    @Override
    public void handleData(final ITmfEvent event) {
      super.handleData(event);
      if (event.getTrace() == trace) {
        eventCount++;

        /* Check if we need to register a new checkpoint */
        if (eventCount >= lastCheckpointAt + fGranularity) {
          checkpts.put(event.getTimestamp().getValue(), eventCount);
          lastCheckpointAt = eventCount;
        }
      }
    }
 @Override
 public void handleCompleted() {
   super.handleCompleted();
   fCheckpointsReady.countDown();
 }