public class org.mongodb.morphia.mapping.DefaultCreator implements org.mongodb.morphia.ObjectFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.mongodb.morphia.mapping.DefaultCreator
  super_class: java.lang.Object
{
  private static final org.mongodb.morphia.logging.Logger LOG;
    descriptor: Lorg/mongodb/morphia/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.util.Map<java.lang.String, java.lang.Class> classNameCache;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class;>;

  private org.mongodb.morphia.mapping.MapperOptions options;
    descriptor: Lorg/mongodb/morphia/mapping/MapperOptions;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 26
            ldc Lorg/mongodb/morphia/mapping/DefaultCreator;
            invokestatic org.mongodb.morphia.logging.MorphiaLoggerFactory.get:(Ljava/lang/Class;)Lorg/mongodb/morphia/logging/Logger;
            putstatic org.mongodb.morphia.mapping.DefaultCreator.LOG:Lorg/mongodb/morphia/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
         0: .line 35
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 28
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.mongodb.morphia.mapping.DefaultCreator.classNameCache:Ljava/util/Map;
         2: .line 30
            aload 0 /* this */
            aconst_null
            putfield org.mongodb.morphia.mapping.DefaultCreator.options:Lorg/mongodb/morphia/mapping/MapperOptions;
         3: .line 36
            return
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/mongodb/morphia/mapping/DefaultCreator;

  public void <init>(org.mongodb.morphia.mapping.MapperOptions);
    descriptor: (Lorg/mongodb/morphia/mapping/MapperOptions;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // org.mongodb.morphia.mapping.MapperOptions options
         0: .line 43
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 28
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.mongodb.morphia.mapping.DefaultCreator.classNameCache:Ljava/util/Map;
         2: .line 30
            aload 0 /* this */
            aconst_null
            putfield org.mongodb.morphia.mapping.DefaultCreator.options:Lorg/mongodb/morphia/mapping/MapperOptions;
         3: .line 44
            aload 0 /* this */
            aload 1 /* options */
            putfield org.mongodb.morphia.mapping.DefaultCreator.options:Lorg/mongodb/morphia/mapping/MapperOptions;
         4: .line 45
            return
        end local 1 // org.mongodb.morphia.mapping.MapperOptions options
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0    5     1  options  Lorg/mongodb/morphia/mapping/MapperOptions;
    MethodParameters:
         Name  Flags
      options  final

  private static <T> java.lang.reflect.Constructor<T> getNoArgsConstructor(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.Class type
         0: .line 49
            aload 0 /* type */
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getDeclaredConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            astore 1 /* constructor */
        start local 1 // java.lang.reflect.Constructor constructor
         1: .line 50
            aload 1 /* constructor */
            iconst_1
            invokevirtual java.lang.reflect.Constructor.setAccessible:(Z)V
         2: .line 51
            aload 1 /* constructor */
         3: areturn
        end local 1 // java.lang.reflect.Constructor constructor
         4: .line 52
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            astore 1 /* e */
        start local 1 // java.lang.NoSuchMethodException e
         5: .line 53
            new org.mongodb.morphia.mapping.MappingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No usable constructor for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* type */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial org.mongodb.morphia.mapping.MappingException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.NoSuchMethodException e
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         type  Ljava/lang/Class<TT;>;
            1    4     1  constructor  Ljava/lang/reflect/Constructor<TT;>;
            5    6     1            e  Ljava/lang/NoSuchMethodException;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.NoSuchMethodException
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Ljava/lang/reflect/Constructor<TT;>;
    MethodParameters:
      Name  Flags
      type  final

  public <T> T createInst(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // java.lang.Class clazz
         0: .line 65
            aload 0 /* this */
            aload 1 /* clazz */
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.createInstance:(Ljava/lang/Class;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0    1     1  clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)TT;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
       Name  Flags
      clazz  final

  public <T> T createInstance(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // java.lang.Class clazz
         0: .line 72
            aload 1 /* clazz */
            invokestatic org.mongodb.morphia.mapping.DefaultCreator.getNoArgsConstructor:(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;
         1: areturn
         2: .line 73
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         3: .line 74
            ldc Ljava/util/Collection;
            aload 1 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 5
         4: .line 75
            aload 0 /* this */
            aconst_null
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.createList:(Lorg/mongodb/morphia/mapping/MappedField;)Ljava/util/List;
            areturn
         5: .line 76
      StackMap locals: java.lang.Exception
      StackMap stack:
            ldc Ljava/util/Map;
            aload 1 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 7
         6: .line 77
            aload 0 /* this */
            aconst_null
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.createMap:(Lorg/mongodb/morphia/mapping/MappedField;)Ljava/util/Map;
            areturn
         7: .line 78
      StackMap locals:
      StackMap stack:
            ldc Ljava/util/Set;
            aload 1 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 9
         8: .line 79
            aload 0 /* this */
            aconst_null
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.createSet:(Lorg/mongodb/morphia/mapping/MappedField;)Ljava/util/Set;
            areturn
         9: .line 81
      StackMap locals:
      StackMap stack:
            new org.mongodb.morphia.mapping.MappingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No usable constructor for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.mongodb.morphia.mapping.MappingException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0   10     1  clazz  Ljava/lang/Class<TT;>;
            3   10     2      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Exception
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
       Name  Flags
      clazz  final

  public <T> T createInstance(java.lang.Class<T>, com.mongodb.DBObject);
    descriptor: (Ljava/lang/Class;Lcom/mongodb/DBObject;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // java.lang.Class clazz
        start local 2 // com.mongodb.DBObject dbObj
         0: .line 87
            aload 0 /* this */
            aload 2 /* dbObj */
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.getClass:(Lcom/mongodb/DBObject;)Ljava/lang/Class;
            astore 3 /* c */
        start local 3 // java.lang.Class c
         1: .line 88
            aload 3 /* c */
            ifnonnull 3
         2: .line 89
            aload 1 /* clazz */
            astore 3 /* c */
         3: .line 91
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 0 /* this */
            aload 3 /* c */
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.createInstance:(Ljava/lang/Class;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Class c
        end local 2 // com.mongodb.DBObject dbObj
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0    4     1  clazz  Ljava/lang/Class<TT;>;
            0    4     2  dbObj  Lcom/mongodb/DBObject;
            1    4     3      c  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Lcom/mongodb/DBObject;)TT;
    MethodParameters:
       Name  Flags
      clazz  final
      dbObj  final

  public java.lang.Object createInstance(org.mongodb.morphia.mapping.Mapper, org.mongodb.morphia.mapping.MappedField, com.mongodb.DBObject);
    descriptor: (Lorg/mongodb/morphia/mapping/Mapper;Lorg/mongodb/morphia/mapping/MappedField;Lcom/mongodb/DBObject;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=11, args_size=4
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // org.mongodb.morphia.mapping.Mapper mapper
        start local 2 // org.mongodb.morphia.mapping.MappedField mf
        start local 3 // com.mongodb.DBObject dbObj
         0: .line 97
            aload 0 /* this */
            aload 3 /* dbObj */
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.getClass:(Lcom/mongodb/DBObject;)Ljava/lang/Class;
            astore 4 /* c */
        start local 4 // java.lang.Class c
         1: .line 98
            aload 4 /* c */
            ifnonnull 7
         2: .line 99
            aload 2 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.isSingleValue:()Z
            ifeq 3
            aload 2 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getConcreteType:()Ljava/lang/Class;
            goto 4
      StackMap locals: java.lang.Class
      StackMap stack:
         3: aload 2 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getSubClass:()Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.Class
         4: astore 4 /* c */
         5: .line 100
            aload 4 /* c */
            ldc Ljava/lang/Object;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 101
            aload 2 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getConcreteType:()Ljava/lang/Class;
            astore 4 /* c */
         7: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* c */
            aload 3 /* dbObj */
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.createInstance:(Ljava/lang/Class;Lcom/mongodb/DBObject;)Ljava/lang/Object;
         8: areturn
         9: .line 106
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            astore 5 /* e */
        start local 5 // java.lang.RuntimeException e
        10: .line 107
            aload 2 /* mf */
            ldc Lorg/mongodb/morphia/annotations/ConstructorArgs;
            invokevirtual org.mongodb.morphia.mapping.MappedField.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.mongodb.morphia.annotations.ConstructorArgs
            astore 6 /* argAnn */
        start local 6 // org.mongodb.morphia.annotations.ConstructorArgs argAnn
        11: .line 108
            aload 6 /* argAnn */
            ifnonnull 13
        12: .line 109
            aload 5 /* e */
            athrow
        13: .line 112
      StackMap locals: java.lang.RuntimeException org.mongodb.morphia.annotations.ConstructorArgs
      StackMap stack:
            aload 6 /* argAnn */
            invokeinterface org.mongodb.morphia.annotations.ConstructorArgs.value:()[Ljava/lang/String;
            arraylength
            anewarray java.lang.Object
            astore 7 /* args */
        start local 7 // java.lang.Object[] args
        14: .line 113
            aload 6 /* argAnn */
            invokeinterface org.mongodb.morphia.annotations.ConstructorArgs.value:()[Ljava/lang/String;
            arraylength
            anewarray java.lang.Class
            astore 8 /* argTypes */
        start local 8 // java.lang.Class[] argTypes
        15: .line 114
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        16: goto 21
        17: .line 117
      StackMap locals: java.lang.Object[] java.lang.Class[] int
      StackMap stack:
            aload 3 /* dbObj */
            aload 6 /* argAnn */
            invokeinterface org.mongodb.morphia.annotations.ConstructorArgs.value:()[Ljava/lang/String;
            iload 9 /* i */
            aaload
            invokeinterface com.mongodb.DBObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            astore 10 /* val */
        start local 10 // java.lang.Object val
        18: .line 118
            aload 7 /* args */
            iload 9 /* i */
            aload 10 /* val */
            aastore
        19: .line 119
            aload 8 /* argTypes */
            iload 9 /* i */
            aload 10 /* val */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aastore
        end local 10 // java.lang.Object val
        20: .line 114
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 9 /* i */
            aload 6 /* argAnn */
            invokeinterface org.mongodb.morphia.annotations.ConstructorArgs.value:()[Ljava/lang/String;
            arraylength
            if_icmplt 17
        end local 9 // int i
        22: .line 122
            aload 4 /* c */
            aload 8 /* argTypes */
            invokevirtual java.lang.Class.getDeclaredConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            astore 9 /* constructor */
        start local 9 // java.lang.reflect.Constructor constructor
        23: .line 123
            aload 9 /* constructor */
            iconst_1
            invokevirtual java.lang.reflect.Constructor.setAccessible:(Z)V
        24: .line 124
            aload 9 /* constructor */
            aload 7 /* args */
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
        25: areturn
        end local 9 // java.lang.reflect.Constructor constructor
        26: .line 125
      StackMap locals: org.mongodb.morphia.mapping.DefaultCreator org.mongodb.morphia.mapping.Mapper org.mongodb.morphia.mapping.MappedField com.mongodb.DBObject java.lang.Class java.lang.RuntimeException org.mongodb.morphia.annotations.ConstructorArgs java.lang.Object[] java.lang.Class[]
      StackMap stack: java.lang.Exception
            astore 9 /* ex */
        start local 9 // java.lang.Exception ex
        27: .line 126
            new java.lang.RuntimeException
            dup
            aload 9 /* ex */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 9 // java.lang.Exception ex
        end local 8 // java.lang.Class[] argTypes
        end local 7 // java.lang.Object[] args
        end local 6 // org.mongodb.morphia.annotations.ConstructorArgs argAnn
        end local 5 // java.lang.RuntimeException e
        end local 4 // java.lang.Class c
        end local 3 // com.mongodb.DBObject dbObj
        end local 2 // org.mongodb.morphia.mapping.MappedField mf
        end local 1 // org.mongodb.morphia.mapping.Mapper mapper
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   28     0         this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0   28     1       mapper  Lorg/mongodb/morphia/mapping/Mapper;
            0   28     2           mf  Lorg/mongodb/morphia/mapping/MappedField;
            0   28     3        dbObj  Lcom/mongodb/DBObject;
            1   28     4            c  Ljava/lang/Class;
           10   28     5            e  Ljava/lang/RuntimeException;
           11   28     6       argAnn  Lorg/mongodb/morphia/annotations/ConstructorArgs;
           14   28     7         args  [Ljava/lang/Object;
           15   28     8     argTypes  [Ljava/lang/Class;
           16   22     9            i  I
           18   20    10          val  Ljava/lang/Object;
           23   26     9  constructor  Ljava/lang/reflect/Constructor;
           27   28     9           ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           7     8       9  Class java.lang.RuntimeException
          22    25      26  Class java.lang.Exception
    MethodParameters:
        Name  Flags
      mapper  final
      mf      final
      dbObj   final

  public java.util.List createList(org.mongodb.morphia.mapping.MappedField);
    descriptor: (Lorg/mongodb/morphia/mapping/MappedField;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // org.mongodb.morphia.mapping.MappedField mf
         0: .line 134
            aload 0 /* this */
            aload 1 /* mf */
            ifnull 1
            aload 1 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getCTor:()Ljava/lang/reflect/Constructor;
            goto 2
      StackMap locals:
      StackMap stack: org.mongodb.morphia.mapping.DefaultCreator
         1: aconst_null
      StackMap locals: org.mongodb.morphia.mapping.DefaultCreator org.mongodb.morphia.mapping.MappedField
      StackMap stack: org.mongodb.morphia.mapping.DefaultCreator java.lang.reflect.Constructor
         2: ldc Ljava/util/ArrayList;
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.newInstance:(Ljava/lang/reflect/Constructor;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 1 // org.mongodb.morphia.mapping.MappedField mf
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0    3     1    mf  Lorg/mongodb/morphia/mapping/MappedField;
    MethodParameters:
      Name  Flags
      mf    final

  public java.util.Map createMap(org.mongodb.morphia.mapping.MappedField);
    descriptor: (Lorg/mongodb/morphia/mapping/MappedField;)Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // org.mongodb.morphia.mapping.MappedField mf
         0: .line 140
            aload 0 /* this */
            aload 1 /* mf */
            ifnull 1
            aload 1 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getCTor:()Ljava/lang/reflect/Constructor;
            goto 2
      StackMap locals:
      StackMap stack: org.mongodb.morphia.mapping.DefaultCreator
         1: aconst_null
      StackMap locals: org.mongodb.morphia.mapping.DefaultCreator org.mongodb.morphia.mapping.MappedField
      StackMap stack: org.mongodb.morphia.mapping.DefaultCreator java.lang.reflect.Constructor
         2: ldc Ljava/util/HashMap;
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.newInstance:(Ljava/lang/reflect/Constructor;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.Map
            areturn
        end local 1 // org.mongodb.morphia.mapping.MappedField mf
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0    3     1    mf  Lorg/mongodb/morphia/mapping/MappedField;
    MethodParameters:
      Name  Flags
      mf    final

  public java.util.Set createSet(org.mongodb.morphia.mapping.MappedField);
    descriptor: (Lorg/mongodb/morphia/mapping/MappedField;)Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // org.mongodb.morphia.mapping.MappedField mf
         0: .line 146
            aload 0 /* this */
            aload 1 /* mf */
            ifnull 1
            aload 1 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getCTor:()Ljava/lang/reflect/Constructor;
            goto 2
      StackMap locals:
      StackMap stack: org.mongodb.morphia.mapping.DefaultCreator
         1: aconst_null
      StackMap locals: org.mongodb.morphia.mapping.DefaultCreator org.mongodb.morphia.mapping.MappedField
      StackMap stack: org.mongodb.morphia.mapping.DefaultCreator java.lang.reflect.Constructor
         2: ldc Ljava/util/HashSet;
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.newInstance:(Ljava/lang/reflect/Constructor;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.Set
            areturn
        end local 1 // org.mongodb.morphia.mapping.MappedField mf
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0    3     1    mf  Lorg/mongodb/morphia/mapping/MappedField;
    MethodParameters:
      Name  Flags
      mf    final

  public java.util.Map<java.lang.String, java.lang.Class> getClassNameCache();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
         0: .line 153
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* copy */
        start local 1 // java.util.HashMap copy
         1: .line 154
            aload 1 /* copy */
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.DefaultCreator.classNameCache:Ljava/util/Map;
            invokevirtual java.util.HashMap.putAll:(Ljava/util/Map;)V
         2: .line 155
            aload 1 /* copy */
            areturn
        end local 1 // java.util.HashMap copy
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            1    3     1  copy  Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Class;>;
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class;>;

  protected java.lang.ClassLoader getClassLoaderForClass();
    descriptor: ()Ljava/lang/ClassLoader;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
         0: .line 159
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
            areturn
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/DefaultCreator;

  private <T> java.lang.Class<T> getClass(com.mongodb.DBObject);
    descriptor: (Lcom/mongodb/DBObject;)Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // com.mongodb.DBObject dbObj
         0: .line 165
            aconst_null
            astore 2 /* c */
        start local 2 // java.lang.Class c
         1: .line 166
            aload 1 /* dbObj */
            ldc "className"
            invokeinterface com.mongodb.DBObject.containsField:(Ljava/lang/String;)Z
            ifeq 14
         2: .line 167
            aload 1 /* dbObj */
            ldc "className"
            invokeinterface com.mongodb.DBObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* className */
        start local 3 // java.lang.String className
         3: .line 171
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.DefaultCreator.options:Lorg/mongodb/morphia/mapping/MapperOptions;
            ifnull 9
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.DefaultCreator.options:Lorg/mongodb/morphia/mapping/MapperOptions;
            invokevirtual org.mongodb.morphia.mapping.MapperOptions.isCacheClassLookups:()Z
            ifeq 9
         4: .line 172
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.DefaultCreator.classNameCache:Ljava/util/Map;
            aload 3 /* className */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 2 /* c */
         5: .line 173
            aload 2 /* c */
            ifnonnull 14
         6: .line 174
            aload 3 /* className */
            iconst_1
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.getClassLoaderForClass:()Ljava/lang/ClassLoader;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 2 /* c */
         7: .line 175
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.DefaultCreator.classNameCache:Ljava/util/Map;
            aload 3 /* className */
            aload 2 /* c */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 177
            goto 14
         9: .line 178
      StackMap locals: java.lang.Class java.lang.String
      StackMap stack:
            aload 3 /* className */
            iconst_1
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.getClassLoaderForClass:()Ljava/lang/ClassLoader;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 2 /* c */
        10: .line 180
            goto 14
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
        11: astore 4 /* e */
        start local 4 // java.lang.ClassNotFoundException e
        12: .line 181
            getstatic org.mongodb.morphia.mapping.DefaultCreator.LOG:Lorg/mongodb/morphia/logging/Logger;
            invokeinterface org.mongodb.morphia.logging.Logger.isWarningEnabled:()Z
            ifeq 14
        13: .line 182
            getstatic org.mongodb.morphia.mapping.DefaultCreator.LOG:Lorg/mongodb/morphia/logging/Logger;
            ldc "Class not found defined in dbObj: "
            aload 4 /* e */
            invokeinterface org.mongodb.morphia.logging.Logger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 4 // java.lang.ClassNotFoundException e
        end local 3 // java.lang.String className
        14: .line 186
      StackMap locals:
      StackMap stack:
            aload 2 /* c */
            areturn
        end local 2 // java.lang.Class c
        end local 1 // com.mongodb.DBObject dbObj
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0   15     1      dbObj  Lcom/mongodb/DBObject;
            1   15     2          c  Ljava/lang/Class;
            3   14     3  className  Ljava/lang/String;
           12   14     4          e  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
           3    10      11  Class java.lang.ClassNotFoundException
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/DBObject;)Ljava/lang/Class<TT;>;
    MethodParameters:
       Name  Flags
      dbObj  final

  private <T> T newInstance(java.lang.reflect.Constructor<T>, java.lang.Class<T>);
    descriptor: (Ljava/lang/reflect/Constructor;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.mongodb.morphia.mapping.DefaultCreator this
        start local 1 // java.lang.reflect.Constructor tryMe
        start local 2 // java.lang.Class fallbackType
         0: .line 193
            aload 1 /* tryMe */
            ifnull 6
         1: .line 194
            aload 1 /* tryMe */
            iconst_1
            invokevirtual java.lang.reflect.Constructor.setAccessible:(Z)V
         2: .line 196
            aload 1 /* tryMe */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
         3: areturn
         4: .line 197
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
         5: .line 198
            new java.lang.RuntimeException
            dup
            aload 3 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
         6: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* fallbackType */
            invokevirtual org.mongodb.morphia.mapping.DefaultCreator.createInstance:(Ljava/lang/Class;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Class fallbackType
        end local 1 // java.lang.reflect.Constructor tryMe
        end local 0 // org.mongodb.morphia.mapping.DefaultCreator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/mongodb/morphia/mapping/DefaultCreator;
            0    7     1         tryMe  Ljava/lang/reflect/Constructor<TT;>;
            0    7     2  fallbackType  Ljava/lang/Class<TT;>;
            5    6     3             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Exception
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/reflect/Constructor<TT;>;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
              Name  Flags
      tryMe         final
      fallbackType  final
}
SourceFile: "DefaultCreator.java"