docs: public Map<RaftGroupId, ICompletableFuture<Object>> shutdown() {
          lock.writeLock().lock();
          try {
              Map<RaftGroupId, ICompletableFuture<Object>> futures = new HashMap<RaftGroupId, ICompletableFuture<Object>>();
              for (Entry<RaftGroupId, SessionState> e : sessions.entrySet()) {
                  RaftGroupId groupId = e.getKey();
                  long sessionId = e.getValue().id;
                  ICompletableFuture<Object> f = closeSession(groupId, sessionId);
                  futures.put(groupId, f);
              }
              sessions.clear();
              running = false;
              return futures;
          } finally {
              lock.writeLock().unlock();
          }
      }