public class org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory implements org.mongodb.morphia.mapping.lazy.LazyProxyFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory
  super_class: java.lang.Object
{
  private final com.thoughtworks.proxy.factory.CglibProxyFactory factory;
    descriptor: Lcom/thoughtworks/proxy/factory/CglibProxyFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory this
         0: .line 27
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 28
            aload 0 /* this */
            new com.thoughtworks.proxy.factory.CglibProxyFactory
            dup
            invokespecial com.thoughtworks.proxy.factory.CglibProxyFactory.<init>:()V
            putfield org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory.factory:Lcom/thoughtworks/proxy/factory/CglibProxyFactory;
         2: .line 27
            return
        end local 0 // org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/mongodb/morphia/mapping/lazy/CGLibLazyProxyFactory;

  public <T extends java.util.Collection> T createListProxy(org.mongodb.morphia.Datastore, T, java.lang.Class, );
    descriptor: (Lorg/mongodb/morphia/Datastore;Ljava/util/Collection;Ljava/lang/Class;Z)Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=5
        start local 0 // org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory this
        start local 1 // org.mongodb.morphia.Datastore datastore
        start local 2 // java.util.Collection listToProxy
        start local 3 // java.lang.Class referenceObjClass
        start local 4 // boolean ignoreMissing
         0: .line 33
            aload 2 /* listToProxy */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 5 /* targetClass */
        start local 5 // java.lang.Class targetClass
         1: .line 34
            new org.mongodb.morphia.mapping.lazy.proxy.CollectionObjectReference
            dup
            aload 2 /* listToProxy */
            aload 3 /* referenceObjClass */
            iload 4 /* ignoreMissing */
         2: .line 35
            aload 1 /* datastore */
         3: .line 34
            invokespecial org.mongodb.morphia.mapping.lazy.proxy.CollectionObjectReference.<init>:(Ljava/util/Collection;Ljava/lang/Class;ZLorg/mongodb/morphia/Datastore;)V
            astore 6 /* objectReference */
        start local 6 // org.mongodb.morphia.mapping.lazy.proxy.CollectionObjectReference objectReference
         4: .line 37
            new org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker
            dup
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            aload 5 /* targetClass */
            aastore
            dup
            iconst_1
            ldc Ljava/io/Serializable;
            aastore
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory.factory:Lcom/thoughtworks/proxy/factory/CglibProxyFactory;
            aload 6 /* objectReference */
         5: .line 38
            getstatic com.thoughtworks.proxy.toys.delegate.DelegationMode.SIGNATURE:Lcom/thoughtworks/proxy/toys/delegate/DelegationMode;
         6: .line 37
            invokespecial org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker.<init>:([Ljava/lang/Class;Lcom/thoughtworks/proxy/ProxyFactory;Lcom/thoughtworks/proxy/kit/ObjectReference;Lcom/thoughtworks/proxy/toys/delegate/DelegationMode;)V
         7: .line 38
            invokevirtual org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker.proxy:()Ljava/lang/Object;
            checkcast java.util.Collection
         8: .line 37
            astore 7 /* backend */
        start local 7 // java.util.Collection backend
         9: .line 40
            aload 5 /* targetClass */
            iconst_3
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/mongodb/morphia/mapping/lazy/proxy/ProxiedEntityReferenceList;
            aastore
            dup
            iconst_1
            aload 5 /* targetClass */
            aastore
            dup
            iconst_2
            ldc Ljava/io/Serializable;
            aastore
            invokestatic com.thoughtworks.proxy.toys.dispatch.Dispatching.proxy:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/thoughtworks/proxy/toys/dispatch/Dispatching$DispatchingWith;
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        10: .line 41
            aload 6 /* objectReference */
            aastore
            dup
            iconst_1
            aload 7 /* backend */
            aastore
            invokevirtual com.thoughtworks.proxy.toys.dispatch.Dispatching$DispatchingWith.with:([Ljava/lang/Object;)Lcom/thoughtworks/proxy/toys/dispatch/Dispatching$DispatchingBuild;
        11: .line 42
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory.factory:Lcom/thoughtworks/proxy/factory/CglibProxyFactory;
            invokevirtual com.thoughtworks.proxy.toys.dispatch.Dispatching$DispatchingBuild.build:(Lcom/thoughtworks/proxy/ProxyFactory;)Ljava/lang/Object;
            checkcast java.util.Collection
        12: .line 40
            areturn
        end local 7 // java.util.Collection backend
        end local 6 // org.mongodb.morphia.mapping.lazy.proxy.CollectionObjectReference objectReference
        end local 5 // java.lang.Class targetClass
        end local 4 // boolean ignoreMissing
        end local 3 // java.lang.Class referenceObjClass
        end local 2 // java.util.Collection listToProxy
        end local 1 // org.mongodb.morphia.Datastore datastore
        end local 0 // org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   13     0               this  Lorg/mongodb/morphia/mapping/lazy/CGLibLazyProxyFactory;
            0   13     1          datastore  Lorg/mongodb/morphia/Datastore;
            0   13     2        listToProxy  TT;
            0   13     3  referenceObjClass  Ljava/lang/Class;
            0   13     4      ignoreMissing  Z
            1   13     5        targetClass  Ljava/lang/Class<+Ljava/util/Collection;>;
            4   13     6    objectReference  Lorg/mongodb/morphia/mapping/lazy/proxy/CollectionObjectReference;
            9   13     7            backend  TT;
    Signature: <T::Ljava/util/Collection;>(Lorg/mongodb/morphia/Datastore;TT;Ljava/lang/Class;Z)TT;
    MethodParameters:
                   Name  Flags
      datastore          final
      listToProxy        final
      referenceObjClass  final
      ignoreMissing      final

  public <T extends java.util.Map> T createMapProxy(org.mongodb.morphia.Datastore, T, java.lang.Class, );
    descriptor: (Lorg/mongodb/morphia/Datastore;Ljava/util/Map;Ljava/lang/Class;Z)Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=5
        start local 0 // org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory this
        start local 1 // org.mongodb.morphia.Datastore datastore
        start local 2 // java.util.Map mapToProxy
        start local 3 // java.lang.Class referenceObjClass
        start local 4 // boolean ignoreMissing
         0: .line 49
            aload 2 /* mapToProxy */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 5 /* targetClass */
        start local 5 // java.lang.Class targetClass
         1: .line 50
            new org.mongodb.morphia.mapping.lazy.proxy.MapObjectReference
            dup
            aload 1 /* datastore */
            aload 2 /* mapToProxy */
            aload 3 /* referenceObjClass */
            iload 4 /* ignoreMissing */
            invokespecial org.mongodb.morphia.mapping.lazy.proxy.MapObjectReference.<init>:(Lorg/mongodb/morphia/Datastore;Ljava/util/Map;Ljava/lang/Class;Z)V
            astore 6 /* objectReference */
        start local 6 // org.mongodb.morphia.mapping.lazy.proxy.MapObjectReference objectReference
         2: .line 52
            new org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker
            dup
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            aload 5 /* targetClass */
            aastore
            dup
            iconst_1
            ldc Ljava/io/Serializable;
            aastore
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory.factory:Lcom/thoughtworks/proxy/factory/CglibProxyFactory;
            aload 6 /* objectReference */
         3: .line 53
            getstatic com.thoughtworks.proxy.toys.delegate.DelegationMode.SIGNATURE:Lcom/thoughtworks/proxy/toys/delegate/DelegationMode;
         4: .line 52
            invokespecial org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker.<init>:([Ljava/lang/Class;Lcom/thoughtworks/proxy/ProxyFactory;Lcom/thoughtworks/proxy/kit/ObjectReference;Lcom/thoughtworks/proxy/toys/delegate/DelegationMode;)V
         5: .line 53
            invokevirtual org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker.proxy:()Ljava/lang/Object;
            checkcast java.util.Map
         6: .line 52
            astore 7 /* backend */
        start local 7 // java.util.Map backend
         7: .line 55
            aload 5 /* targetClass */
            iconst_3
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/mongodb/morphia/mapping/lazy/proxy/ProxiedEntityReferenceMap;
            aastore
            dup
            iconst_1
            aload 5 /* targetClass */
            aastore
            dup
            iconst_2
            ldc Ljava/io/Serializable;
            aastore
            invokestatic com.thoughtworks.proxy.toys.dispatch.Dispatching.proxy:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/thoughtworks/proxy/toys/dispatch/Dispatching$DispatchingWith;
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 56
            aload 6 /* objectReference */
            aastore
            dup
            iconst_1
            aload 7 /* backend */
            aastore
            invokevirtual com.thoughtworks.proxy.toys.dispatch.Dispatching$DispatchingWith.with:([Ljava/lang/Object;)Lcom/thoughtworks/proxy/toys/dispatch/Dispatching$DispatchingBuild;
         9: .line 57
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory.factory:Lcom/thoughtworks/proxy/factory/CglibProxyFactory;
            invokevirtual com.thoughtworks.proxy.toys.dispatch.Dispatching$DispatchingBuild.build:(Lcom/thoughtworks/proxy/ProxyFactory;)Ljava/lang/Object;
            checkcast java.util.Map
        10: .line 55
            areturn
        end local 7 // java.util.Map backend
        end local 6 // org.mongodb.morphia.mapping.lazy.proxy.MapObjectReference objectReference
        end local 5 // java.lang.Class targetClass
        end local 4 // boolean ignoreMissing
        end local 3 // java.lang.Class referenceObjClass
        end local 2 // java.util.Map mapToProxy
        end local 1 // org.mongodb.morphia.Datastore datastore
        end local 0 // org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   11     0               this  Lorg/mongodb/morphia/mapping/lazy/CGLibLazyProxyFactory;
            0   11     1          datastore  Lorg/mongodb/morphia/Datastore;
            0   11     2         mapToProxy  TT;
            0   11     3  referenceObjClass  Ljava/lang/Class;
            0   11     4      ignoreMissing  Z
            1   11     5        targetClass  Ljava/lang/Class<+Ljava/util/Map;>;
            2   11     6    objectReference  Lorg/mongodb/morphia/mapping/lazy/proxy/MapObjectReference;
            7   11     7            backend  TT;
    Signature: <T::Ljava/util/Map;>(Lorg/mongodb/morphia/Datastore;TT;Ljava/lang/Class;Z)TT;
    MethodParameters:
                   Name  Flags
      datastore          final
      mapToProxy         final
      referenceObjClass  final
      ignoreMissing      final

  public <T> T createProxy(org.mongodb.morphia.Datastore, java.lang.Class<T>, org.mongodb.morphia.Key<T>, );
    descriptor: (Lorg/mongodb/morphia/Datastore;Ljava/lang/Class;Lorg/mongodb/morphia/Key;Z)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory this
        start local 1 // org.mongodb.morphia.Datastore datastore
        start local 2 // java.lang.Class targetClass
        start local 3 // org.mongodb.morphia.Key key
        start local 4 // boolean ignoreMissing
         0: .line 64
            new org.mongodb.morphia.mapping.lazy.proxy.EntityObjectReference
            dup
            aload 1 /* datastore */
            aload 2 /* targetClass */
            aload 3 /* key */
            iload 4 /* ignoreMissing */
            invokespecial org.mongodb.morphia.mapping.lazy.proxy.EntityObjectReference.<init>:(Lorg/mongodb/morphia/Datastore;Ljava/lang/Class;Lorg/mongodb/morphia/Key;Z)V
            astore 5 /* objectReference */
        start local 5 // org.mongodb.morphia.mapping.lazy.proxy.EntityObjectReference objectReference
         1: .line 66
            new org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker
            dup
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            aload 2 /* targetClass */
            aastore
            dup
            iconst_1
            ldc Ljava/io/Serializable;
            aastore
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory.factory:Lcom/thoughtworks/proxy/factory/CglibProxyFactory;
            aload 5 /* objectReference */
         2: .line 67
            getstatic com.thoughtworks.proxy.toys.delegate.DelegationMode.SIGNATURE:Lcom/thoughtworks/proxy/toys/delegate/DelegationMode;
         3: .line 66
            invokespecial org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker.<init>:([Ljava/lang/Class;Lcom/thoughtworks/proxy/ProxyFactory;Lcom/thoughtworks/proxy/kit/ObjectReference;Lcom/thoughtworks/proxy/toys/delegate/DelegationMode;)V
         4: .line 67
            invokevirtual org.mongodb.morphia.mapping.lazy.NonFinalizingHotSwappingInvoker.proxy:()Ljava/lang/Object;
         5: .line 66
            astore 6 /* backend */
        start local 6 // java.lang.Object backend
         6: .line 69
            aload 2 /* targetClass */
            iconst_3
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/mongodb/morphia/mapping/lazy/proxy/ProxiedEntityReference;
            aastore
            dup
            iconst_1
            aload 2 /* targetClass */
            aastore
            dup
            iconst_2
            ldc Ljava/io/Serializable;
            aastore
            invokestatic com.thoughtworks.proxy.toys.dispatch.Dispatching.proxy:(Ljava/lang/Class;[Ljava/lang/Class;)Lcom/thoughtworks/proxy/toys/dispatch/Dispatching$DispatchingWith;
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 70
            aload 5 /* objectReference */
            aastore
            dup
            iconst_1
            aload 6 /* backend */
            aastore
            invokevirtual com.thoughtworks.proxy.toys.dispatch.Dispatching$DispatchingWith.with:([Ljava/lang/Object;)Lcom/thoughtworks/proxy/toys/dispatch/Dispatching$DispatchingBuild;
         8: .line 71
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory.factory:Lcom/thoughtworks/proxy/factory/CglibProxyFactory;
            invokevirtual com.thoughtworks.proxy.toys.dispatch.Dispatching$DispatchingBuild.build:(Lcom/thoughtworks/proxy/ProxyFactory;)Ljava/lang/Object;
         9: .line 69
            areturn
        end local 6 // java.lang.Object backend
        end local 5 // org.mongodb.morphia.mapping.lazy.proxy.EntityObjectReference objectReference
        end local 4 // boolean ignoreMissing
        end local 3 // org.mongodb.morphia.Key key
        end local 2 // java.lang.Class targetClass
        end local 1 // org.mongodb.morphia.Datastore datastore
        end local 0 // org.mongodb.morphia.mapping.lazy.CGLibLazyProxyFactory this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   10     0             this  Lorg/mongodb/morphia/mapping/lazy/CGLibLazyProxyFactory;
            0   10     1        datastore  Lorg/mongodb/morphia/Datastore;
            0   10     2      targetClass  Ljava/lang/Class<TT;>;
            0   10     3              key  Lorg/mongodb/morphia/Key<TT;>;
            0   10     4    ignoreMissing  Z
            1   10     5  objectReference  Lorg/mongodb/morphia/mapping/lazy/proxy/EntityObjectReference;
            6   10     6          backend  TT;
    Signature: <T:Ljava/lang/Object;>(Lorg/mongodb/morphia/Datastore;Ljava/lang/Class<TT;>;Lorg/mongodb/morphia/Key<TT;>;Z)TT;
    MethodParameters:
               Name  Flags
      datastore      final
      targetClass    final
      key            final
      ignoreMissing  final
}
SourceFile: "CGLibLazyProxyFactory.java"
InnerClasses:
  public DispatchingBuild = com.thoughtworks.proxy.toys.dispatch.Dispatching$DispatchingBuild of com.thoughtworks.proxy.toys.dispatch.Dispatching
  public DispatchingWith = com.thoughtworks.proxy.toys.dispatch.Dispatching$DispatchingWith of com.thoughtworks.proxy.toys.dispatch.Dispatching