code: Map<AsyncLogger, NewEpochResponseProto> createNewUniqueEpoch()
        throws IOException {
      Preconditions.checkState(!loggers.isEpochEstablished(),
          "epoch already created");
      
      Map<AsyncLogger, GetJournalStateResponseProto> lastPromises =
        loggers.waitForWriteQuorum(loggers.getJournalState(),
            getJournalStateTimeoutMs, "getJournalState()");
      
      long maxPromised = Long.MIN_VALUE;
      for (GetJournalStateResponseProto resp : lastPromises.values()) {
        maxPromised = Math.max(maxPromised, resp.getLastPromisedEpoch());
      }
      assert maxPromised >= 0;
      
      long myEpoch = maxPromised + 1;
      Map<AsyncLogger, NewEpochResponseProto> resps =
          loggers.waitForWriteQuorum(loggers.newEpoch(nsInfo, myEpoch),
              newEpochTimeoutMs, "newEpoch(" + myEpoch + ")");
          
      loggers.setEpoch(myEpoch);
      return resps;
    }
docs: Fence any previous writers, and obtain a unique epoch number
  for write-access to the journal nodes.
  
  @return the new, unique epoch number