public synchronized int getEventCount() {
    int count = 0;
    for (SessionEventsState sessionEventsState : stateMap.values()) {
      count += sessionEventsState.getAccumulatedEventCount();
    }

    return count;
  }
  public synchronized void addPersistedEvents(PersistedEvents persistedEvents) {
    if (persistedEvents == null) {
      return;
    }

    for (AccessTokenAppIdPair accessTokenAppIdPair : persistedEvents.keySet()) {
      SessionEventsState sessionEventsState = getSessionEventsState(accessTokenAppIdPair);

      for (AppEvent appEvent : persistedEvents.get(accessTokenAppIdPair)) {
        sessionEventsState.addEvent(appEvent);
      }
    }
  }
 public synchronized void addEvent(AccessTokenAppIdPair accessTokenAppIdPair, AppEvent appEvent) {
   SessionEventsState eventsState = getSessionEventsState(accessTokenAppIdPair);
   eventsState.addEvent(appEvent);
 }