public class io.vertx.codegen.CodeGen
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.codegen.CodeGen
  super_class: java.lang.Object
{
  private static final java.util.List<io.vertx.codegen.ModelProvider> PROVIDERS;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Lio/vertx/codegen/ModelProvider;>;

  private static final java.util.logging.Logger logger;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final java.util.Map<javax.annotation.processing.ProcessingEnvironment, java.lang.ClassLoader> loaderMap;
    descriptor: Ljava/util/Map;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljavax/annotation/processing/ProcessingEnvironment;Ljava/lang/ClassLoader;>;

  private final java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.util.Map$Entry<javax.lang.model.element.TypeElement, io.vertx.codegen.Model>>> models;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/util/Map$Entry<Ljavax/lang/model/element/TypeElement;Lio/vertx/codegen/Model;>;>;>;

  private final java.util.Set<javax.lang.model.element.TypeElement> all;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljavax/lang/model/element/TypeElement;>;

  private final java.util.HashMap<java.lang.String, javax.lang.model.element.PackageElement> modules;
    descriptor: Ljava/util/HashMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/HashMap<Ljava/lang/String;Ljavax/lang/model/element/PackageElement;>;

  private final javax.annotation.processing.ProcessingEnvironment env;
    descriptor: Ljavax/annotation/processing/ProcessingEnvironment;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.lang.model.util.Elements elementUtils;
    descriptor: Ljavax/lang/model/util/Elements;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.lang.model.util.Types typeUtils;
    descriptor: Ljavax/lang/model/util/Types;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.vertx.codegen.type.TypeMirrorFactory tmf;
    descriptor: Lio/vertx/codegen/type/TypeMirrorFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<io.vertx.codegen.CodeGen$Converter> converters;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lio/vertx/codegen/CodeGen$Converter;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=4, args_size=0
         0: .line 34
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 0 /* list */
        start local 0 // java.util.List list
         1: .line 35
            aload 0 /* list */
            getstatic io.vertx.codegen.ModelProvider.CLASS:Lio/vertx/codegen/ModelProvider;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 36
            aload 0 /* list */
            getstatic io.vertx.codegen.ModelProvider.DATA_OBJECT:Lio/vertx/codegen/ModelProvider;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 37
            aload 0 /* list */
            getstatic io.vertx.codegen.ModelProvider.ENUM:Lio/vertx/codegen/ModelProvider;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 39
            ldc Lio/vertx/codegen/ModelProvider;
            ldc Lio/vertx/codegen/ModelProvider;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
            astore 1 /* loader */
        start local 1 // java.util.ServiceLoader loader
         5: .line 40
            aload 1 /* loader */
            invokevirtual java.util.ServiceLoader.iterator:()Ljava/util/Iterator;
            astore 3
            goto 8
      StackMap locals: java.util.List java.util.ServiceLoader top java.util.Iterator
      StackMap stack:
         6: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.codegen.ModelProvider
            astore 2 /* aLoader */
        start local 2 // io.vertx.codegen.ModelProvider aLoader
         7: .line 41
            aload 0 /* list */
            aload 2 /* aLoader */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // io.vertx.codegen.ModelProvider aLoader
         8: .line 40
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 1 // java.util.ServiceLoader loader
         9: .line 43
            goto 12
      StackMap locals: java.util.List
      StackMap stack: java.lang.Exception
        10: astore 1 /* e */
        start local 1 // java.lang.Exception e
        11: .line 44
            aload 1 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        end local 1 // java.lang.Exception e
        12: .line 46
      StackMap locals:
      StackMap stack:
            aload 0 /* list */
            putstatic io.vertx.codegen.CodeGen.PROVIDERS:Ljava/util/List;
        end local 0 // java.util.List list
        13: .line 49
            ldc Lio/vertx/codegen/CodeGen;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
            putstatic io.vertx.codegen.CodeGen.logger:Ljava/util/logging/Logger;
        14: .line 50
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            putstatic io.vertx.codegen.CodeGen.loaderMap:Ljava/util/Map;
            return
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            1   13     0     list  Ljava/util/List<Lio/vertx/codegen/ModelProvider;>;
            5    9     1   loader  Ljava/util/ServiceLoader<Lio/vertx/codegen/ModelProvider;>;
            7    8     2  aLoader  Lio/vertx/codegen/ModelProvider;
           11   12     1        e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           4     9      10  Class java.lang.Exception

  public void <init>(javax.annotation.processing.ProcessingEnvironment);
    descriptor: (Ljavax/annotation/processing/ProcessingEnvironment;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // javax.annotation.processing.ProcessingEnvironment env
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.vertx.codegen.CodeGen.models:Ljava/util/Map;
         2: .line 53
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putfield io.vertx.codegen.CodeGen.all:Ljava/util/Set;
         3: .line 55
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.vertx.codegen.CodeGen.modules:Ljava/util/HashMap;
         4: .line 60
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield io.vertx.codegen.CodeGen.converters:Ljava/util/List;
         5: .line 63
            aload 0 /* this */
            aload 1 /* env */
            putfield io.vertx.codegen.CodeGen.env:Ljavax/annotation/processing/ProcessingEnvironment;
         6: .line 64
            aload 0 /* this */
            aload 1 /* env */
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getElementUtils:()Ljavax/lang/model/util/Elements;
            putfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
         7: .line 65
            aload 0 /* this */
            aload 1 /* env */
            invokeinterface javax.annotation.processing.ProcessingEnvironment.getTypeUtils:()Ljavax/lang/model/util/Types;
            putfield io.vertx.codegen.CodeGen.typeUtils:Ljavax/lang/model/util/Types;
         8: .line 66
            aload 0 /* this */
            new io.vertx.codegen.type.TypeMirrorFactory
            dup
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.typeUtils:Ljavax/lang/model/util/Types;
            invokespecial io.vertx.codegen.type.TypeMirrorFactory.<init>:(Ljavax/lang/model/util/Elements;Ljavax/lang/model/util/Types;)V
            putfield io.vertx.codegen.CodeGen.tmf:Lio/vertx/codegen/type/TypeMirrorFactory;
         9: .line 67
            return
        end local 1 // javax.annotation.processing.ProcessingEnvironment env
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lio/vertx/codegen/CodeGen;
            0   10     1   env  Ljavax/annotation/processing/ProcessingEnvironment;
    MethodParameters:
      Name  Flags
      env   

  public void init(javax.annotation.processing.RoundEnvironment, java.lang.ClassLoader);
    descriptor: (Ljavax/annotation/processing/RoundEnvironment;Ljava/lang/ClassLoader;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // javax.annotation.processing.RoundEnvironment round
        start local 2 // java.lang.ClassLoader loader
         0: .line 70
            getstatic io.vertx.codegen.CodeGen.loaderMap:Ljava/util/Map;
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.env:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 2 /* loader */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 71
            aload 0 /* this */
            invokedynamic test(Lio/vertx/codegen/CodeGen;)Ljava/util/function/Predicate;
              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;)Z
                  io/vertx/codegen/CodeGen.lambda$0(Ljavax/lang/model/element/Element;)Z (7)
                  (Ljavax/lang/model/element/Element;)Z
            astore 3 /* implFilter */
        start local 3 // java.util.function.Predicate implFilter
         2: .line 84
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.converters:Ljava/util/List;
            aload 0 /* this */
            invokedynamic accept(Lio/vertx/codegen/CodeGen;)Ljava/util/function/Consumer;
              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
                  io/vertx/codegen/CodeGen.lambda$1(Lio/vertx/codegen/CodeGen$Converter;)V (7)
                  (Lio/vertx/codegen/CodeGen$Converter;)V
            invokeinterface java.util.List.forEach:(Ljava/util/function/Consumer;)V
         3: .line 114
            aload 1 /* round */
            invokeinterface javax.annotation.processing.RoundEnvironment.getRootElements:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         4: .line 115
            aload 3 /* implFilter */
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         5: .line 116
            invokedynamic test()Ljava/util/function/Predicate;
              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;)Z
                  io/vertx/codegen/CodeGen.lambda$2(Ljavax/lang/model/element/Element;)Z (6)
                  (Ljavax/lang/model/element/Element;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         6: .line 117
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/codegen/CodeGen.lambda$3(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/TypeElement; (6)
                  (Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/TypeElement;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            aload 0 /* this */
            invokedynamic accept(Lio/vertx/codegen/CodeGen;)Ljava/util/function/Consumer;
              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
                  io/vertx/codegen/CodeGen.lambda$4(Ljavax/lang/model/element/TypeElement;)V (7)
                  (Ljavax/lang/model/element/TypeElement;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
         7: .line 129
            aload 1 /* round */
            ldc Lio/vertx/codegen/annotations/ModuleGen;
            invokeinterface javax.annotation.processing.RoundEnvironment.getElementsAnnotatedWith:(Ljava/lang/Class;)Ljava/util/Set;
         8: .line 130
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         9: .line 131
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/codegen/CodeGen.lambda$7(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/PackageElement; (6)
                  (Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/PackageElement;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        10: .line 132
            aload 0 /* this */
            invokedynamic accept(Lio/vertx/codegen/CodeGen;)Ljava/util/function/Consumer;
              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
                  io/vertx/codegen/CodeGen.lambda$8(Ljavax/lang/model/element/PackageElement;)V (7)
                  (Ljavax/lang/model/element/PackageElement;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
        11: .line 133
            return
        end local 3 // java.util.function.Predicate implFilter
        end local 2 // java.lang.ClassLoader loader
        end local 1 // javax.annotation.processing.RoundEnvironment round
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lio/vertx/codegen/CodeGen;
            0   12     1       round  Ljavax/annotation/processing/RoundEnvironment;
            0   12     2      loader  Ljava/lang/ClassLoader;
            2   12     3  implFilter  Ljava/util/function/Predicate<Ljavax/lang/model/element/Element;>;
    MethodParameters:
        Name  Flags
      round   
      loader  

  private io.vertx.codegen.CodeGen$Resolved resolveMember(javax.lang.model.element.Element, javax.lang.model.type.TypeMirror, java.lang.String);
    descriptor: (Ljavax/lang/model/element/Element;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lio/vertx/codegen/CodeGen$Resolved;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // javax.lang.model.element.Element elt
        start local 2 // javax.lang.model.type.TypeMirror type
        start local 3 // java.lang.String member
         0: .line 153
            aload 2 /* type */
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            astore 4 /* kind */
        start local 4 // javax.lang.model.type.TypeKind kind
         1: .line 154
            aload 4 /* kind */
            getstatic javax.lang.model.type.TypeKind.DECLARED:Ljavax/lang/model/type/TypeKind;
            if_acmpne 12
         2: .line 156
            aload 2 /* type */
            checkcast javax.lang.model.type.DeclaredType
            astore 5 /* declaredType */
        start local 5 // javax.lang.model.type.DeclaredType declaredType
         3: .line 157
            aload 5 /* declaredType */
         4: .line 158
            invokeinterface javax.lang.model.type.DeclaredType.asElement:()Ljavax/lang/model/element/Element;
         5: .line 159
            invokeinterface javax.lang.model.element.Element.getEnclosedElements:()Ljava/util/List;
         6: .line 160
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
         7: .line 161
            aload 3 /* member */
            invokedynamic test(Ljava/lang/String;)Ljava/util/function/Predicate;
              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;)Z
                  io/vertx/codegen/CodeGen.lambda$9(Ljava/lang/String;Ljavax/lang/model/element/Element;)Z (6)
                  (Ljavax/lang/model/element/Element;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         8: .line 162
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
         9: .line 163
            aload 0 /* this */
            aload 5 /* declaredType */
            invokedynamic apply(Lio/vertx/codegen/CodeGen;Ljavax/lang/model/type/DeclaredType;)Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/codegen/CodeGen.lambda$10(Ljavax/lang/model/type/DeclaredType;Ljavax/lang/model/element/Element;)Lio/vertx/codegen/CodeGen$Resolved; (7)
                  (Ljavax/lang/model/element/Element;)Lio/vertx/codegen/CodeGen$Resolved;
            invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
        10: .line 164
            aload 1 /* elt */
            aload 3 /* member */
            aload 2 /* type */
            invokedynamic get(Ljavax/lang/model/element/Element;Ljava/lang/String;Ljavax/lang/model/type/TypeMirror;)Ljava/util/function/Supplier;
              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/codegen/CodeGen.lambda$11(Ljavax/lang/model/element/Element;Ljava/lang/String;Ljavax/lang/model/type/TypeMirror;)Lio/vertx/codegen/GenException; (6)
                  ()Lio/vertx/codegen/GenException;
            invokevirtual java.util.Optional.orElseThrow:(Ljava/util/function/Supplier;)Ljava/lang/Object;
            checkcast io.vertx.codegen.CodeGen$Resolved
        11: .line 157
            areturn
        end local 5 // javax.lang.model.type.DeclaredType declaredType
        12: .line 166
      StackMap locals: javax.lang.model.type.TypeKind
      StackMap stack:
            new io.vertx.codegen.GenException
            dup
            aload 1 /* elt */
            ldc "Only declared element are supported"
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            athrow
        end local 4 // javax.lang.model.type.TypeKind kind
        end local 3 // java.lang.String member
        end local 2 // javax.lang.model.type.TypeMirror type
        end local 1 // javax.lang.model.element.Element elt
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0          this  Lio/vertx/codegen/CodeGen;
            0   13     1           elt  Ljavax/lang/model/element/Element;
            0   13     2          type  Ljavax/lang/model/type/TypeMirror;
            0   13     3        member  Ljava/lang/String;
            1   13     4          kind  Ljavax/lang/model/type/TypeKind;
            3   12     5  declaredType  Ljavax/lang/model/type/DeclaredType;
    MethodParameters:
        Name  Flags
      elt     
      type    
      member  

  private void processConverter(javax.lang.model.element.TypeElement, javax.lang.model.type.TypeMirror, java.util.List<java.lang.String>, javax.lang.model.type.ExecutableType);
    descriptor: (Ljavax/lang/model/element/TypeElement;Ljavax/lang/model/type/TypeMirror;Ljava/util/List;Ljavax/lang/model/type/ExecutableType;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=5
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // javax.lang.model.element.TypeElement converterElt
        start local 2 // javax.lang.model.type.TypeMirror dataObjectType
        start local 3 // java.util.List selectors
        start local 4 // javax.lang.model.type.ExecutableType methodType
         0: .line 170
            aload 4 /* methodType */
            invokeinterface javax.lang.model.type.ExecutableType.getParameterTypes:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpge 2
         1: .line 171
            new io.vertx.codegen.GenException
            dup
            aload 1 /* converterElt */
            ldc "Annotated method mapper cannot have empty arguments"
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            athrow
         2: .line 173
      StackMap locals:
      StackMap stack:
            aload 4 /* methodType */
            invokeinterface javax.lang.model.type.ExecutableType.getParameterTypes:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmple 4
         3: .line 174
            new io.vertx.codegen.GenException
            dup
            aload 1 /* converterElt */
            ldc "Annotated method mapper must have one argument"
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            athrow
         4: .line 176
      StackMap locals:
      StackMap stack:
            aload 4 /* methodType */
            invokeinterface javax.lang.model.type.ExecutableType.getParameterTypes:()Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.lang.model.type.TypeMirror
            astore 5 /* paramType */
        start local 5 // javax.lang.model.type.TypeMirror paramType
         5: .line 177
            aload 5 /* paramType */
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            ldc "java.lang.CharSequence"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 180
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
            ldc "java.lang.String"
            invokeinterface javax.lang.model.util.Elements.getTypeElement:(Ljava/lang/CharSequence;)Ljavax/lang/model/element/TypeElement;
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            astore 5 /* paramType */
         7: .line 182
      StackMap locals: javax.lang.model.type.TypeMirror
      StackMap stack:
            aload 4 /* methodType */
            invokeinterface javax.lang.model.type.ExecutableType.getReturnType:()Ljavax/lang/model/type/TypeMirror;
            astore 6 /* returnType */
        start local 6 // javax.lang.model.type.TypeMirror returnType
         8: .line 183
            aload 5 /* paramType */
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            iconst_0
            invokestatic io.vertx.codegen.type.ClassKind.getKind:(Ljava/lang/String;Z)Lio/vertx/codegen/type/ClassKind;
            astore 7 /* paramKind */
        start local 7 // io.vertx.codegen.type.ClassKind paramKind
         9: .line 184
            aload 6 /* returnType */
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            iconst_0
            invokestatic io.vertx.codegen.type.ClassKind.getKind:(Ljava/lang/String;Z)Lio/vertx/codegen/type/ClassKind;
            astore 8 /* returnKind */
        start local 8 // io.vertx.codegen.type.ClassKind returnKind
        10: .line 185
            aload 7 /* paramKind */
            getfield io.vertx.codegen.type.ClassKind.json:Z
            ifne 11
            aload 7 /* paramKind */
            getfield io.vertx.codegen.type.ClassKind.basic:Z
            ifne 11
            aload 7 /* paramKind */
            getstatic io.vertx.codegen.type.ClassKind.OBJECT:Lio/vertx/codegen/type/ClassKind;
            if_acmpne 20
        11: .line 186
      StackMap locals: javax.lang.model.type.TypeMirror io.vertx.codegen.type.ClassKind io.vertx.codegen.type.ClassKind
      StackMap stack:
            new io.vertx.codegen.type.MapperInfo
            dup
            invokespecial io.vertx.codegen.type.MapperInfo.<init>:()V
            astore 9 /* mapper */
        start local 9 // io.vertx.codegen.type.MapperInfo mapper
        12: .line 187
            aload 9 /* mapper */
            aload 1 /* converterElt */
            invokeinterface javax.lang.model.element.TypeElement.getQualifiedName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            invokevirtual io.vertx.codegen.type.MapperInfo.setQualifiedName:(Ljava/lang/String;)V
        13: .line 188
            aload 9 /* mapper */
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.tmf:Lio/vertx/codegen/type/TypeMirrorFactory;
            aload 5 /* paramType */
            invokevirtual io.vertx.codegen.type.TypeMirrorFactory.create:(Ljavax/lang/model/type/TypeMirror;)Lio/vertx/codegen/type/TypeInfo;
            invokevirtual io.vertx.codegen.type.MapperInfo.setTargetType:(Lio/vertx/codegen/type/TypeInfo;)V
        14: .line 189
            aload 9 /* mapper */
            aload 3 /* selectors */
            invokevirtual io.vertx.codegen.type.MapperInfo.setSelectors:(Ljava/util/List;)V
        15: .line 190
            aload 9 /* mapper */
            getstatic io.vertx.codegen.MapperKind.STATIC_METHOD:Lio/vertx/codegen/MapperKind;
            invokevirtual io.vertx.codegen.type.MapperInfo.setKind:(Lio/vertx/codegen/MapperKind;)V
        16: .line 191
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.typeUtils:Ljavax/lang/model/util/Types;
            aload 6 /* returnType */
            aload 2 /* dataObjectType */
            invokeinterface javax.lang.model.util.Types.isSubtype:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifne 18
        17: .line 192
            new io.vertx.codegen.GenException
            dup
            aload 1 /* converterElt */
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 4 /* methodType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " return should be the same or extend "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* dataObjectType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            athrow
        18: .line 194
      StackMap locals: io.vertx.codegen.type.MapperInfo
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.tmf:Lio/vertx/codegen/type/TypeMirrorFactory;
            aload 1 /* converterElt */
            aload 2 /* dataObjectType */
            aload 9 /* mapper */
            invokevirtual io.vertx.codegen.type.TypeMirrorFactory.addDataObjectDeserializer:(Ljavax/lang/model/element/Element;Ljavax/lang/model/type/TypeMirror;Lio/vertx/codegen/type/MapperInfo;)V
        end local 9 // io.vertx.codegen.type.MapperInfo mapper
        19: .line 195
            goto 31
      StackMap locals:
      StackMap stack:
        20: aload 8 /* returnKind */
            getfield io.vertx.codegen.type.ClassKind.json:Z
            ifne 21
            aload 8 /* returnKind */
            getfield io.vertx.codegen.type.ClassKind.basic:Z
            ifne 21
            aload 8 /* returnKind */
            getstatic io.vertx.codegen.type.ClassKind.OBJECT:Lio/vertx/codegen/type/ClassKind;
            if_acmpne 30
        21: .line 196
      StackMap locals:
      StackMap stack:
            new io.vertx.codegen.type.MapperInfo
            dup
            invokespecial io.vertx.codegen.type.MapperInfo.<init>:()V
            astore 9 /* mapper */
        start local 9 // io.vertx.codegen.type.MapperInfo mapper
        22: .line 197
            aload 9 /* mapper */
            aload 1 /* converterElt */
            invokeinterface javax.lang.model.element.TypeElement.getQualifiedName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            invokevirtual io.vertx.codegen.type.MapperInfo.setQualifiedName:(Ljava/lang/String;)V
        23: .line 198
            aload 9 /* mapper */
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.tmf:Lio/vertx/codegen/type/TypeMirrorFactory;
            aload 6 /* returnType */
            invokevirtual io.vertx.codegen.type.TypeMirrorFactory.create:(Ljavax/lang/model/type/TypeMirror;)Lio/vertx/codegen/type/TypeInfo;
            invokevirtual io.vertx.codegen.type.MapperInfo.setTargetType:(Lio/vertx/codegen/type/TypeInfo;)V
        24: .line 199
            aload 9 /* mapper */
            aload 3 /* selectors */
            invokevirtual io.vertx.codegen.type.MapperInfo.setSelectors:(Ljava/util/List;)V
        25: .line 200
            aload 9 /* mapper */
            getstatic io.vertx.codegen.MapperKind.STATIC_METHOD:Lio/vertx/codegen/MapperKind;
            invokevirtual io.vertx.codegen.type.MapperInfo.setKind:(Lio/vertx/codegen/MapperKind;)V
        26: .line 201
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.typeUtils:Ljavax/lang/model/util/Types;
            aload 2 /* dataObjectType */
            aload 5 /* paramType */
            invokeinterface javax.lang.model.util.Types.isSubtype:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifne 28
        27: .line 202
            new io.vertx.codegen.GenException
            dup
            aload 1 /* converterElt */
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 4 /* methodType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " parameter should be the same or be a super type of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* dataObjectType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            athrow
        28: .line 204
      StackMap locals: io.vertx.codegen.type.MapperInfo
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.tmf:Lio/vertx/codegen/type/TypeMirrorFactory;
            aload 1 /* converterElt */
            aload 2 /* dataObjectType */
            aload 9 /* mapper */
            invokevirtual io.vertx.codegen.type.TypeMirrorFactory.addDataObjectSerializer:(Ljavax/lang/model/element/Element;Ljavax/lang/model/type/TypeMirror;Lio/vertx/codegen/type/MapperInfo;)V
        end local 9 // io.vertx.codegen.type.MapperInfo mapper
        29: .line 205
            goto 31
        30: .line 206
      StackMap locals:
      StackMap stack:
            new io.vertx.codegen.GenException
            dup
            aload 1 /* converterElt */
            ldc "Mapper method does not declare a JSON type"
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            athrow
        31: .line 208
      StackMap locals:
      StackMap stack:
            return
        end local 8 // io.vertx.codegen.type.ClassKind returnKind
        end local 7 // io.vertx.codegen.type.ClassKind paramKind
        end local 6 // javax.lang.model.type.TypeMirror returnType
        end local 5 // javax.lang.model.type.TypeMirror paramType
        end local 4 // javax.lang.model.type.ExecutableType methodType
        end local 3 // java.util.List selectors
        end local 2 // javax.lang.model.type.TypeMirror dataObjectType
        end local 1 // javax.lang.model.element.TypeElement converterElt
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   32     0            this  Lio/vertx/codegen/CodeGen;
            0   32     1    converterElt  Ljavax/lang/model/element/TypeElement;
            0   32     2  dataObjectType  Ljavax/lang/model/type/TypeMirror;
            0   32     3       selectors  Ljava/util/List<Ljava/lang/String;>;
            0   32     4      methodType  Ljavax/lang/model/type/ExecutableType;
            5   32     5       paramType  Ljavax/lang/model/type/TypeMirror;
            8   32     6      returnType  Ljavax/lang/model/type/TypeMirror;
            9   32     7       paramKind  Lio/vertx/codegen/type/ClassKind;
           10   32     8      returnKind  Lio/vertx/codegen/type/ClassKind;
           12   19     9          mapper  Lio/vertx/codegen/type/MapperInfo;
           22   29     9          mapper  Lio/vertx/codegen/type/MapperInfo;
    Signature: (Ljavax/lang/model/element/TypeElement;Ljavax/lang/model/type/TypeMirror;Ljava/util/List<Ljava/lang/String;>;Ljavax/lang/model/type/ExecutableType;)V
    MethodParameters:
                Name  Flags
      converterElt    
      dataObjectType  
      selectors       
      methodType      

  public void registerConverter(io.vertx.codegen.CodeGen$Converter);
    descriptor: (Lio/vertx/codegen/CodeGen$Converter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // io.vertx.codegen.CodeGen$Converter b
         0: .line 227
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.converters:Ljava/util/List;
            aload 1 /* b */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 228
            return
        end local 1 // io.vertx.codegen.CodeGen$Converter b
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/codegen/CodeGen;
            0    2     1     b  Lio/vertx/codegen/CodeGen$Converter;
    MethodParameters:
      Name  Flags
      b     

  public void registerConverter(java.lang.String, java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // java.lang.String className
        start local 2 // java.lang.String serializer
        start local 3 // java.lang.String[] selectors
         0: .line 231
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.converters:Ljava/util/List;
            new io.vertx.codegen.CodeGen$Converter
            dup
            aload 1 /* className */
            aload 2 /* serializer */
            aload 3 /* selectors */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokespecial io.vertx.codegen.CodeGen$Converter.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 232
            return
        end local 3 // java.lang.String[] selectors
        end local 2 // java.lang.String serializer
        end local 1 // java.lang.String className
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lio/vertx/codegen/CodeGen;
            0    2     1   className  Ljava/lang/String;
            0    2     2  serializer  Ljava/lang/String;
            0    2     3   selectors  [Ljava/lang/String;
    MethodParameters:
            Name  Flags
      className   
      serializer  
      selectors   

  public java.util.stream.Stream<java.util.Map$Entry<? extends javax.lang.model.element.Element, ? extends io.vertx.codegen.Model>> getModels();
    descriptor: ()Ljava/util/stream/Stream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // io.vertx.codegen.CodeGen this
         0: .line 235
            invokestatic java.util.stream.Stream.empty:()Ljava/util/stream/Stream;
            astore 1 /* s */
        start local 1 // java.util.stream.Stream s
         1: .line 236
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.models:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: io.vertx.codegen.CodeGen java.util.stream.Stream top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map
            astore 2 /* m */
        start local 2 // java.util.Map m
         3: .line 237
            aload 1 /* s */
            aload 2 /* m */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.stream:()Ljava/util/stream/Stream;
            invokestatic java.util.stream.Stream.concat:(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
            astore 1 /* s */
        end local 2 // java.util.Map m
         4: .line 236
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 239
            aload 1 /* s */
            aload 0 /* this */
            invokevirtual io.vertx.codegen.CodeGen.getModuleModels:()Ljava/util/stream/Stream;
            aload 0 /* this */
            invokevirtual io.vertx.codegen.CodeGen.getPackageModels:()Ljava/util/stream/Stream;
            invokestatic java.util.stream.Stream.concat:(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
            invokestatic java.util.stream.Stream.concat:(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
            areturn
        end local 1 // java.util.stream.Stream s
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/vertx/codegen/CodeGen;
            1    6     1     s  Ljava/util/stream/Stream<Ljava/util/Map$Entry<+Ljavax/lang/model/element/Element;+Lio/vertx/codegen/Model;>;>;
            3    4     2     m  Ljava/util/Map<Ljava/lang/String;Ljava/util/Map$Entry<Ljavax/lang/model/element/TypeElement;Lio/vertx/codegen/Model;>;>;
    Signature: ()Ljava/util/stream/Stream<Ljava/util/Map$Entry<+Ljavax/lang/model/element/Element;+Lio/vertx/codegen/Model;>;>;

  private java.util.stream.Stream<java.util.Map$Entry<javax.lang.model.element.PackageElement, io.vertx.codegen.PackageModel>> getPackageModels();
    descriptor: ()Ljava/util/stream/Stream;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.codegen.CodeGen this
         0: .line 243
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.all:Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         1: .line 244
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic apply(Ljavax/lang/model/util/Elements;)Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  javax/lang/model/util/Elements.getPackageOf(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/PackageElement; (9 itf)
                  (Ljavax/lang/model/element/TypeElement;)Ljavax/lang/model/element/PackageElement;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.distinct:()Ljava/util/stream/Stream;
         2: .line 245
            aload 0 /* this */
            invokedynamic apply(Lio/vertx/codegen/CodeGen;)Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/codegen/CodeGen.lambda$13(Ljavax/lang/model/element/PackageElement;)Ljava/util/Map$Entry; (7)
                  (Ljavax/lang/model/element/PackageElement;)Ljava/util/Map$Entry;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         3: .line 243
            areturn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/vertx/codegen/CodeGen;
    Signature: ()Ljava/util/stream/Stream<Ljava/util/Map$Entry<Ljavax/lang/model/element/PackageElement;Lio/vertx/codegen/PackageModel;>;>;

  private java.util.stream.Stream<java.util.Map$Entry<javax.lang.model.element.PackageElement, io.vertx.codegen.ModuleModel>> getModuleModels();
    descriptor: ()Ljava/util/stream/Stream;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.vertx.codegen.CodeGen this
         0: .line 253
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.modules:Ljava/util/HashMap;
            invokevirtual java.util.HashMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
            aload 0 /* this */
            invokedynamic apply(Lio/vertx/codegen/CodeGen;)Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/codegen/CodeGen.lambda$15(Ljava/util/Map$Entry;)Ljava/util/Map$Entry; (7)
                  (Ljava/util/Map$Entry;)Ljava/util/Map$Entry;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
            areturn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/codegen/CodeGen;
    Signature: ()Ljava/util/stream/Stream<Ljava/util/Map$Entry<Ljavax/lang/model/element/PackageElement;Lio/vertx/codegen/ModuleModel;>;>;

  public io.vertx.codegen.ModuleModel getModuleModel(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/codegen/ModuleModel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // java.lang.String modulePackage
         0: .line 257
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.modules:Ljava/util/HashMap;
            aload 1 /* modulePackage */
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.lang.model.element.PackageElement
            astore 2 /* element */
        start local 2 // javax.lang.model.element.PackageElement element
         1: .line 258
            new io.vertx.codegen.ModuleModel
            dup
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.typeUtils:Ljavax/lang/model/util/Types;
            aload 2 /* element */
            invokespecial io.vertx.codegen.ModuleModel.<init>:(Ljavax/lang/model/util/Elements;Ljavax/lang/model/util/Types;Ljavax/lang/model/element/PackageElement;)V
            areturn
        end local 2 // javax.lang.model.element.PackageElement element
        end local 1 // java.lang.String modulePackage
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lio/vertx/codegen/CodeGen;
            0    2     1  modulePackage  Ljava/lang/String;
            1    2     2        element  Ljavax/lang/model/element/PackageElement;
    MethodParameters:
               Name  Flags
      modulePackage  

  public io.vertx.codegen.PackageModel getPackageModel(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/codegen/PackageModel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // java.lang.String fqn
         0: .line 262
            aload 0 /* this */
            invokevirtual io.vertx.codegen.CodeGen.getPackageModels:()Ljava/util/stream/Stream;
            aload 1 /* fqn */
            invokedynamic test(Ljava/lang/String;)Ljava/util/function/Predicate;
              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;)Z
                  io/vertx/codegen/CodeGen.lambda$17(Ljava/lang/String;Ljava/util/Map$Entry;)Z (6)
                  (Ljava/util/Map$Entry;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  java/util/Map$Entry.getValue()Ljava/lang/Object; (9 itf)
                  (Ljava/util/Map$Entry;)Lio/vertx/codegen/PackageModel;
            invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.codegen.PackageModel
            areturn
        end local 1 // java.lang.String fqn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/codegen/CodeGen;
            0    1     1   fqn  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      fqn   

  public io.vertx.codegen.Model getModel(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Lio/vertx/codegen/Model;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // java.lang.String fqcn
        start local 2 // java.lang.String kind
         0: .line 266
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.models:Ljava/util/Map;
            aload 2 /* kind */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 3 /* map */
        start local 3 // java.util.Map map
         1: .line 267
            aload 3 /* map */
            ifnonnull 3
         2: .line 268
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Source for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* fqcn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " not found"
            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
         3: .line 270
      StackMap locals: java.util.Map
      StackMap stack:
            aload 3 /* map */
            aload 1 /* fqcn */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 4 /* entry */
        start local 4 // java.util.Map$Entry entry
         4: .line 271
            aload 4 /* entry */
            ifnonnull 6
         5: .line 272
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Source for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* fqcn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " not found"
            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 274
      StackMap locals: java.util.Map$Entry
      StackMap stack:
            aload 4 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast io.vertx.codegen.Model
            areturn
        end local 4 // java.util.Map$Entry entry
        end local 3 // java.util.Map map
        end local 2 // java.lang.String kind
        end local 1 // java.lang.String fqcn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lio/vertx/codegen/CodeGen;
            0    7     1   fqcn  Ljava/lang/String;
            0    7     2   kind  Ljava/lang/String;
            1    7     3    map  Ljava/util/Map<Ljava/lang/String;Ljava/util/Map$Entry<Ljavax/lang/model/element/TypeElement;Lio/vertx/codegen/Model;>;>;
            4    7     4  entry  Ljava/util/Map$Entry<Ljavax/lang/model/element/TypeElement;Lio/vertx/codegen/Model;>;
    MethodParameters:
      Name  Flags
      fqcn  
      kind  

  public io.vertx.codegen.ClassModel getClassModel(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/codegen/ClassModel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // java.lang.String fqcn
         0: .line 278
            aload 0 /* this */
            aload 1 /* fqcn */
            ldc "class"
            invokevirtual io.vertx.codegen.CodeGen.getModel:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/codegen/Model;
            checkcast io.vertx.codegen.ClassModel
            areturn
        end local 1 // java.lang.String fqcn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/codegen/CodeGen;
            0    1     1  fqcn  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      fqcn  

  public io.vertx.codegen.EnumModel getEnumModel(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/codegen/EnumModel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // java.lang.String fqcn
         0: .line 282
            aload 0 /* this */
            aload 1 /* fqcn */
            ldc "enum"
            invokevirtual io.vertx.codegen.CodeGen.getModel:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/codegen/Model;
            checkcast io.vertx.codegen.EnumModel
            areturn
        end local 1 // java.lang.String fqcn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/codegen/CodeGen;
            0    1     1  fqcn  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      fqcn  

  public io.vertx.codegen.DataObjectModel getDataObjectModel(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/codegen/DataObjectModel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // java.lang.String fqcn
         0: .line 286
            aload 0 /* this */
            aload 1 /* fqcn */
            ldc "dataObject"
            invokevirtual io.vertx.codegen.CodeGen.getModel:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/codegen/Model;
            checkcast io.vertx.codegen.DataObjectModel
            areturn
        end local 1 // java.lang.String fqcn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/codegen/CodeGen;
            0    1     1  fqcn  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      fqcn  

  private boolean lambda$0(javax.lang.model.element.Element);
    descriptor: (Ljavax/lang/model/element/Element;)Z
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // javax.lang.model.element.Element elt
         0: .line 74
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
            aload 1 /* elt */
            invokeinterface javax.lang.model.util.Elements.getPackageOf:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/PackageElement;
            astore 2 /* pkg */
        start local 2 // javax.lang.model.element.PackageElement pkg
         1: .line 75
            goto 4
        end local 2 // javax.lang.model.element.PackageElement pkg
      StackMap locals:
      StackMap stack: java.lang.NullPointerException
         2: pop
         3: .line 77
            iconst_1
            ireturn
        start local 2 // javax.lang.model.element.PackageElement pkg
         4: .line 79
      StackMap locals: javax.lang.model.element.PackageElement
      StackMap stack:
            aload 2 /* pkg */
            invokeinterface javax.lang.model.element.PackageElement.getQualifiedName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            astore 3 /* fqn */
        start local 3 // java.lang.String fqn
         5: .line 80
            aload 3 /* fqn */
            ldc ".impl."
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 6
            aload 3 /* fqn */
            ldc ".impl"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 6
            iconst_1
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
         6: iconst_0
            ireturn
        end local 3 // java.lang.String fqn
        end local 2 // javax.lang.model.element.PackageElement pkg
        end local 1 // javax.lang.model.element.Element elt
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lio/vertx/codegen/CodeGen;
            0    7     1   elt  Ljavax/lang/model/element/Element;
            1    2     2   pkg  Ljavax/lang/model/element/PackageElement;
            4    7     2   pkg  Ljavax/lang/model/element/PackageElement;
            5    7     3   fqn  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NullPointerException

  private void lambda$1(io.vertx.codegen.CodeGen$Converter);
    descriptor: (Lio/vertx/codegen/CodeGen$Converter;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // io.vertx.codegen.CodeGen$Converter converter
         0: .line 85
            aconst_null
            astore 2 /* type */
        start local 2 // javax.lang.model.type.TypeMirror type
         1: .line 86
            aload 1 /* converter */
            getfield io.vertx.codegen.CodeGen$Converter.className:Ljava/lang/String;
            ifnull 5
         2: .line 87
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
            aload 1 /* converter */
            getfield io.vertx.codegen.CodeGen$Converter.className:Ljava/lang/String;
            invokeinterface javax.lang.model.util.Elements.getTypeElement:(Ljava/lang/CharSequence;)Ljavax/lang/model/element/TypeElement;
            astore 3 /* typeElt */
        start local 3 // javax.lang.model.element.TypeElement typeElt
         3: .line 88
            aload 3 /* typeElt */
            ifnull 5
         4: .line 89
            aload 3 /* typeElt */
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            astore 2 /* type */
        end local 3 // javax.lang.model.element.TypeElement typeElt
         5: .line 92
      StackMap locals: javax.lang.model.type.TypeMirror
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
            aload 1 /* converter */
            getfield io.vertx.codegen.CodeGen$Converter.converter:Ljava/lang/String;
            invokeinterface javax.lang.model.util.Elements.getTypeElement:(Ljava/lang/CharSequence;)Ljavax/lang/model/element/TypeElement;
            astore 3 /* converterElt */
        start local 3 // javax.lang.model.element.TypeElement converterElt
         6: .line 93
            aload 3 /* converterElt */
            ifnonnull 8
         7: .line 94
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot load "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* converter */
            getfield io.vertx.codegen.CodeGen$Converter.converter:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " converter class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 96
      StackMap locals: javax.lang.model.element.TypeElement
      StackMap stack:
            aload 3 /* converterElt */
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            astore 4 /* converterType */
        start local 4 // javax.lang.model.type.TypeMirror converterType
         9: .line 97
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        10: goto 20
        11: .line 98
      StackMap locals: javax.lang.model.type.TypeMirror int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* converterElt */
            aload 4 /* converterType */
            aload 1 /* converter */
            getfield io.vertx.codegen.CodeGen$Converter.selectors:Ljava/util/List;
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual io.vertx.codegen.CodeGen.resolveMember:(Ljavax/lang/model/element/Element;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lio/vertx/codegen/CodeGen$Resolved;
            astore 6 /* next */
        start local 6 // io.vertx.codegen.CodeGen$Resolved next
        12: .line 99
            aload 6 /* next */
            getfield io.vertx.codegen.CodeGen$Resolved.element:Ljavax/lang/model/element/Element;
            astore 7 /* nextElt */
        start local 7 // javax.lang.model.element.Element nextElt
        13: .line 100
            aload 7 /* nextElt */
            invokeinterface javax.lang.model.element.Element.getModifiers:()Ljava/util/Set;
            astore 8 /* modifiers */
        start local 8 // java.util.Set modifiers
        14: .line 101
            aload 8 /* modifiers */
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 16
        15: .line 102
            new io.vertx.codegen.GenException
            dup
            aload 3 /* converterElt */
            ldc "Annotated mapper element must be public"
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            athrow
        16: .line 104
      StackMap locals: io.vertx.codegen.CodeGen$Resolved javax.lang.model.element.Element java.util.Set
      StackMap stack:
            iload 5 /* i */
            ifne 18
            aload 8 /* modifiers */
            getstatic javax.lang.model.element.Modifier.STATIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 18
        17: .line 105
            new io.vertx.codegen.GenException
            dup
            aload 3 /* converterElt */
            ldc "Annotated mapper element must be static"
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            athrow
        18: .line 107
      StackMap locals:
      StackMap stack:
            aload 6 /* next */
            getfield io.vertx.codegen.CodeGen$Resolved.type:Ljavax/lang/model/type/TypeMirror;
            astore 4 /* converterType */
        end local 8 // java.util.Set modifiers
        end local 7 // javax.lang.model.element.Element nextElt
        end local 6 // io.vertx.codegen.CodeGen$Resolved next
        19: .line 97
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 5 /* i */
            aload 1 /* converter */
            getfield io.vertx.codegen.CodeGen$Converter.selectors:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 11
        end local 5 // int i
        21: .line 109
            aload 4 /* converterType */
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            getstatic javax.lang.model.type.TypeKind.EXECUTABLE:Ljavax/lang/model/type/TypeKind;
            if_acmpne 24
        22: .line 110
            aload 4 /* converterType */
            checkcast javax.lang.model.type.ExecutableType
            astore 5 /* execType */
        start local 5 // javax.lang.model.type.ExecutableType execType
        23: .line 111
            aload 0 /* this */
            aload 3 /* converterElt */
            aload 2 /* type */
            aload 1 /* converter */
            getfield io.vertx.codegen.CodeGen$Converter.selectors:Ljava/util/List;
            aload 5 /* execType */
            invokevirtual io.vertx.codegen.CodeGen.processConverter:(Ljavax/lang/model/element/TypeElement;Ljavax/lang/model/type/TypeMirror;Ljava/util/List;Ljavax/lang/model/type/ExecutableType;)V
        end local 5 // javax.lang.model.type.ExecutableType execType
        end local 4 // javax.lang.model.type.TypeMirror converterType
        end local 3 // javax.lang.model.element.TypeElement converterElt
        end local 2 // javax.lang.model.type.TypeMirror type
        24: .line 113
      StackMap locals: io.vertx.codegen.CodeGen io.vertx.codegen.CodeGen$Converter
      StackMap stack:
            return
        end local 1 // io.vertx.codegen.CodeGen$Converter converter
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   25     0           this  Lio/vertx/codegen/CodeGen;
            0   25     1      converter  Lio/vertx/codegen/CodeGen$Converter;
            1   24     2           type  Ljavax/lang/model/type/TypeMirror;
            3    5     3        typeElt  Ljavax/lang/model/element/TypeElement;
            6   24     3   converterElt  Ljavax/lang/model/element/TypeElement;
            9   24     4  converterType  Ljavax/lang/model/type/TypeMirror;
           10   21     5              i  I
           12   19     6           next  Lio/vertx/codegen/CodeGen$Resolved;
           13   19     7        nextElt  Ljavax/lang/model/element/Element;
           14   19     8      modifiers  Ljava/util/Set<Ljavax/lang/model/element/Modifier;>;
           23   24     5       execType  Ljavax/lang/model/type/ExecutableType;

  private static boolean lambda$2(javax.lang.model.element.Element);
    descriptor: (Ljavax/lang/model/element/Element;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.lang.model.element.Element elt
         0: .line 116
            aload 0 /* elt */
            instanceof javax.lang.model.element.TypeElement
            ireturn
        end local 0 // javax.lang.model.element.Element elt
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   elt  Ljavax/lang/model/element/Element;

  private static javax.lang.model.element.TypeElement lambda$3(javax.lang.model.element.Element);
    descriptor: (Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/TypeElement;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.lang.model.element.Element elt
         0: .line 117
            aload 0 /* elt */
            checkcast javax.lang.model.element.TypeElement
            areturn
        end local 0 // javax.lang.model.element.Element elt
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   elt  Ljavax/lang/model/element/Element;

  private void lambda$4(javax.lang.model.element.TypeElement);
    descriptor: (Ljavax/lang/model/element/TypeElement;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // javax.lang.model.element.TypeElement te
         0: .line 118
            getstatic io.vertx.codegen.CodeGen.PROVIDERS:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 9
      StackMap locals: io.vertx.codegen.CodeGen javax.lang.model.element.TypeElement top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.codegen.ModelProvider
            astore 2 /* provider */
        start local 2 // io.vertx.codegen.ModelProvider provider
         2: .line 119
            aload 2 /* provider */
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.env:Ljavax/annotation/processing/ProcessingEnvironment;
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.tmf:Lio/vertx/codegen/type/TypeMirrorFactory;
            aload 1 /* te */
            invokeinterface io.vertx.codegen.ModelProvider.getModel:(Ljavax/annotation/processing/ProcessingEnvironment;Lio/vertx/codegen/type/TypeMirrorFactory;Ljavax/lang/model/element/TypeElement;)Lio/vertx/codegen/Model;
            astore 4 /* model */
        start local 4 // io.vertx.codegen.Model model
         3: .line 120
            aload 4 /* model */
            ifnull 9
         4: .line 121
            aload 4 /* model */
            invokeinterface io.vertx.codegen.Model.getKind:()Ljava/lang/String;
            astore 5 /* kind */
        start local 5 // java.lang.String kind
         5: .line 122
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.all:Ljava/util/Set;
            aload 1 /* te */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 123
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.models:Ljava/util/Map;
            aload 5 /* kind */
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  io/vertx/codegen/CodeGen.lambda$5(Ljava/lang/String;)Ljava/util/Map; (6)
                  (Ljava/lang/String;)Ljava/util/Map;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 6 /* map */
        start local 6 // java.util.Map map
         7: .line 124
            new io.vertx.codegen.CodeGen$ModelEntry
            dup
            aload 1 /* te */
            aload 4 /* model */
            invokedynamic get(Lio/vertx/codegen/Model;)Ljava/util/function/Supplier;
              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/codegen/CodeGen.lambda$6(Lio/vertx/codegen/Model;)Lio/vertx/codegen/Model; (6)
                  ()Lio/vertx/codegen/Model;
            invokespecial io.vertx.codegen.CodeGen$ModelEntry.<init>:(Ljavax/lang/model/element/Element;Ljava/util/function/Supplier;)V
            astore 7 /* entry */
        start local 7 // io.vertx.codegen.CodeGen$ModelEntry entry
         8: .line 125
            aload 6 /* map */
            aload 1 /* te */
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.toString:()Ljava/lang/String;
            invokestatic io.vertx.codegen.Helper.getNonGenericType:(Ljava/lang/String;)Ljava/lang/String;
            aload 7 /* entry */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // io.vertx.codegen.CodeGen$ModelEntry entry
        end local 6 // java.util.Map map
        end local 5 // java.lang.String kind
        end local 4 // io.vertx.codegen.Model model
        end local 2 // io.vertx.codegen.ModelProvider provider
         9: .line 118
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        10: .line 128
            return
        end local 1 // javax.lang.model.element.TypeElement te
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lio/vertx/codegen/CodeGen;
            0   11     1        te  Ljavax/lang/model/element/TypeElement;
            2    9     2  provider  Lio/vertx/codegen/ModelProvider;
            3    9     4     model  Lio/vertx/codegen/Model;
            5    9     5      kind  Ljava/lang/String;
            7    9     6       map  Ljava/util/Map<Ljava/lang/String;Ljava/util/Map$Entry<Ljavax/lang/model/element/TypeElement;Lio/vertx/codegen/Model;>;>;
            8    9     7     entry  Lio/vertx/codegen/CodeGen$ModelEntry<Ljavax/lang/model/element/TypeElement;Lio/vertx/codegen/Model;>;

  private static javax.lang.model.element.PackageElement lambda$7(javax.lang.model.element.Element);
    descriptor: (Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/PackageElement;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.lang.model.element.Element element
         0: .line 131
            aload 0 /* element */
            checkcast javax.lang.model.element.PackageElement
            areturn
        end local 0 // javax.lang.model.element.Element element
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  element  Ljavax/lang/model/element/Element;

  private void lambda$8(javax.lang.model.element.PackageElement);
    descriptor: (Ljavax/lang/model/element/PackageElement;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // javax.lang.model.element.PackageElement element
         0: .line 132
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.modules:Ljava/util/HashMap;
            aload 1 /* element */
            invokeinterface javax.lang.model.element.PackageElement.getQualifiedName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            aload 1 /* element */
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            return
        end local 1 // javax.lang.model.element.PackageElement element
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/vertx/codegen/CodeGen;
            0    1     1  element  Ljavax/lang/model/element/PackageElement;

  private static boolean lambda$9(java.lang.String, javax.lang.model.element.Element);
    descriptor: (Ljava/lang/String;Ljavax/lang/model/element/Element;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // javax.lang.model.element.Element e
         0: .line 161
            aload 1 /* e */
            invokeinterface javax.lang.model.element.Element.getSimpleName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            aload 0
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // javax.lang.model.element.Element e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1     e  Ljavax/lang/model/element/Element;

  private io.vertx.codegen.CodeGen$Resolved lambda$10(javax.lang.model.type.DeclaredType, javax.lang.model.element.Element);
    descriptor: (Ljavax/lang/model/type/DeclaredType;Ljavax/lang/model/element/Element;)Lio/vertx/codegen/CodeGen$Resolved;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // io.vertx.codegen.CodeGen this
        start local 2 // javax.lang.model.element.Element memberElt
         0: .line 163
            new io.vertx.codegen.CodeGen$Resolved
            dup
            aload 2 /* memberElt */
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.typeUtils:Ljavax/lang/model/util/Types;
            aload 1
            aload 2 /* memberElt */
            invokeinterface javax.lang.model.util.Types.asMemberOf:(Ljavax/lang/model/type/DeclaredType;Ljavax/lang/model/element/Element;)Ljavax/lang/model/type/TypeMirror;
            invokespecial io.vertx.codegen.CodeGen$Resolved.<init>:(Ljavax/lang/model/element/Element;Ljavax/lang/model/type/TypeMirror;)V
            areturn
        end local 2 // javax.lang.model.element.Element memberElt
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lio/vertx/codegen/CodeGen;
            0    1     2  memberElt  Ljavax/lang/model/element/Element;

  private static io.vertx.codegen.GenException lambda$11(javax.lang.model.element.Element, java.lang.String, javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/element/Element;Ljava/lang/String;Ljavax/lang/model/type/TypeMirror;)Lio/vertx/codegen/GenException;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=6, locals=3, args_size=3
         0: .line 164
            new io.vertx.codegen.GenException
            dup
            aload 0
            new java.lang.StringBuilder
            dup
            ldc "Cannot find member "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " of type "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial io.vertx.codegen.GenException.<init>:(Ljavax/lang/model/element/Element;Ljava/lang/String;)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private java.util.Map$Entry lambda$13(javax.lang.model.element.PackageElement);
    descriptor: (Ljavax/lang/model/element/PackageElement;)Ljava/util/Map$Entry;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // javax.lang.model.element.PackageElement element
         0: .line 246
            new io.vertx.codegen.CodeGen$ModelEntry
            dup
            aload 1 /* element */
            aload 0 /* this */
            aload 1 /* element */
            invokedynamic get(Lio/vertx/codegen/CodeGen;Ljavax/lang/model/element/PackageElement;)Ljava/util/function/Supplier;
              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/codegen/CodeGen.lambda$14(Ljavax/lang/model/element/PackageElement;)Lio/vertx/codegen/PackageModel; (7)
                  ()Lio/vertx/codegen/PackageModel;
            invokespecial io.vertx.codegen.CodeGen$ModelEntry.<init>:(Ljavax/lang/model/element/Element;Ljava/util/function/Supplier;)V
         1: .line 249
            areturn
        end local 1 // javax.lang.model.element.PackageElement element
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/codegen/CodeGen;
            0    2     1  element  Ljavax/lang/model/element/PackageElement;

  private java.util.Map$Entry lambda$15(java.util.Map$Entry);
    descriptor: (Ljava/util/Map$Entry;)Ljava/util/Map$Entry;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
        start local 1 // java.util.Map$Entry entry
         0: .line 253
            new io.vertx.codegen.CodeGen$ModelEntry
            dup
            aload 1 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast javax.lang.model.element.PackageElement
            aload 0 /* this */
            aload 1 /* entry */
            invokedynamic get(Lio/vertx/codegen/CodeGen;Ljava/util/Map$Entry;)Ljava/util/function/Supplier;
              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/codegen/CodeGen.lambda$16(Ljava/util/Map$Entry;)Lio/vertx/codegen/ModuleModel; (7)
                  ()Lio/vertx/codegen/ModuleModel;
            invokespecial io.vertx.codegen.CodeGen$ModelEntry.<init>:(Ljavax/lang/model/element/Element;Ljava/util/function/Supplier;)V
            areturn
        end local 1 // java.util.Map$Entry entry
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lio/vertx/codegen/CodeGen;
            0    1     1  entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljavax/lang/model/element/PackageElement;>;

  private static boolean lambda$17(java.lang.String, java.util.Map$Entry);
    descriptor: (Ljava/lang/String;Ljava/util/Map$Entry;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.util.Map$Entry pkg
         0: .line 262
            aload 1 /* pkg */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast io.vertx.codegen.PackageModel
            invokevirtual io.vertx.codegen.PackageModel.getFqn:()Ljava/lang/String;
            aload 0
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.util.Map$Entry pkg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1   pkg  Ljava/util/Map$Entry<Ljavax/lang/model/element/PackageElement;Lio/vertx/codegen/PackageModel;>;

  private static java.util.Map lambda$5(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Map;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String a
         0: .line 123
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            areturn
        end local 0 // java.lang.String a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     a  Ljava/lang/String;

  private static io.vertx.codegen.Model lambda$6(io.vertx.codegen.Model);
    descriptor: (Lio/vertx/codegen/Model;)Lio/vertx/codegen/Model;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 124
            aload 0
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private io.vertx.codegen.PackageModel lambda$14(javax.lang.model.element.PackageElement);
    descriptor: (Ljavax/lang/model/element/PackageElement;)Lio/vertx/codegen/PackageModel;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
         0: .line 246
            new io.vertx.codegen.PackageModel
            dup
         1: .line 247
            aload 1
            invokeinterface javax.lang.model.element.PackageElement.getQualifiedName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
         2: .line 248
            aload 0 /* this */
            getfield io.vertx.codegen.CodeGen.elementUtils:Ljavax/lang/model/util/Elements;
            aload 1
            invokestatic io.vertx.codegen.ModuleInfo.resolve:(Ljavax/lang/model/util/Elements;Ljavax/lang/model/element/PackageElement;)Lio/vertx/codegen/ModuleInfo;
         3: .line 246
            invokespecial io.vertx.codegen.PackageModel.<init>:(Ljava/lang/String;Lio/vertx/codegen/ModuleInfo;)V
         4: .line 248
            areturn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/vertx/codegen/CodeGen;

  private io.vertx.codegen.ModuleModel lambda$16(java.util.Map$Entry);
    descriptor: (Ljava/util/Map$Entry;)Lio/vertx/codegen/ModuleModel;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.codegen.CodeGen this
         0: .line 253
            aload 0 /* this */
            aload 1
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual io.vertx.codegen.CodeGen.getModuleModel:(Ljava/lang/String;)Lio/vertx/codegen/ModuleModel;
            areturn
        end local 0 // io.vertx.codegen.CodeGen this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/codegen/CodeGen;
}
SourceFile: "CodeGen.java"
NestMembers:
  io.vertx.codegen.CodeGen$Converter  io.vertx.codegen.CodeGen$ModelEntry  io.vertx.codegen.CodeGen$Resolved
InnerClasses:
  public Converter = io.vertx.codegen.CodeGen$Converter of io.vertx.codegen.CodeGen
  private ModelEntry = io.vertx.codegen.CodeGen$ModelEntry of io.vertx.codegen.CodeGen
  private Resolved = io.vertx.codegen.CodeGen$Resolved of io.vertx.codegen.CodeGen
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Entry = java.util.Map$Entry of java.util.Map