docs: private void check(CryptoMode cryptoMode) {
          // For modes that use AES/GCM, we prefer using the BouncyCastle provider unless the
          // user has explicitly overridden us (i.e., with the FIPS-compliant BouncyCastle
          // implementation).
          boolean preferBC = (cryptoMode == CryptoMode.AuthenticatedEncryption)
                             || (cryptoMode == CryptoMode.StrictAuthenticatedEncryption);
  
          boolean haveOverride = (cryptoProvider != null && alwaysUseCryptoProvider);
  
          if (preferBC && !haveOverride) {
              if (!CryptoRuntime.isBouncyCastleAvailable()) {
                  CryptoRuntime.enableBouncyCastle();
                  if (!CryptoRuntime.isBouncyCastleAvailable()) {
                      throw new UnsupportedOperationException(
                          "The Bouncy castle library jar is required on the classpath to enable authenticated encryption");
                  }
              }
              if (!CryptoRuntime.isAesGcmAvailable())
                  throw new UnsupportedOperationException(
                      "More recent version of the Bouncy castle library is required to enable authenticated encryption");
          }
      }