public class io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory
  super_class: java.lang.Object
{
  private final com.google.common.collect.ImmutableMap<java.lang.String, org.hibernate.SessionFactory> sessionFactories;
    descriptor: Lcom/google/common/collect/ImmutableMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/google/common/collect/ImmutableMap<Ljava/lang/String;Lorg/hibernate/SessionFactory;>;

  public void <init>(java.lang.String, org.hibernate.SessionFactory);
    descriptor: (Ljava/lang/String;Lorg/hibernate/SessionFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
        start local 1 // java.lang.String name
        start local 2 // org.hibernate.SessionFactory sessionFactory
         0: .line 21
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 22
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* sessionFactory */
            invokestatic com.google.common.collect.ImmutableMap.of:(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap;
            putfield io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory.sessionFactories:Lcom/google/common/collect/ImmutableMap;
         2: .line 23
            return
        end local 2 // org.hibernate.SessionFactory sessionFactory
        end local 1 // java.lang.String name
        end local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;
            0    3     1            name  Ljava/lang/String;
            0    3     2  sessionFactory  Lorg/hibernate/SessionFactory;
    MethodParameters:
                Name  Flags
      name            
      sessionFactory  

  public void <init>(io.dropwizard.hibernate.HibernateBundle<?>[]);
    descriptor: ([Lio/dropwizard/hibernate/HibernateBundle;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
        start local 1 // io.dropwizard.hibernate.HibernateBundle[] bundles
         0: .line 25
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 26
            invokestatic com.google.common.collect.ImmutableMap.builder:()Lcom/google/common/collect/ImmutableMap$Builder;
            astore 2 /* sessionFactoriesBuilder */
        start local 2 // com.google.common.collect.ImmutableMap$Builder sessionFactoriesBuilder
         2: .line 27
            aload 1 /* bundles */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 6
      StackMap locals: io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory io.dropwizard.hibernate.HibernateBundle[] com.google.common.collect.ImmutableMap$Builder top int int io.dropwizard.hibernate.HibernateBundle[]
      StackMap stack:
         3: aload 6
            iload 4
            aaload
            astore 3 /* bundle */
        start local 3 // io.dropwizard.hibernate.HibernateBundle bundle
         4: .line 28
            aload 2 /* sessionFactoriesBuilder */
            aload 3 /* bundle */
            invokevirtual io.dropwizard.hibernate.HibernateBundle.name:()Ljava/lang/String;
            aload 3 /* bundle */
            invokevirtual io.dropwizard.hibernate.HibernateBundle.getSessionFactory:()Lorg/hibernate/SessionFactory;
            invokevirtual com.google.common.collect.ImmutableMap$Builder.put:(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap$Builder;
            pop
        end local 3 // io.dropwizard.hibernate.HibernateBundle bundle
         5: .line 27
            iinc 4 1
      StackMap locals:
      StackMap stack:
         6: iload 4
            iload 5
            if_icmplt 3
         7: .line 30
            aload 0 /* this */
            aload 2 /* sessionFactoriesBuilder */
            invokevirtual com.google.common.collect.ImmutableMap$Builder.build:()Lcom/google/common/collect/ImmutableMap;
            putfield io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory.sessionFactories:Lcom/google/common/collect/ImmutableMap;
         8: .line 31
            return
        end local 2 // com.google.common.collect.ImmutableMap$Builder sessionFactoriesBuilder
        end local 1 // io.dropwizard.hibernate.HibernateBundle[] bundles
        end local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    9     0                     this  Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;
            0    9     1                  bundles  [Lio/dropwizard/hibernate/HibernateBundle;
            2    9     2  sessionFactoriesBuilder  Lcom/google/common/collect/ImmutableMap$Builder<Ljava/lang/String;Lorg/hibernate/SessionFactory;>;
            4    5     3                   bundle  Lio/dropwizard/hibernate/HibernateBundle<*>;
    Signature: ([Lio/dropwizard/hibernate/HibernateBundle<*>;)V
    MethodParameters:
         Name  Flags
      bundles  

  public <T> T create(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
        start local 1 // java.lang.Class clazz
         0: .line 42
            aload 0 /* this */
            aload 1 /* clazz */
            iconst_0
            anewarray java.lang.Class
            iconst_0
            anewarray java.lang.Object
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory.create:(Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;
            0    1     1  clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
       Name  Flags
      clazz  

  public <T> T create(java.lang.Class<T>, java.lang.Class<?>, );
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
        start local 1 // java.lang.Class clazz
        start local 2 // java.lang.Class constructorParamType
        start local 3 // java.lang.Object constructorArguments
         0: .line 55
            aload 0 /* this */
            aload 1 /* clazz */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 2 /* constructorParamType */
            aastore
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* constructorArguments */
            aastore
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory.create:(Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object constructorArguments
        end local 2 // java.lang.Class constructorParamType
        end local 1 // java.lang.Class clazz
        end local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;
            0    1     1                 clazz  Ljava/lang/Class<TT;>;
            0    1     2  constructorParamType  Ljava/lang/Class<*>;
            0    1     3  constructorArguments  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/Class<*>;Ljava/lang/Object;)TT;
    MethodParameters:
                      Name  Flags
      clazz                 
      constructorParamType  
      constructorArguments  

  public <T> T create(java.lang.Class<T>, java.lang.Class<?>[], []);
    descriptor: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
        start local 1 // java.lang.Class clazz
        start local 2 // java.lang.Class[] constructorParamTypes
        start local 3 // java.lang.Object[] constructorArguments
         0: .line 69
            new javassist.util.proxy.ProxyFactory
            dup
            invokespecial javassist.util.proxy.ProxyFactory.<init>:()V
            astore 4 /* factory */
        start local 4 // javassist.util.proxy.ProxyFactory factory
         1: .line 70
            aload 4 /* factory */
            aload 1 /* clazz */
            invokevirtual javassist.util.proxy.ProxyFactory.setSuperclass:(Ljava/lang/Class;)V
         2: .line 73
            aload 2 /* constructorParamTypes */
            arraylength
            ifne 4
         3: .line 74
            aload 4 /* factory */
            invokevirtual javassist.util.proxy.ProxyFactory.createClass:()Ljava/lang/Class;
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            goto 5
         4: .line 75
      StackMap locals: javassist.util.proxy.ProxyFactory
      StackMap stack:
            aload 4 /* factory */
            aload 2 /* constructorParamTypes */
            aload 3 /* constructorArguments */
            invokevirtual javassist.util.proxy.ProxyFactory.create:([Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;
         5: .line 73
      StackMap locals:
      StackMap stack: java.lang.Object
            checkcast javassist.util.proxy.Proxy
            astore 5 /* proxy */
        start local 5 // javassist.util.proxy.Proxy proxy
         6: .line 76
            aload 5 /* proxy */
            aload 0 /* this */
            invokedynamic invoke(Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;)Ljavassist/util/proxy/MethodHandler;
              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/reflect/Method;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
                  io/dropwizard/hibernate/UnitOfWorkAwareProxyFactory.lambda$0(Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (7)
                  (Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
            invokeinterface javassist.util.proxy.Proxy.setHandler:(Ljavassist/util/proxy/MethodHandler;)V
         7: .line 94
            aload 5 /* proxy */
         8: areturn
        end local 5 // javassist.util.proxy.Proxy proxy
         9: .line 96
      StackMap locals:
      StackMap stack: java.lang.ReflectiveOperationException
            astore 5 /* e */
        start local 5 // java.lang.ReflectiveOperationException e
        10: .line 97
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to create a proxy for the class '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.ReflectiveOperationException e
        end local 4 // javassist.util.proxy.ProxyFactory factory
        end local 3 // java.lang.Object[] constructorArguments
        end local 2 // java.lang.Class[] constructorParamTypes
        end local 1 // java.lang.Class clazz
        end local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   11     0                   this  Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;
            0   11     1                  clazz  Ljava/lang/Class<TT;>;
            0   11     2  constructorParamTypes  [Ljava/lang/Class;
            0   11     3   constructorArguments  [Ljava/lang/Object;
            1   11     4                factory  Ljavassist/util/proxy/ProxyFactory;
            6    9     5                  proxy  Ljavassist/util/proxy/Proxy;
           10   11     5                      e  Ljava/lang/ReflectiveOperationException;
      Exception table:
        from    to  target  type
           2     8       9  Class java.lang.NoSuchMethodException
           2     8       9  Class java.lang.InstantiationException
           2     8       9  Class java.lang.IllegalAccessException
           2     8       9  Class java.lang.reflect.InvocationTargetException
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;[Ljava/lang/Object;)TT;
    MethodParameters:
                       Name  Flags
      clazz                  
      constructorParamTypes  
      constructorArguments   

  public io.dropwizard.hibernate.UnitOfWorkAspect newAspect();
    descriptor: ()Lio/dropwizard/hibernate/UnitOfWorkAspect;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
         0: .line 105
            new io.dropwizard.hibernate.UnitOfWorkAspect
            dup
            aload 0 /* this */
            getfield io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory.sessionFactories:Lcom/google/common/collect/ImmutableMap;
            invokespecial io.dropwizard.hibernate.UnitOfWorkAspect.<init>:(Ljava/util/Map;)V
            areturn
        end local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;

  public io.dropwizard.hibernate.UnitOfWorkAspect newAspect(com.google.common.collect.ImmutableMap<java.lang.String, org.hibernate.SessionFactory>);
    descriptor: (Lcom/google/common/collect/ImmutableMap;)Lio/dropwizard/hibernate/UnitOfWorkAspect;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
        start local 1 // com.google.common.collect.ImmutableMap sessionFactories
         0: .line 113
            new io.dropwizard.hibernate.UnitOfWorkAspect
            dup
            aload 1 /* sessionFactories */
            invokespecial io.dropwizard.hibernate.UnitOfWorkAspect.<init>:(Ljava/util/Map;)V
            areturn
        end local 1 // com.google.common.collect.ImmutableMap sessionFactories
        end local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;
            0    1     1  sessionFactories  Lcom/google/common/collect/ImmutableMap<Ljava/lang/String;Lorg/hibernate/SessionFactory;>;
    Signature: (Lcom/google/common/collect/ImmutableMap<Ljava/lang/String;Lorg/hibernate/SessionFactory;>;)Lio/dropwizard/hibernate/UnitOfWorkAspect;
    MethodParameters:
                  Name  Flags
      sessionFactories  

  private java.lang.Object lambda$0(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=10, args_size=5
        start local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
        start local 1 // java.lang.Object self
        start local 2 // java.lang.reflect.Method overridden
        start local 3 // java.lang.reflect.Method proceed
        start local 4 // java.lang.Object[] args
         0: .line 77
            aload 2 /* overridden */
            ldc Lio/dropwizard/hibernate/UnitOfWork;
            invokevirtual java.lang.reflect.Method.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast io.dropwizard.hibernate.UnitOfWork
            astore 5 /* unitOfWork */
        start local 5 // io.dropwizard.hibernate.UnitOfWork unitOfWork
         1: .line 78
            aload 0 /* this */
            aload 0 /* this */
            getfield io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory.sessionFactories:Lcom/google/common/collect/ImmutableMap;
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory.newAspect:(Lcom/google/common/collect/ImmutableMap;)Lio/dropwizard/hibernate/UnitOfWorkAspect;
            astore 6 /* unitOfWorkAspect */
        start local 6 // io.dropwizard.hibernate.UnitOfWorkAspect unitOfWorkAspect
         2: .line 80
            aload 6 /* unitOfWorkAspect */
            aload 5 /* unitOfWork */
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAspect.beforeStart:(Lio/dropwizard/hibernate/UnitOfWork;)V
         3: .line 81
            aload 3 /* proceed */
            aload 1 /* self */
            aload 4 /* args */
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* result */
        start local 7 // java.lang.Object result
         4: .line 82
            aload 6 /* unitOfWorkAspect */
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAspect.afterEnd:()V
         5: .line 83
            aload 7 /* result */
            astore 9
         6: .line 91
            aload 6 /* unitOfWorkAspect */
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAspect.onFinish:()V
         7: .line 83
            aload 9
            areturn
        end local 7 // java.lang.Object result
         8: .line 84
      StackMap locals: io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory java.lang.Object java.lang.reflect.Method java.lang.reflect.Method java.lang.Object[] io.dropwizard.hibernate.UnitOfWork io.dropwizard.hibernate.UnitOfWorkAspect
      StackMap stack: java.lang.reflect.InvocationTargetException
            astore 7 /* e */
        start local 7 // java.lang.reflect.InvocationTargetException e
         9: .line 85
            aload 6 /* unitOfWorkAspect */
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAspect.onError:()V
        10: .line 86
            aload 7 /* e */
            invokevirtual java.lang.reflect.InvocationTargetException.getCause:()Ljava/lang/Throwable;
            athrow
        end local 7 // java.lang.reflect.InvocationTargetException e
        11: .line 87
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 7 /* e */
        start local 7 // java.lang.Exception e
        12: .line 88
            aload 6 /* unitOfWorkAspect */
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAspect.onError:()V
        13: .line 89
            aload 7 /* e */
            athrow
        end local 7 // java.lang.Exception e
        14: .line 90
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        15: .line 91
            aload 6 /* unitOfWorkAspect */
            invokevirtual io.dropwizard.hibernate.UnitOfWorkAspect.onFinish:()V
        16: .line 92
            aload 8
            athrow
        end local 6 // io.dropwizard.hibernate.UnitOfWorkAspect unitOfWorkAspect
        end local 5 // io.dropwizard.hibernate.UnitOfWork unitOfWork
        end local 4 // java.lang.Object[] args
        end local 3 // java.lang.reflect.Method proceed
        end local 2 // java.lang.reflect.Method overridden
        end local 1 // java.lang.Object self
        end local 0 // io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   17     0              this  Lio/dropwizard/hibernate/UnitOfWorkAwareProxyFactory;
            0   17     1              self  Ljava/lang/Object;
            0   17     2        overridden  Ljava/lang/reflect/Method;
            0   17     3           proceed  Ljava/lang/reflect/Method;
            0   17     4              args  [Ljava/lang/Object;
            1   17     5        unitOfWork  Lio/dropwizard/hibernate/UnitOfWork;
            2   17     6  unitOfWorkAspect  Lio/dropwizard/hibernate/UnitOfWorkAspect;
            4    8     7            result  Ljava/lang/Object;
            9   11     7                 e  Ljava/lang/reflect/InvocationTargetException;
           12   14     7                 e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2     6       8  Class java.lang.reflect.InvocationTargetException
           2     6      11  Class java.lang.Exception
           2     6      14  any
           8    14      14  any
    Exceptions:
      throws java.lang.Throwable
}
SourceFile: "UnitOfWorkAwareProxyFactory.java"
InnerClasses:
  public Builder = com.google.common.collect.ImmutableMap$Builder of com.google.common.collect.ImmutableMap
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles