docs: void init(OmemoManager.LoggedInOmemoManager managerGuard)
              throws InterruptedException, CorruptedOmemoKeyException, XMPPException.XMPPErrorException,
              SmackException.NotConnectedException, SmackException.NoResponseException,
              PubSubException.NotALeafNodeException {
  
          OmemoManager manager = managerGuard.get();
          OmemoDevice userDevice = manager.getOwnDevice();
  
          // Create new keys if necessary and publish to the server.
          getOmemoStoreBackend().replenishKeys(userDevice);
  
          // Rotate signed preKey if necessary.
          if (shouldRotateSignedPreKey(userDevice)) {
              getOmemoStoreBackend().changeSignedPreKey(userDevice);
          }
  
          // Pack and publish bundle
          OmemoBundleElement bundle = getOmemoStoreBackend().packOmemoBundle(userDevice);
          publishBundle(manager.getConnection(), userDevice, bundle);
  
          // Fetch device list and republish deviceId if necessary
          refreshAndRepublishDeviceList(manager.getConnection(), userDevice);
      }