public class examples.AuthCommonExamples
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: examples.AuthCommonExamples
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // examples.AuthCommonExamples this
         0: .line 30
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lexamples/AuthCommonExamples;

  public void example1(io.vertx.ext.auth.authentication.AuthenticationProvider);
    descriptor: (Lio/vertx/ext/auth/authentication/AuthenticationProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // examples.AuthCommonExamples this
        start local 1 // io.vertx.ext.auth.authentication.AuthenticationProvider authProvider
         0: .line 34
            new io.vertx.core.json.JsonObject
            dup
            invokespecial io.vertx.core.json.JsonObject.<init>:()V
         1: .line 35
            ldc "username"
            ldc "tim"
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
            ldc "password"
            ldc "mypassword"
            invokevirtual io.vertx.core.json.JsonObject.put:(Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/json/JsonObject;
         2: .line 34
            astore 2 /* authInfo */
        start local 2 // io.vertx.core.json.JsonObject authInfo
         3: .line 37
            aload 1 /* authProvider */
            aload 2 /* authInfo */
            invokeinterface io.vertx.ext.auth.authentication.AuthenticationProvider.authenticate:(Lio/vertx/core/json/JsonObject;)Lio/vertx/core/Future;
         4: .line 38
            invokedynamic handle()Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  examples/AuthCommonExamples.lambda$0(Lio/vertx/ext/auth/User;)V (6)
                  (Lio/vertx/ext/auth/User;)V
            invokeinterface io.vertx.core.Future.onSuccess:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
         5: .line 41
            invokedynamic handle()Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  java/lang/Throwable.printStackTrace()V (5)
                  (Ljava/lang/Throwable;)V
            invokeinterface io.vertx.core.Future.onFailure:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         6: .line 42
            return
        end local 2 // io.vertx.core.json.JsonObject authInfo
        end local 1 // io.vertx.ext.auth.authentication.AuthenticationProvider authProvider
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lexamples/AuthCommonExamples;
            0    7     1  authProvider  Lio/vertx/ext/auth/authentication/AuthenticationProvider;
            3    7     2      authInfo  Lio/vertx/core/json/JsonObject;
    MethodParameters:
              Name  Flags
      authProvider  

  public void example2(io.vertx.ext.auth.User, io.vertx.ext.auth.authorization.AuthorizationProvider);
    descriptor: (Lio/vertx/ext/auth/User;Lio/vertx/ext/auth/authorization/AuthorizationProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // examples.AuthCommonExamples this
        start local 1 // io.vertx.ext.auth.User user
        start local 2 // io.vertx.ext.auth.authorization.AuthorizationProvider authorizationProvider
         0: .line 46
            aload 2 /* authorizationProvider */
            aload 1 /* user */
            invokeinterface io.vertx.ext.auth.authorization.AuthorizationProvider.getAuthorizations:(Lio/vertx/ext/auth/User;)Lio/vertx/core/Future;
         1: .line 47
            aload 1 /* user */
            invokedynamic handle(Lio/vertx/ext/auth/User;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  examples/AuthCommonExamples.lambda$2(Lio/vertx/ext/auth/User;Ljava/lang/Void;)V (6)
                  (Ljava/lang/Void;)V
            invokeinterface io.vertx.core.Future.onSuccess:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         2: .line 55
            return
        end local 2 // io.vertx.ext.auth.authorization.AuthorizationProvider authorizationProvider
        end local 1 // io.vertx.ext.auth.User user
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    3     0                   this  Lexamples/AuthCommonExamples;
            0    3     1                   user  Lio/vertx/ext/auth/User;
            0    3     2  authorizationProvider  Lio/vertx/ext/auth/authorization/AuthorizationProvider;
    MethodParameters:
                       Name  Flags
      user                   
      authorizationProvider  

  public void example3(io.vertx.ext.auth.User, io.vertx.ext.auth.authorization.AuthorizationProvider);
    descriptor: (Lio/vertx/ext/auth/User;Lio/vertx/ext/auth/authorization/AuthorizationProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // examples.AuthCommonExamples this
        start local 1 // io.vertx.ext.auth.User user
        start local 2 // io.vertx.ext.auth.authorization.AuthorizationProvider authorizationProvider
         0: .line 59
            aload 2 /* authorizationProvider */
            aload 1 /* user */
            invokeinterface io.vertx.ext.auth.authorization.AuthorizationProvider.getAuthorizations:(Lio/vertx/ext/auth/User;)Lio/vertx/core/Future;
         1: .line 60
            aload 1 /* user */
            invokedynamic handle(Lio/vertx/ext/auth/User;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  examples/AuthCommonExamples.lambda$3(Lio/vertx/ext/auth/User;Ljava/lang/Void;)V (6)
                  (Ljava/lang/Void;)V
            invokeinterface io.vertx.core.Future.onSuccess:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         2: .line 68
            return
        end local 2 // io.vertx.ext.auth.authorization.AuthorizationProvider authorizationProvider
        end local 1 // io.vertx.ext.auth.User user
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    3     0                   this  Lexamples/AuthCommonExamples;
            0    3     1                   user  Lio/vertx/ext/auth/User;
            0    3     2  authorizationProvider  Lio/vertx/ext/auth/authorization/AuthorizationProvider;
    MethodParameters:
                       Name  Flags
      user                   
      authorizationProvider  

  public void example4(io.vertx.core.Vertx);
    descriptor: (Lio/vertx/core/Vertx;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // examples.AuthCommonExamples this
        start local 1 // io.vertx.core.Vertx vertx
         0: .line 72
            aload 1 /* vertx */
            invokestatic io.vertx.ext.auth.VertxContextPRNG.current:(Lio/vertx/core/Vertx;)Lio/vertx/ext/auth/VertxContextPRNG;
            bipush 32
            invokeinterface io.vertx.ext.auth.VertxContextPRNG.nextString:(I)Ljava/lang/String;
            pop
         1: .line 74
            aload 1 /* vertx */
            invokestatic io.vertx.ext.auth.VertxContextPRNG.current:(Lio/vertx/core/Vertx;)Lio/vertx/ext/auth/VertxContextPRNG;
            invokeinterface io.vertx.ext.auth.VertxContextPRNG.nextInt:()I
            pop
         2: .line 75
            return
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lexamples/AuthCommonExamples;
            0    3     1  vertx  Lio/vertx/core/Vertx;
    MethodParameters:
       Name  Flags
      vertx  

  public void example5();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // examples.AuthCommonExamples this
         0: .line 78
            new io.vertx.ext.auth.KeyStoreOptions
            dup
            invokespecial io.vertx.ext.auth.KeyStoreOptions.<init>:()V
         1: .line 79
            ldc "/path/to/keystore/file"
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.setPath:(Ljava/lang/String;)Lio/vertx/ext/auth/KeyStoreOptions;
         2: .line 80
            ldc "pkcs8"
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.setType:(Ljava/lang/String;)Lio/vertx/ext/auth/KeyStoreOptions;
         3: .line 81
            ldc "keystore-password"
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.setPassword:(Ljava/lang/String;)Lio/vertx/ext/auth/KeyStoreOptions;
         4: .line 82
            ldc "key-alias"
            ldc "alias-password"
            invokevirtual io.vertx.ext.auth.KeyStoreOptions.putPasswordProtection:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/ext/auth/KeyStoreOptions;
            pop
         5: .line 83
            return
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lexamples/AuthCommonExamples;

  public void example6(io.vertx.core.Vertx);
    descriptor: (Lio/vertx/core/Vertx;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // examples.AuthCommonExamples this
        start local 1 // io.vertx.core.Vertx vertx
         0: .line 86
            new io.vertx.ext.auth.PubSecKeyOptions
            dup
            invokespecial io.vertx.ext.auth.PubSecKeyOptions.<init>:()V
         1: .line 87
            ldc "RS256"
            invokevirtual io.vertx.ext.auth.PubSecKeyOptions.setAlgorithm:(Ljava/lang/String;)Lio/vertx/ext/auth/PubSecKeyOptions;
         2: .line 89
            aload 1 /* vertx */
            invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
         3: .line 90
            ldc "/path/to/pem/file"
            invokeinterface io.vertx.core.file.FileSystem.readFileBlocking:(Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
         4: .line 91
            invokeinterface io.vertx.core.buffer.Buffer.toString:()Ljava/lang/String;
         5: .line 88
            invokevirtual io.vertx.ext.auth.PubSecKeyOptions.setBuffer:(Ljava/lang/String;)Lio/vertx/ext/auth/PubSecKeyOptions;
            pop
         6: .line 92
            return
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lexamples/AuthCommonExamples;
            0    7     1  vertx  Lio/vertx/core/Vertx;
    MethodParameters:
       Name  Flags
      vertx  

  public void example7(io.vertx.core.Vertx, io.vertx.ext.auth.authentication.AuthenticationProvider, io.vertx.ext.auth.authentication.AuthenticationProvider);
    descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/auth/authentication/AuthenticationProvider;Lio/vertx/ext/auth/authentication/AuthenticationProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // examples.AuthCommonExamples this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // io.vertx.ext.auth.authentication.AuthenticationProvider ldapAuthProvider
        start local 3 // io.vertx.ext.auth.authentication.AuthenticationProvider propertiesAuthProvider
         0: .line 97
            invokestatic io.vertx.ext.auth.ChainAuth.any:()Lio/vertx/ext/auth/ChainAuth;
         1: .line 98
            aload 2 /* ldapAuthProvider */
            invokeinterface io.vertx.ext.auth.ChainAuth.add:(Lio/vertx/ext/auth/authentication/AuthenticationProvider;)Lio/vertx/ext/auth/ChainAuth;
         2: .line 99
            aload 3 /* propertiesAuthProvider */
            invokeinterface io.vertx.ext.auth.ChainAuth.add:(Lio/vertx/ext/auth/authentication/AuthenticationProvider;)Lio/vertx/ext/auth/ChainAuth;
            pop
         3: .line 100
            return
        end local 3 // io.vertx.ext.auth.authentication.AuthenticationProvider propertiesAuthProvider
        end local 2 // io.vertx.ext.auth.authentication.AuthenticationProvider ldapAuthProvider
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    4     0                    this  Lexamples/AuthCommonExamples;
            0    4     1                   vertx  Lio/vertx/core/Vertx;
            0    4     2        ldapAuthProvider  Lio/vertx/ext/auth/authentication/AuthenticationProvider;
            0    4     3  propertiesAuthProvider  Lio/vertx/ext/auth/authentication/AuthenticationProvider;
    MethodParameters:
                        Name  Flags
      vertx                   
      ldapAuthProvider        
      propertiesAuthProvider  

  public void example8(io.vertx.core.Vertx, io.vertx.ext.auth.authentication.AuthenticationProvider, io.vertx.ext.auth.authentication.AuthenticationProvider);
    descriptor: (Lio/vertx/core/Vertx;Lio/vertx/ext/auth/authentication/AuthenticationProvider;Lio/vertx/ext/auth/authentication/AuthenticationProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // examples.AuthCommonExamples this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // io.vertx.ext.auth.authentication.AuthenticationProvider ldapAuthProvider
        start local 3 // io.vertx.ext.auth.authentication.AuthenticationProvider propertiesAuthProvider
         0: .line 105
            invokestatic io.vertx.ext.auth.ChainAuth.all:()Lio/vertx/ext/auth/ChainAuth;
         1: .line 106
            aload 2 /* ldapAuthProvider */
            invokeinterface io.vertx.ext.auth.ChainAuth.add:(Lio/vertx/ext/auth/authentication/AuthenticationProvider;)Lio/vertx/ext/auth/ChainAuth;
         2: .line 107
            aload 3 /* propertiesAuthProvider */
            invokeinterface io.vertx.ext.auth.ChainAuth.add:(Lio/vertx/ext/auth/authentication/AuthenticationProvider;)Lio/vertx/ext/auth/ChainAuth;
            pop
         3: .line 108
            return
        end local 3 // io.vertx.ext.auth.authentication.AuthenticationProvider propertiesAuthProvider
        end local 2 // io.vertx.ext.auth.authentication.AuthenticationProvider ldapAuthProvider
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    4     0                    this  Lexamples/AuthCommonExamples;
            0    4     1                   vertx  Lio/vertx/core/Vertx;
            0    4     2        ldapAuthProvider  Lio/vertx/ext/auth/authentication/AuthenticationProvider;
            0    4     3  propertiesAuthProvider  Lio/vertx/ext/auth/authentication/AuthenticationProvider;
    MethodParameters:
                        Name  Flags
      vertx                   
      ldapAuthProvider        
      propertiesAuthProvider  

  public void example9(io.vertx.ext.auth.User);
    descriptor: (Lio/vertx/ext/auth/User;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // examples.AuthCommonExamples this
        start local 1 // io.vertx.ext.auth.User user
         0: .line 113
            aload 1 /* user */
            ldc "sub"
            invokeinterface io.vertx.ext.auth.User.containsKey:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 120
            aload 1 /* user */
            ldc "sub"
            invokeinterface io.vertx.ext.auth.User.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            pop
         2: .line 122
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.ext.auth.User user
        end local 0 // examples.AuthCommonExamples this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lexamples/AuthCommonExamples;
            0    3     1  user  Lio/vertx/ext/auth/User;
    MethodParameters:
      Name  Flags
      user  

  private static void lambda$0(io.vertx.ext.auth.User);
    descriptor: (Lio/vertx/ext/auth/User;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // io.vertx.ext.auth.User user
         0: .line 39
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "User "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* user */
            invokeinterface io.vertx.ext.auth.User.principal:()Lio/vertx/core/json/JsonObject;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is now authenticated"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 40
            return
        end local 0 // io.vertx.ext.auth.User user
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  user  Lio/vertx/ext/auth/User;

  private static void lambda$2(io.vertx.ext.auth.User, java.lang.Void);
    descriptor: (Lio/vertx/ext/auth/User;Ljava/lang/Void;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.Void done
         0: .line 49
            ldc "printer1234"
            invokestatic io.vertx.ext.auth.authorization.PermissionBasedAuthorization.create:(Ljava/lang/String;)Lio/vertx/ext/auth/authorization/PermissionBasedAuthorization;
            aload 0
            invokeinterface io.vertx.ext.auth.authorization.PermissionBasedAuthorization.match:(Lio/vertx/ext/auth/User;)Z
            ifeq 3
         1: .line 50
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "User has the authority"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 51
            goto 4
         3: .line 52
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "User does not have the authority"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 54
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Void done
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     1  done  Ljava/lang/Void;

  private static void lambda$3(io.vertx.ext.auth.User, java.lang.Void);
    descriptor: (Lio/vertx/ext/auth/User;Ljava/lang/Void;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.Void done
         0: .line 62
            ldc "admin"
            invokestatic io.vertx.ext.auth.authorization.RoleBasedAuthorization.create:(Ljava/lang/String;)Lio/vertx/ext/auth/authorization/RoleBasedAuthorization;
            aload 0
            invokeinterface io.vertx.ext.auth.authorization.RoleBasedAuthorization.match:(Lio/vertx/ext/auth/User;)Z
            ifeq 3
         1: .line 63
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "User has the authority"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 64
            goto 4
         3: .line 65
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "User does not have the authority"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 67
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Void done
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     1  done  Ljava/lang/Void;
}
SourceFile: "AuthCommonExamples.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles