docs: public static ServerSideEncryption withManagedKeys(String keyId, Map<String,String> context) 
      throws InvalidArgumentException, UnsupportedEncodingException {
      if (keyId == null) {
        throw new InvalidArgumentException("The key-ID cannot be null");
      }
      if (context == null) {
        return new ServerSideEncryptionKms(keyId, Optional.empty());
      }
  
      StringBuilder builder = new StringBuilder();
      int i = 0;
      builder.append('{');
      for (Entry<String,String> entry : context.entrySet()) {
        builder.append('"');
        builder.append(entry.getKey());
        builder.append('"');
        builder.append(':');
        builder.append('"');
        builder.append(entry.getValue());
        builder.append('"');
        if (i < context.entrySet().size() - 1) {
          builder.append(',');
        }
      }
      builder.append('}');
      String contextString = BaseEncoding.base64().encode(builder.toString().getBytes("UTF-8"));
      return new ServerSideEncryptionKms(keyId, Optional.of(contextString)); 
    }