@TypeInfo("ceylon.language::Integer")
 public long authTime(
     final @TypeInfo("ceylon.json::Object") @Name("principal") ceylon.json.Object principal) {
   io.vertx.core.json.JsonObject arg_0 =
       io.vertx.lang.ceylon.ToJava.JsonObject.safeConvert(principal);
   long ret = io.vertx.ext.auth.oauth2.KeycloakHelper.authTime(arg_0);
   return ret;
 }
 @TypeInfo("ceylon.language::String")
 public ceylon.language.String sessionState(
     final @TypeInfo("ceylon.json::Object") @Name("principal") ceylon.json.Object principal) {
   io.vertx.core.json.JsonObject arg_0 =
       io.vertx.lang.ceylon.ToJava.JsonObject.safeConvert(principal);
   ceylon.language.String ret =
       io.vertx.lang.ceylon.ToCeylon.String.safeConvert(
           io.vertx.ext.auth.oauth2.KeycloakHelper.sessionState(arg_0));
   return ret;
 }
 @DocAnnotation$annotation$(description = " Get decoded `access_token` from the principal.\n")
 @TypeInfo("ceylon.json::Object")
 public ceylon.json.Object accessToken(
     final @TypeInfo("ceylon.json::Object") @Name("principal") @DocAnnotation$annotation$(
             description = "user principal\n") ceylon.json.Object principal) {
   io.vertx.core.json.JsonObject arg_0 =
       io.vertx.lang.ceylon.ToJava.JsonObject.safeConvert(principal);
   ceylon.json.Object ret =
       io.vertx.lang.ceylon.ToCeylon.JsonObject.safeConvert(
           io.vertx.ext.auth.oauth2.KeycloakHelper.accessToken(arg_0));
   return ret;
 }
 @DocAnnotation$annotation$(description = " Get raw `id_token` string from the principal.\n")
 @TypeInfo("ceylon.language::String")
 public ceylon.language.String rawIdToken(
     final @TypeInfo("ceylon.json::Object") @Name("principal") @DocAnnotation$annotation$(
             description = "user principal\n") ceylon.json.Object principal) {
   io.vertx.core.json.JsonObject arg_0 =
       io.vertx.lang.ceylon.ToJava.JsonObject.safeConvert(principal);
   ceylon.language.String ret =
       io.vertx.lang.ceylon.ToCeylon.String.safeConvert(
           io.vertx.ext.auth.oauth2.KeycloakHelper.rawIdToken(arg_0));
   return ret;
 }
 @TypeInfo("ceylon.language::Set<ceylon.language::String>")
 public ceylon.language.Set<ceylon.language.String> allowedOrigins(
     final @TypeInfo("ceylon.json::Object") @Name("principal") ceylon.json.Object principal) {
   io.vertx.core.json.JsonObject arg_0 =
       io.vertx.lang.ceylon.ToJava.JsonObject.safeConvert(principal);
   ceylon.language.Set<ceylon.language.String> ret =
       io.vertx.lang.ceylon.ToCeylon.convertSet(
           ceylon.language.String.$TypeDescriptor$,
           io.vertx.ext.auth.oauth2.KeycloakHelper.allowedOrigins(arg_0),
           io.vertx.lang.ceylon.ToCeylon.String);
   return ret;
 }
 @DocAnnotation$annotation$(
     description =
         " Parse the token string with base64 decoder.\n This will only obtain the \"payload\" part of the token.\n")
 @TypeInfo("ceylon.json::Object")
 public ceylon.json.Object parseToken(
     final @TypeInfo("ceylon.language::String") @Name("token") @DocAnnotation$annotation$(
             description = "token string\n") ceylon.language.String token) {
   java.lang.String arg_0 = io.vertx.lang.ceylon.ToJava.String.safeConvert(token);
   ceylon.json.Object ret =
       io.vertx.lang.ceylon.ToCeylon.JsonObject.safeConvert(
           io.vertx.ext.auth.oauth2.KeycloakHelper.parseToken(arg_0));
   return ret;
 }