code: @Synchronized
    public static StreamCodec buildStreamCryptoProvider(String algorithm, Map<String, Object> parameters) {
      for (EncryptionProvider provider : encryptionProviderLoader) {
        log.debug("Looking for algorithm {} in provider {}", algorithm, provider.getClass().getName());
        StreamCodec codec = provider.buildStreamCryptoProvider(algorithm, parameters);
        if (codec != null) {
          log.debug("Found algorithm {} in provider {}", algorithm, provider.getClass().getName());
          return codec;
        }
      }
  
      throw new IllegalArgumentException("Could not find a provider to build algorithm " + algorithm + " - is gobblin-crypto-provider in classpath?");
    }
docs: Return a StreamEncryptor for the given algorithm and with appropriate parameters.
  @param algorithm Algorithm to build
  @param parameters Parameters for algorithm
  @return A StreamCodec for that algorithm
  @throws IllegalArgumentException If the given algorithm/parameter pair cannot be built