public class io.vertx.service.ServiceVerticleFactory implements io.vertx.core.spi.VerticleFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.service.ServiceVerticleFactory
  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 // io.vertx.service.ServiceVerticleFactory this
         0: .line 41
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.vertx.service.ServiceVerticleFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/service/ServiceVerticleFactory;

  public java.lang.String prefix();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.service.ServiceVerticleFactory this
         0: .line 45
            ldc "service"
            areturn
        end local 0 // io.vertx.service.ServiceVerticleFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/service/ServiceVerticleFactory;

  public void createVerticle(java.lang.String, java.lang.ClassLoader, io.vertx.core.Promise<java.util.concurrent.Callable<io.vertx.core.Verticle>>);
    descriptor: (Ljava/lang/String;Ljava/lang/ClassLoader;Lio/vertx/core/Promise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // io.vertx.service.ServiceVerticleFactory this
        start local 1 // java.lang.String verticleName
        start local 2 // java.lang.ClassLoader classLoader
        start local 3 // io.vertx.core.Promise promise
         0: .line 50
            aload 0 /* this */
            aload 1 /* verticleName */
            new io.vertx.core.DeploymentOptions
            dup
            invokespecial io.vertx.core.DeploymentOptions.<init>:()V
            aload 2 /* classLoader */
            aload 3 /* promise */
            invokevirtual io.vertx.service.ServiceVerticleFactory.createVerticle:(Ljava/lang/String;Lio/vertx/core/DeploymentOptions;Ljava/lang/ClassLoader;Lio/vertx/core/Promise;)V
         1: .line 51
            return
        end local 3 // io.vertx.core.Promise promise
        end local 2 // java.lang.ClassLoader classLoader
        end local 1 // java.lang.String verticleName
        end local 0 // io.vertx.service.ServiceVerticleFactory this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lio/vertx/service/ServiceVerticleFactory;
            0    2     1  verticleName  Ljava/lang/String;
            0    2     2   classLoader  Ljava/lang/ClassLoader;
            0    2     3       promise  Lio/vertx/core/Promise<Ljava/util/concurrent/Callable<Lio/vertx/core/Verticle;>;>;
    Signature: (Ljava/lang/String;Ljava/lang/ClassLoader;Lio/vertx/core/Promise<Ljava/util/concurrent/Callable<Lio/vertx/core/Verticle;>;>;)V
    MethodParameters:
              Name  Flags
      verticleName  
      classLoader   
      promise       

  protected void createVerticle(java.lang.String, io.vertx.core.DeploymentOptions, java.lang.ClassLoader, io.vertx.core.Promise<java.util.concurrent.Callable<io.vertx.core.Verticle>>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/DeploymentOptions;Ljava/lang/ClassLoader;Lio/vertx/core/Promise;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=16, args_size=5
        start local 0 // io.vertx.service.ServiceVerticleFactory this
        start local 1 // java.lang.String verticleName
        start local 2 // io.vertx.core.DeploymentOptions deploymentOptions
        start local 3 // java.lang.ClassLoader classLoader
        start local 4 // io.vertx.core.Promise promise
         0: .line 55
            aload 1 /* verticleName */
            invokestatic io.vertx.core.spi.VerticleFactory.removePrefix:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* identifier */
        start local 5 // java.lang.String identifier
         1: .line 56
            new java.lang.StringBuilder
            dup
            aload 5 /* identifier */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".json"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 6 /* descriptorFile */
        start local 6 // java.lang.String descriptorFile
         2: .line 60
            aconst_null
            astore 9
            aconst_null
            astore 10
         3: aload 3 /* classLoader */
            aload 6 /* descriptorFile */
            invokevirtual java.lang.ClassLoader.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 11 /* is */
        start local 11 // java.io.InputStream is
         4: .line 61
            aload 11 /* is */
            ifnonnull 6
         5: .line 62
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot find service descriptor file "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* descriptorFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " on classpath"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 64
      StackMap locals: io.vertx.service.ServiceVerticleFactory java.lang.String io.vertx.core.DeploymentOptions java.lang.ClassLoader io.vertx.core.Promise java.lang.String java.lang.String top top java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack:
            aconst_null
            astore 12
            aconst_null
            astore 13
         7: new java.util.Scanner
            dup
            aload 11 /* is */
            ldc "UTF-8"
            invokespecial java.util.Scanner.<init>:(Ljava/io/InputStream;Ljava/lang/String;)V
            ldc "\\A"
            invokevirtual java.util.Scanner.useDelimiter:(Ljava/lang/String;)Ljava/util/Scanner;
            astore 14 /* scanner */
        start local 14 // java.util.Scanner scanner
         8: .line 65
            aload 14 /* scanner */
            invokevirtual java.util.Scanner.next:()Ljava/lang/String;
            astore 15 /* conf */
        start local 15 // java.lang.String conf
         9: .line 66
            new io.vertx.core.json.JsonObject
            dup
            aload 15 /* conf */
            invokespecial io.vertx.core.json.JsonObject.<init>:(Ljava/lang/String;)V
            astore 7 /* descriptor */
        end local 15 // java.lang.String conf
        start local 7 // io.vertx.core.json.JsonObject descriptor
        10: .line 67
            aload 14 /* scanner */
            ifnull 20
            aload 14 /* scanner */
            invokevirtual java.util.Scanner.close:()V
            goto 20
        end local 7 // io.vertx.core.json.JsonObject descriptor
      StackMap locals: io.vertx.service.ServiceVerticleFactory java.lang.String io.vertx.core.DeploymentOptions java.lang.ClassLoader io.vertx.core.Promise java.lang.String java.lang.String top top java.lang.Throwable java.lang.Throwable java.io.InputStream java.lang.Throwable java.lang.Throwable java.util.Scanner
      StackMap stack: java.lang.Throwable
        11: astore 12
            aload 14 /* scanner */
            ifnull 12
            aload 14 /* scanner */
            invokevirtual java.util.Scanner.close:()V
        end local 14 // java.util.Scanner scanner
      StackMap locals:
      StackMap stack:
        12: aload 12
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 13
            aload 12
            ifnonnull 14
            aload 13
            astore 12
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 12
            aload 13
            if_acmpeq 15
            aload 12
            aload 13
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 12
            athrow
      StackMap locals: io.vertx.service.ServiceVerticleFactory java.lang.String io.vertx.core.DeploymentOptions java.lang.ClassLoader io.vertx.core.Promise java.lang.String java.lang.String top top java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.util.NoSuchElementException
        16: pop
        17: .line 68
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            aload 6 /* descriptorFile */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is empty"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 69
      StackMap locals:
      StackMap stack: io.vertx.core.json.DecodeException
            pop
        19: .line 70
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            aload 6 /* descriptorFile */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " contains invalid json"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        start local 7 // io.vertx.core.json.JsonObject descriptor
        20: .line 72
      StackMap locals: io.vertx.service.ServiceVerticleFactory java.lang.String io.vertx.core.DeploymentOptions java.lang.ClassLoader io.vertx.core.Promise java.lang.String java.lang.String io.vertx.core.json.JsonObject top java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack:
            aload 11 /* is */
            ifnull 26
            aload 11 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 26
        end local 7 // io.vertx.core.json.JsonObject descriptor
      StackMap locals: io.vertx.service.ServiceVerticleFactory java.lang.String io.vertx.core.DeploymentOptions java.lang.ClassLoader io.vertx.core.Promise java.lang.String java.lang.String top top java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
        21: astore 9
            aload 11 /* is */
            ifnull 22
            aload 11 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 11 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
        22: aload 9
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: astore 10
            aload 9
            ifnonnull 24
            aload 10
            astore 9
            goto 25
      StackMap locals:
      StackMap stack:
        24: aload 9
            aload 10
            if_acmpeq 25
            aload 9
            aload 10
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        25: aload 9
            athrow
        start local 7 // io.vertx.core.json.JsonObject descriptor
        26: .line 73
      StackMap locals: io.vertx.service.ServiceVerticleFactory java.lang.String io.vertx.core.DeploymentOptions java.lang.ClassLoader io.vertx.core.Promise java.lang.String java.lang.String io.vertx.core.json.JsonObject
      StackMap stack:
            aload 7 /* descriptor */
            ldc "main"
            invokevirtual io.vertx.core.json.JsonObject.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* main */
        start local 8 // java.lang.String main
        27: .line 74
            aload 8 /* main */
            ifnonnull 29
        28: .line 75
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            aload 6 /* descriptorFile */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " does not contain a main field"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 82
      StackMap locals: java.lang.String
      StackMap stack:
            aload 7 /* descriptor */
            ldc "options"
            new io.vertx.core.json.JsonObject
            dup
            invokespecial io.vertx.core.json.JsonObject.<init>:()V
            invokevirtual io.vertx.core.json.JsonObject.getJsonObject:(Ljava/lang/String;Lio/vertx/core/json/JsonObject;)Lio/vertx/core/json/JsonObject;
            astore 9 /* serviceOptions */
        start local 9 // io.vertx.core.json.JsonObject serviceOptions
        30: .line 83
            aload 9 /* serviceOptions */
            aload 2 /* deploymentOptions */
            invokevirtual io.vertx.core.DeploymentOptions.toJson:()Lio/vertx/core/json/JsonObject;
            invokevirtual io.vertx.core.json.JsonObject.mergeIn:(Lio/vertx/core/json/JsonObject;)Lio/vertx/core/json/JsonObject;
            pop
        31: .line 85
            aload 4 /* promise */
            aload 0 /* this */
            aload 9 /* serviceOptions */
            aload 8 /* main */
            invokedynamic call(Lio/vertx/service/ServiceVerticleFactory;Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Ljava/util/concurrent/Callable;
              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;
                  io/vertx/service/ServiceVerticleFactory.lambda$0(Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/Verticle; (7)
                  ()Lio/vertx/core/Verticle;
            invokeinterface io.vertx.core.Promise.complete:(Ljava/lang/Object;)V
        end local 9 // io.vertx.core.json.JsonObject serviceOptions
        end local 8 // java.lang.String main
        end local 7 // io.vertx.core.json.JsonObject descriptor
        32: .line 102
            goto 35
      StackMap locals: io.vertx.service.ServiceVerticleFactory java.lang.String io.vertx.core.DeploymentOptions java.lang.ClassLoader io.vertx.core.Promise java.lang.String java.lang.String
      StackMap stack: java.lang.Exception
        33: astore 7 /* e */
        start local 7 // java.lang.Exception e
        34: .line 103
            aload 4 /* promise */
            aload 7 /* e */
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
        end local 7 // java.lang.Exception e
        35: .line 105
      StackMap locals:
      StackMap stack:
            return
        end local 6 // java.lang.String descriptorFile
        end local 5 // java.lang.String identifier
        end local 4 // io.vertx.core.Promise promise
        end local 3 // java.lang.ClassLoader classLoader
        end local 2 // io.vertx.core.DeploymentOptions deploymentOptions
        end local 1 // java.lang.String verticleName
        end local 0 // io.vertx.service.ServiceVerticleFactory this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   36     0               this  Lio/vertx/service/ServiceVerticleFactory;
            0   36     1       verticleName  Ljava/lang/String;
            0   36     2  deploymentOptions  Lio/vertx/core/DeploymentOptions;
            0   36     3        classLoader  Ljava/lang/ClassLoader;
            0   36     4            promise  Lio/vertx/core/Promise<Ljava/util/concurrent/Callable<Lio/vertx/core/Verticle;>;>;
            1   36     5         identifier  Ljava/lang/String;
            2   36     6     descriptorFile  Ljava/lang/String;
           10   11     7         descriptor  Lio/vertx/core/json/JsonObject;
           20   21     7         descriptor  Lio/vertx/core/json/JsonObject;
           26   32     7         descriptor  Lio/vertx/core/json/JsonObject;
           27   32     8               main  Ljava/lang/String;
            4   22    11                 is  Ljava/io/InputStream;
            8   12    14            scanner  Ljava/util/Scanner;
            9   10    15               conf  Ljava/lang/String;
           30   32     9     serviceOptions  Lio/vertx/core/json/JsonObject;
           34   35     7                  e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           8    10      11  any
           7    13      13  any
           6    16      16  Class java.util.NoSuchElementException
           6    16      18  Class io.vertx.core.json.DecodeException
           4    20      21  any
           3    23      23  any
           2    32      33  Class java.lang.Exception
    Signature: (Ljava/lang/String;Lio/vertx/core/DeploymentOptions;Ljava/lang/ClassLoader;Lio/vertx/core/Promise<Ljava/util/concurrent/Callable<Lio/vertx/core/Verticle;>;>;)V
    MethodParameters:
                   Name  Flags
      verticleName       
      deploymentOptions  
      classLoader        
      promise            

  private io.vertx.core.Verticle lambda$0(io.vertx.core.json.JsonObject, java.lang.String);
    descriptor: (Lio/vertx/core/json/JsonObject;Ljava/lang/String;)Lio/vertx/core/Verticle;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.vertx.service.ServiceVerticleFactory this
         0: .line 85
            new io.vertx.service.ServiceVerticleFactory$1
            dup
            aload 0 /* this */
            aload 1
            aload 2
            invokespecial io.vertx.service.ServiceVerticleFactory$1.<init>:(Lio/vertx/service/ServiceVerticleFactory;Lio/vertx/core/json/JsonObject;Ljava/lang/String;)V
         1: .line 101
            areturn
        end local 0 // io.vertx.service.ServiceVerticleFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/service/ServiceVerticleFactory;
    Exceptions:
      throws java.lang.Exception
}
SourceFile: "ServiceVerticleFactory.java"
NestMembers:
  io.vertx.service.ServiceVerticleFactory$1  io.vertx.service.ServiceVerticleFactory$2
InnerClasses:
  io.vertx.service.ServiceVerticleFactory$1
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles