public class org.mongodb.morphia.mapping.MappedClass
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.mongodb.morphia.mapping.MappedClass
  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 static final java.util.List<java.lang.Class<? extends java.lang.annotation.Annotation>> INTERESTING_ANNOTATIONS;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;>;

  private static final java.util.List<java.lang.Class<? extends java.lang.annotation.Annotation>> LIFECYCLE_ANNOTATIONS;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;>;

  private final java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, java.util.List<java.lang.annotation.Annotation>> foundAnnotations;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/util/List<Ljava/lang/annotation/Annotation;>;>;

  private final java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, java.util.List<org.mongodb.morphia.mapping.MappedClass$ClassMethodPair>> lifecycleMethods;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedClass$ClassMethodPair;>;>;

  private final java.util.List<org.mongodb.morphia.mapping.MappedField> persistenceFields;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedField;>;

  private final java.lang.Class<?> clazz;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private java.lang.reflect.Field idField;
    descriptor: Ljava/lang/reflect/Field;
    flags: (0x0002) ACC_PRIVATE

  private org.mongodb.morphia.annotations.Entity entityAn;
    descriptor: Lorg/mongodb/morphia/annotations/Entity;
    flags: (0x0002) ACC_PRIVATE

  private org.mongodb.morphia.annotations.Embedded embeddedAn;
    descriptor: Lorg/mongodb/morphia/annotations/Embedded;
    flags: (0x0002) ACC_PRIVATE

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

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

  private java.util.List<org.mongodb.morphia.mapping.MappedClass> interfaces;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedClass;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 69
            ldc Lorg/mongodb/morphia/mapping/MappedClass;
            invokestatic org.mongodb.morphia.logging.MorphiaLoggerFactory.get:(Ljava/lang/Class;)Lorg/mongodb/morphia/logging/Logger;
            putstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
         1: .line 75
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
         2: .line 80
            iconst_5
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/mongodb/morphia/annotations/PrePersist;
            aastore
            dup
            iconst_1
         3: .line 81
            ldc Lorg/mongodb/morphia/annotations/PreSave;
            aastore
            dup
            iconst_2
         4: .line 82
            ldc Lorg/mongodb/morphia/annotations/PreLoad;
            aastore
            dup
            iconst_3
         5: .line 83
            ldc Lorg/mongodb/morphia/annotations/PostPersist;
            aastore
            dup
            iconst_4
         6: .line 84
            ldc Lorg/mongodb/morphia/annotations/PostLoad;
            aastore
         7: .line 80
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            putstatic org.mongodb.morphia.mapping.MappedClass.LIFECYCLE_ANNOTATIONS:Ljava/util/List;
         8: .line 87
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/Embedded;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 88
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/Entity;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        10: .line 89
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/EntityListeners;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        11: .line 90
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/Version;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        12: .line 91
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/Converters;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        13: .line 92
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/Indexes;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        14: .line 93
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/Validation;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        15: .line 94
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/Field;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 95
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            ldc Lorg/mongodb/morphia/annotations/IndexOptions;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        17: .line 96
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.Class<?>, org.mongodb.morphia.mapping.Mapper);
    descriptor: (Ljava/lang/Class;Lorg/mongodb/morphia/mapping/Mapper;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
        start local 2 // org.mongodb.morphia.mapping.Mapper mapper
         0: .line 135
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 101
            aload 0 /* this */
         2: .line 102
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.mongodb.morphia.mapping.MappedClass.foundAnnotations:Ljava/util/Map;
         3: .line 106
            aload 0 /* this */
         4: .line 107
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.mongodb.morphia.mapping.MappedClass.lifecycleMethods:Ljava/util/Map;
         5: .line 111
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
         6: .line 127
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.mongodb.morphia.mapping.MappedClass.interfaces:Ljava/util/List;
         7: .line 136
            aload 0 /* this */
            aload 1 /* clazz */
            putfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
         8: .line 137
            aload 0 /* this */
            aload 2 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getOptions:()Lorg/mongodb/morphia/mapping/MapperOptions;
            putfield org.mongodb.morphia.mapping.MappedClass.mapperOptions:Lorg/mongodb/morphia/mapping/MapperOptions;
         9: .line 139
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            invokeinterface org.mongodb.morphia.logging.Logger.isTraceEnabled:()Z
            ifeq 11
        10: .line 140
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Creating MappedClass for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.mongodb.morphia.logging.Logger.trace:(Ljava/lang/String;)V
        11: .line 143
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class org.mongodb.morphia.mapping.Mapper
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.basicValidate:()V
        12: .line 144
            aload 0 /* this */
            aload 2 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.discover:(Lorg/mongodb/morphia/mapping/Mapper;)V
        13: .line 146
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            invokeinterface org.mongodb.morphia.logging.Logger.isDebugEnabled:()Z
            ifeq 15
        14: .line 147
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "MappedClass done: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.mongodb.morphia.logging.Logger.debug:(Ljava/lang/String;)V
        15: .line 149
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.mongodb.morphia.mapping.Mapper mapper
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lorg/mongodb/morphia/mapping/MappedClass;
            0   16     1   clazz  Ljava/lang/Class<*>;
            0   16     2  mapper  Lorg/mongodb/morphia/mapping/Mapper;
    Signature: (Ljava/lang/Class<*>;Lorg/mongodb/morphia/mapping/Mapper;)V
    MethodParameters:
        Name  Flags
      clazz   final
      mapper  final

  public org.mongodb.morphia.mapping.MappedClass getSuperClass();
    descriptor: ()Lorg/mongodb/morphia/mapping/MappedClass;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 159
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.superClass:Lorg/mongodb/morphia/mapping/MappedClass;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public boolean isInterface();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 167
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.isInterface:()Z
            ireturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public boolean isAbstract();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 177
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isAbstract:(I)Z
            ireturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public static boolean isSupportedType(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 187
            aload 0 /* clazz */
            invokestatic org.mongodb.morphia.utils.ReflectionUtils.isPropertyType:(Ljava/lang/Class;)Z
            ifeq 2
         1: .line 188
            iconst_1
            ireturn
         2: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* clazz */
            invokevirtual java.lang.Class.isArray:()Z
            ifne 3
            ldc Ljava/util/Map;
            aload 0 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
            ldc Ljava/lang/Iterable;
            aload 0 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 10
         3: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* clazz */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 6
         4: .line 193
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 1 /* subType */
        start local 1 // java.lang.Class subType
         5: .line 194
            goto 7
        end local 1 // java.lang.Class subType
         6: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* clazz */
            invokestatic org.mongodb.morphia.utils.ReflectionUtils.getParameterizedClass:(Ljava/lang/Class;)Ljava/lang/Class;
            astore 1 /* subType */
        start local 1 // java.lang.Class subType
         7: .line 199
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 1 /* subType */
            ifnull 9
            aload 1 /* subType */
            ldc Ljava/lang/Object;
            if_acmpeq 9
            aload 1 /* subType */
            invokestatic org.mongodb.morphia.utils.ReflectionUtils.isPropertyType:(Ljava/lang/Class;)Z
            ifne 9
         8: .line 200
            iconst_0
            ireturn
         9: .line 204
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.lang.Class subType
        10: .line 206
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0    clazz  Ljava/lang/Class<*>;
            5    6     1  subType  Ljava/lang/Class<*>;
            7   10     1  subType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
       Name  Flags
      clazz  final

  public static void addInterestingAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class annotation
         0: .line 215
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            aload 0 /* annotation */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 216
            return
        end local 0 // java.lang.Class annotation
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0  annotation  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)V
    MethodParameters:
            Name  Flags
      annotation  final

  public void addAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>, java.lang.annotation.Annotation);
    descriptor: (Ljava/lang/Class;Ljava/lang/annotation/Annotation;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
        start local 2 // java.lang.annotation.Annotation ann
         0: .line 225
            aload 2 /* ann */
            ifnull 1
            aload 1 /* clazz */
            ifnonnull 2
         1: .line 226
      StackMap locals:
      StackMap stack:
            return
         2: .line 229
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.foundAnnotations:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 230
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.foundAnnotations:Ljava/util/Map;
            aload 1 /* clazz */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.foundAnnotations:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            aload 2 /* ann */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 234
            return
        end local 2 // java.lang.annotation.Annotation ann
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    6     1  clazz  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            0    6     2    ann  Ljava/lang/annotation/Annotation;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/annotation/Annotation;)V
    MethodParameters:
       Name  Flags
      clazz  final
      ann    final

  public com.mongodb.DBObject callLifecycleMethods(java.lang.Class<? extends java.lang.annotation.Annotation>, , com.mongodb.DBObject, org.mongodb.morphia.mapping.Mapper);
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)Lcom/mongodb/DBObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=13, args_size=5
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class event
        start local 2 // java.lang.Object entity
        start local 3 // com.mongodb.DBObject dbObj
        start local 4 // org.mongodb.morphia.mapping.Mapper mapper
         0: .line 248
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getLifecycleMethods:(Ljava/lang/Class;)Ljava/util/List;
            astore 5 /* methodPairs */
        start local 5 // java.util.List methodPairs
         1: .line 249
            aload 3 /* dbObj */
            astore 6 /* retDbObj */
        start local 6 // com.mongodb.DBObject retDbObj
         2: .line 252
            aload 5 /* methodPairs */
            ifnull 36
         3: .line 253
            new java.util.HashMap
            dup
            aload 5 /* methodPairs */
            invokeinterface java.util.List.size:()I
            i2d
            ldc 1.3
            dmul
            d2i
            invokespecial java.util.HashMap.<init>:(I)V
            astore 8 /* toCall */
        start local 8 // java.util.HashMap toCall
         4: .line 254
            aload 5 /* methodPairs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 7
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.Object com.mongodb.DBObject org.mongodb.morphia.mapping.Mapper java.util.List com.mongodb.DBObject top java.util.HashMap top java.util.Iterator
      StackMap stack:
         5: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.mongodb.morphia.mapping.MappedClass$ClassMethodPair
            astore 9 /* cm */
        start local 9 // org.mongodb.morphia.mapping.MappedClass$ClassMethodPair cm
         6: .line 255
            aload 8 /* toCall */
            aload 9 /* cm */
            getfield org.mongodb.morphia.mapping.MappedClass$ClassMethodPair.clazz:Ljava/lang/Class;
            aconst_null
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 9 // org.mongodb.morphia.mapping.MappedClass$ClassMethodPair cm
         7: .line 254
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         8: .line 257
            aload 8 /* toCall */
            invokevirtual java.util.HashMap.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 10
            goto 12
      StackMap locals:
      StackMap stack:
         9: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 9 /* c */
        start local 9 // java.lang.Class c
        10: .line 258
            aload 9 /* c */
            ifnull 12
        11: .line 259
            aload 8 /* toCall */
            aload 9 /* c */
            aload 0 /* this */
            aload 9 /* c */
            aload 4 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getOrCreateInstance:(Ljava/lang/Class;Lorg/mongodb/morphia/mapping/Mapper;)Ljava/lang/Object;
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 9 // java.lang.Class c
        12: .line 257
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        13: .line 263
            aload 5 /* methodPairs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 35
      StackMap locals:
      StackMap stack:
        14: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.mongodb.morphia.mapping.MappedClass$ClassMethodPair
            astore 9 /* cm */
        start local 9 // org.mongodb.morphia.mapping.MappedClass$ClassMethodPair cm
        15: .line 264
            aload 9 /* cm */
            getfield org.mongodb.morphia.mapping.MappedClass$ClassMethodPair.method:Ljava/lang/reflect/Method;
            astore 11 /* method */
        start local 11 // java.lang.reflect.Method method
        16: .line 265
            aload 8 /* toCall */
            aload 9 /* cm */
            getfield org.mongodb.morphia.mapping.MappedClass$ClassMethodPair.clazz:Ljava/lang/Class;
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 12 /* inst */
        start local 12 // java.lang.Object inst
        17: .line 266
            aload 11 /* method */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
        18: .line 268
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            invokeinterface org.mongodb.morphia.logging.Logger.isDebugEnabled:()Z
            ifeq 20
        19: .line 269
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            ldc "Calling lifecycle method(@%s %s) on %s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* event */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 11 /* method */
            aastore
            dup
            iconst_2
            aload 12 /* inst */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.mongodb.morphia.logging.Logger.debug:(Ljava/lang/String;)V
        20: .line 272
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.Object com.mongodb.DBObject org.mongodb.morphia.mapping.Mapper java.util.List com.mongodb.DBObject top java.util.HashMap org.mongodb.morphia.mapping.MappedClass$ClassMethodPair java.util.Iterator java.lang.reflect.Method java.lang.Object
      StackMap stack:
            aload 12 /* inst */
            ifnonnull 26
        21: .line 273
            aload 11 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            ifne 24
        22: .line 274
            aload 11 /* method */
            aload 2 /* entity */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* tempObj */
        start local 7 // java.lang.Object tempObj
        23: .line 275
            goto 33
        end local 7 // java.lang.Object tempObj
        24: .line 276
      StackMap locals:
      StackMap stack:
            aload 11 /* method */
            aload 2 /* entity */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* retDbObj */
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* tempObj */
        start local 7 // java.lang.Object tempObj
        25: .line 278
            goto 33
        end local 7 // java.lang.Object tempObj
      StackMap locals:
      StackMap stack:
        26: aload 11 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            ifne 29
        27: .line 279
            aload 11 /* method */
            aload 12 /* inst */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* tempObj */
        start local 7 // java.lang.Object tempObj
        28: .line 280
            goto 33
        end local 7 // java.lang.Object tempObj
      StackMap locals:
      StackMap stack:
        29: aload 11 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            iconst_1
            if_icmpne 32
        30: .line 281
            aload 11 /* method */
            aload 12 /* inst */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* entity */
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* tempObj */
        start local 7 // java.lang.Object tempObj
        31: .line 282
            goto 33
        end local 7 // java.lang.Object tempObj
        32: .line 283
      StackMap locals:
      StackMap stack:
            aload 11 /* method */
            aload 12 /* inst */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* entity */
            aastore
            dup
            iconst_1
            aload 6 /* retDbObj */
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* tempObj */
        start local 7 // java.lang.Object tempObj
        33: .line 286
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.Object com.mongodb.DBObject org.mongodb.morphia.mapping.Mapper java.util.List com.mongodb.DBObject java.lang.Object java.util.HashMap org.mongodb.morphia.mapping.MappedClass$ClassMethodPair java.util.Iterator java.lang.reflect.Method java.lang.Object
      StackMap stack:
            aload 7 /* tempObj */
            ifnull 35
        34: .line 287
            aload 7 /* tempObj */
            checkcast com.mongodb.DBObject
            astore 6 /* retDbObj */
        end local 12 // java.lang.Object inst
        end local 11 // java.lang.reflect.Method method
        end local 9 // org.mongodb.morphia.mapping.MappedClass$ClassMethodPair cm
        end local 7 // java.lang.Object tempObj
        35: .line 263
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.Object com.mongodb.DBObject org.mongodb.morphia.mapping.Mapper java.util.List com.mongodb.DBObject top java.util.HashMap top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        end local 8 // java.util.HashMap toCall
        36: .line 292
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.Object com.mongodb.DBObject org.mongodb.morphia.mapping.Mapper java.util.List com.mongodb.DBObject
      StackMap stack:
            aload 0 /* this */
            aload 1 /* event */
            aload 2 /* entity */
            aload 3 /* dbObj */
            aload 4 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.callGlobalInterceptors:(Ljava/lang/Class;Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)V
        37: .line 293
            goto 42
      StackMap locals:
      StackMap stack: java.lang.IllegalAccessException
        38: astore 7 /* e */
        start local 7 // java.lang.IllegalAccessException e
        39: .line 294
            new java.lang.RuntimeException
            dup
            aload 7 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.IllegalAccessException e
        40: .line 295
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
            astore 7 /* e */
        start local 7 // java.lang.reflect.InvocationTargetException e
        41: .line 296
            new java.lang.RuntimeException
            dup
            aload 7 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.reflect.InvocationTargetException e
        42: .line 299
      StackMap locals:
      StackMap stack:
            aload 6 /* retDbObj */
            areturn
        end local 6 // com.mongodb.DBObject retDbObj
        end local 5 // java.util.List methodPairs
        end local 4 // org.mongodb.morphia.mapping.Mapper mapper
        end local 3 // com.mongodb.DBObject dbObj
        end local 2 // java.lang.Object entity
        end local 1 // java.lang.Class event
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   43     0         this  Lorg/mongodb/morphia/mapping/MappedClass;
            0   43     1        event  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            0   43     2       entity  Ljava/lang/Object;
            0   43     3        dbObj  Lcom/mongodb/DBObject;
            0   43     4       mapper  Lorg/mongodb/morphia/mapping/Mapper;
            1   43     5  methodPairs  Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedClass$ClassMethodPair;>;
            2   43     6     retDbObj  Lcom/mongodb/DBObject;
           23   24     7      tempObj  Ljava/lang/Object;
           25   26     7      tempObj  Ljava/lang/Object;
           28   29     7      tempObj  Ljava/lang/Object;
           31   32     7      tempObj  Ljava/lang/Object;
           33   35     7      tempObj  Ljava/lang/Object;
            4   36     8       toCall  Ljava/util/HashMap<Ljava/lang/Class<*>;Ljava/lang/Object;>;
            6    7     9           cm  Lorg/mongodb/morphia/mapping/MappedClass$ClassMethodPair;
           10   12     9            c  Ljava/lang/Class<*>;
           15   35     9           cm  Lorg/mongodb/morphia/mapping/MappedClass$ClassMethodPair;
           16   35    11       method  Ljava/lang/reflect/Method;
           17   35    12         inst  Ljava/lang/Object;
           39   40     7            e  Ljava/lang/IllegalAccessException;
           41   42     7            e  Ljava/lang/reflect/InvocationTargetException;
      Exception table:
        from    to  target  type
           2    37      38  Class java.lang.IllegalAccessException
           2    37      40  Class java.lang.reflect.InvocationTargetException
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)Lcom/mongodb/DBObject;
    MethodParameters:
        Name  Flags
      event   final
      entity  final
      dbObj   final
      mapper  final

  public boolean containsJavaFieldName(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.String name
         0: .line 309
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getMappedField:(Ljava/lang/String;)Lorg/mongodb/morphia/mapping/MappedField;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.String name
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.annotation.Annotation getAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
         0: .line 319
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.foundAnnotations:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* found */
        start local 2 // java.util.List found
         1: .line 320
            aload 2 /* found */
            ifnull 2
            aload 2 /* found */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 3
      StackMap locals: java.util.List
      StackMap stack:
         2: aconst_null
            goto 4
      StackMap locals:
      StackMap stack:
         3: aload 2 /* found */
            aload 2 /* found */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.annotation.Annotation
      StackMap locals:
      StackMap stack: java.lang.annotation.Annotation
         4: areturn
        end local 2 // java.util.List found
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    5     1  clazz  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            1    5     2  found  Ljava/util/List<Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Ljava/lang/annotation/Annotation;
    MethodParameters:
       Name  Flags
      clazz  final

  public <T> java.util.List<T> getAnnotations(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
         0: .line 332
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.foundAnnotations:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    1     1  clazz  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Ljava/util/List<TT;>;
    MethodParameters:
       Name  Flags
      clazz  final

  public java.lang.Class<?> getClazz();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 339
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;
    Signature: ()Ljava/lang/Class<*>;

  public java.lang.String getCollectionName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 346
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.entityAn:Lorg/mongodb/morphia/annotations/Entity;
            ifnull 1
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.entityAn:Lorg/mongodb/morphia/annotations/Entity;
            invokeinterface org.mongodb.morphia.annotations.Entity.value:()Ljava/lang/String;
            ldc "."
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         1: .line 347
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.mapperOptions:Lorg/mongodb/morphia/mapping/MapperOptions;
            invokevirtual org.mongodb.morphia.mapping.MapperOptions.isUseLowerCaseCollectionNames:()Z
            ifeq 2
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         3: areturn
         4: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.entityAn:Lorg/mongodb/morphia/annotations/Entity;
            invokeinterface org.mongodb.morphia.annotations.Entity.value:()Ljava/lang/String;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public org.mongodb.morphia.annotations.Embedded getEmbeddedAnnotation();
    descriptor: ()Lorg/mongodb/morphia/annotations/Embedded;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 356
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.embeddedAn:Lorg/mongodb/morphia/annotations/Embedded;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public org.mongodb.morphia.annotations.Entity getEntityAnnotation();
    descriptor: ()Lorg/mongodb/morphia/annotations/Entity;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 363
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.entityAn:Lorg/mongodb/morphia/annotations/Entity;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public java.util.List<org.mongodb.morphia.mapping.MappedField> getFieldsAnnotatedWith(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
         0: .line 373
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* results */
        start local 2 // java.util.List results
         1: .line 374
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.mongodb.morphia.mapping.MappedField
            astore 3 /* mf */
        start local 3 // org.mongodb.morphia.mapping.MappedField mf
         3: .line 375
            aload 3 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getAnnotations:()Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 376
            aload 2 /* results */
            aload 3 /* mf */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // org.mongodb.morphia.mapping.MappedField mf
         5: .line 374
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 379
            aload 2 /* results */
            areturn
        end local 2 // java.util.List results
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    7     1    clazz  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            1    7     2  results  Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedField;>;
            3    5     3       mf  Lorg/mongodb/morphia/mapping/MappedField;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedField;>;
    MethodParameters:
       Name  Flags
      clazz  final

  public java.lang.annotation.Annotation getFirstAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
         0: .line 389
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.foundAnnotations:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* found */
        start local 2 // java.util.List found
         1: .line 390
            aload 2 /* found */
            ifnull 2
            aload 2 /* found */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 3
      StackMap locals: java.util.List
      StackMap stack:
         2: aconst_null
            goto 4
      StackMap locals:
      StackMap stack:
         3: aload 2 /* found */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.annotation.Annotation
      StackMap locals:
      StackMap stack: java.lang.annotation.Annotation
         4: areturn
        end local 2 // java.util.List found
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    5     1  clazz  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            1    5     2  found  Ljava/util/List<Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Ljava/lang/annotation/Annotation;
    MethodParameters:
       Name  Flags
      clazz  final

  public java.lang.reflect.Field getIdField();
    descriptor: ()Ljava/lang/reflect/Field;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 397
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.idField:Ljava/lang/reflect/Field;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public java.util.List<org.mongodb.morphia.mapping.MappedClass$ClassMethodPair> getLifecycleMethods(java.lang.Class<java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
         0: .line 407
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.lifecycleMethods:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    1     1  clazz  Ljava/lang/Class<Ljava/lang/annotation/Annotation;>;
    Signature: (Ljava/lang/Class<Ljava/lang/annotation/Annotation;>;)Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedClass$ClassMethodPair;>;
    MethodParameters:
       Name  Flags
      clazz  final

  public org.mongodb.morphia.mapping.MappedField getMappedField(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/mongodb/morphia/mapping/MappedField;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.String storedName
         0: .line 417
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.String top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.mongodb.morphia.mapping.MappedField
            astore 2 /* mf */
        start local 2 // org.mongodb.morphia.mapping.MappedField mf
         2: .line 418
            aload 2 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getLoadNames:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 6
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.String org.mongodb.morphia.mapping.MappedField java.util.Iterator top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* n */
        start local 4 // java.lang.String n
         4: .line 419
            aload 1 /* storedName */
            aload 4 /* n */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 420
            aload 2 /* mf */
            areturn
        end local 4 // java.lang.String n
         6: .line 418
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        end local 2 // org.mongodb.morphia.mapping.MappedField mf
         7: .line 417
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.String top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         8: .line 425
            aconst_null
            areturn
        end local 1 // java.lang.String storedName
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    9     1  storedName  Ljava/lang/String;
            2    7     2          mf  Lorg/mongodb/morphia/mapping/MappedField;
            4    6     4           n  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      storedName  final

  public org.mongodb.morphia.mapping.MappedField getMappedFieldByJavaField(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/mongodb/morphia/mapping/MappedField;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.String name
         0: .line 435
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.String top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.mongodb.morphia.mapping.MappedField
            astore 2 /* mf */
        start local 2 // org.mongodb.morphia.mapping.MappedField mf
         2: .line 436
            aload 1 /* name */
            aload 2 /* mf */
            invokevirtual org.mongodb.morphia.mapping.MappedField.getJavaFieldName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 437
            aload 2 /* mf */
            areturn
        end local 2 // org.mongodb.morphia.mapping.MappedField mf
         4: .line 435
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 441
            aconst_null
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    6     1  name  Ljava/lang/String;
            2    4     2    mf  Lorg/mongodb/morphia/mapping/MappedField;
    MethodParameters:
      Name  Flags
      name  final

  public org.mongodb.morphia.mapping.MappedField getMappedIdField();
    descriptor: ()Lorg/mongodb/morphia/mapping/MappedField;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 448
            aload 0 /* this */
            ldc Lorg/mongodb/morphia/annotations/Id;
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getFieldsAnnotatedWith:(Ljava/lang/Class;)Ljava/util/List;
            astore 1 /* fields */
        start local 1 // java.util.List fields
         1: .line 449
            aload 1 /* fields */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 2
            aconst_null
            goto 3
      StackMap locals: java.util.List
      StackMap stack:
         2: aload 1 /* fields */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.mongodb.morphia.mapping.MappedField
      StackMap locals:
      StackMap stack: org.mongodb.morphia.mapping.MappedField
         3: areturn
        end local 1 // java.util.List fields
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/mongodb/morphia/mapping/MappedClass;
            1    4     1  fields  Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedField;>;

  public org.mongodb.morphia.mapping.MappedField getMappedVersionField();
    descriptor: ()Lorg/mongodb/morphia/mapping/MappedField;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 456
            aload 0 /* this */
            ldc Lorg/mongodb/morphia/annotations/Version;
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getFieldsAnnotatedWith:(Ljava/lang/Class;)Ljava/util/List;
            astore 1 /* fields */
        start local 1 // java.util.List fields
         1: .line 457
            aload 1 /* fields */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 2
            aconst_null
            goto 3
      StackMap locals: java.util.List
      StackMap stack:
         2: aload 1 /* fields */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.mongodb.morphia.mapping.MappedField
      StackMap locals:
      StackMap stack: org.mongodb.morphia.mapping.MappedField
         3: areturn
        end local 1 // java.util.List fields
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/mongodb/morphia/mapping/MappedClass;
            1    4     1  fields  Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedField;>;

  public java.util.List<org.mongodb.morphia.mapping.MappedField> getPersistenceFields();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 464
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;
    Signature: ()Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedField;>;

  public java.util.Map<java.lang.Class<? extends java.lang.annotation.Annotation>, java.util.List<java.lang.annotation.Annotation>> getRelevantAnnotations();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 471
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.foundAnnotations:Ljava/util/Map;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;
    Signature: ()Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/util/List<Ljava/lang/annotation/Annotation;>;>;

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 476
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Object.hashCode:()I
            ireturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Object o
         0: .line 481
            aload 0 /* this */
            aload 1 /* o */
            if_acmpne 2
         1: .line 482
            iconst_1
            ireturn
         2: .line 484
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            ifnull 3
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 1 /* o */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 4
         3: .line 485
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         4: .line 488
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            checkcast org.mongodb.morphia.mapping.MappedClass
            astore 2 /* that */
        start local 2 // org.mongodb.morphia.mapping.MappedClass that
         5: .line 490
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            aload 2 /* that */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 2 // org.mongodb.morphia.mapping.MappedClass that
        end local 1 // java.lang.Object o
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    6     1     o  Ljava/lang/Object;
            5    6     2  that  Lorg/mongodb/morphia/mapping/MappedClass;
    MethodParameters:
      Name  Flags
      o     final

  boolean isSubType(org.mongodb.morphia.mapping.MappedClass);
    descriptor: (Lorg/mongodb/morphia/mapping/MappedClass;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // org.mongodb.morphia.mapping.MappedClass mc
         0: .line 495
            aload 1 /* mc */
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.superClass:Lorg/mongodb/morphia/mapping/MappedClass;
            invokevirtual org.mongodb.morphia.mapping.MappedClass.equals:(Ljava/lang/Object;)Z
            ifne 1
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.interfaces:Ljava/util/List;
            aload 1 /* mc */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // org.mongodb.morphia.mapping.MappedClass mc
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    2     1    mc  Lorg/mongodb/morphia/mapping/MappedClass;
    MethodParameters:
      Name  Flags
      mc    final

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 500
            new java.lang.StringBuilder
            dup
            ldc "MappedClass - kind:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getCollectionName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " for "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getClazz:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " fields:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/mapping/MappedClass;

  public void update();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 508
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/mongodb/morphia/annotations/Embedded;
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.mongodb.morphia.annotations.Embedded
            putfield org.mongodb.morphia.mapping.MappedClass.embeddedAn:Lorg/mongodb/morphia/annotations/Embedded;
         1: .line 509
            aload 0 /* this */
            aload 0 /* this */
            ldc Lorg/mongodb/morphia/annotations/Entity;
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getFirstAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.mongodb.morphia.annotations.Entity
            putfield org.mongodb.morphia.mapping.MappedClass.entityAn:Lorg/mongodb/morphia/annotations/Entity;
         2: .line 511
            aload 0 /* this */
            ldc Lorg/mongodb/morphia/annotations/Id;
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getFieldsAnnotatedWith:(Ljava/lang/Class;)Ljava/util/List;
            astore 1 /* fields */
        start local 1 // java.util.List fields
         3: .line 512
            aload 1 /* fields */
            ifnull 5
            aload 1 /* fields */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 5
         4: .line 513
            aload 0 /* this */
            aload 1 /* fields */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.mongodb.morphia.mapping.MappedField
            invokevirtual org.mongodb.morphia.mapping.MappedField.getField:()Ljava/lang/reflect/Field;
            putfield org.mongodb.morphia.mapping.MappedClass.idField:Ljava/lang/reflect/Field;
         5: .line 515
      StackMap locals: java.util.List
      StackMap stack:
            return
        end local 1 // java.util.List fields
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/mongodb/morphia/mapping/MappedClass;
            3    6     1  fields  Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedField;>;

  public void validate(org.mongodb.morphia.mapping.Mapper);
    descriptor: (Lorg/mongodb/morphia/mapping/Mapper;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // org.mongodb.morphia.mapping.Mapper mapper
         0: .line 523
            new org.mongodb.morphia.mapping.validation.MappingValidator
            dup
            aload 1 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getOptions:()Lorg/mongodb/morphia/mapping/MapperOptions;
            invokevirtual org.mongodb.morphia.mapping.MapperOptions.getObjectFactory:()Lorg/mongodb/morphia/ObjectFactory;
            invokespecial org.mongodb.morphia.mapping.validation.MappingValidator.<init>:(Lorg/mongodb/morphia/ObjectFactory;)V
            aload 1 /* mapper */
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.validation.MappingValidator.validate:(Lorg/mongodb/morphia/mapping/Mapper;Lorg/mongodb/morphia/mapping/MappedClass;)V
         1: .line 524
            return
        end local 1 // org.mongodb.morphia.mapping.Mapper mapper
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    2     1  mapper  Lorg/mongodb/morphia/mapping/Mapper;
    MethodParameters:
        Name  Flags
      mapper  final

  protected void basicValidate();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
         0: .line 527
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
            istore 1 /* isStatic */
        start local 1 // boolean isStatic
         1: .line 528
            iload 1 /* isStatic */
            ifne 3
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.isMemberClass:()Z
            ifeq 3
         2: .line 529
            new org.mongodb.morphia.mapping.MappingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot use non-static inner class: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ". Please make static."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.mongodb.morphia.mapping.MappingException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 531
      StackMap locals: int
      StackMap stack:
            return
        end local 1 // boolean isStatic
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/mongodb/morphia/mapping/MappedClass;
            1    4     1  isStatic  Z

  protected void discover(org.mongodb.morphia.mapping.Mapper);
    descriptor: (Lorg/mongodb/morphia/mapping/Mapper;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // org.mongodb.morphia.mapping.Mapper mapper
         0: .line 537
            getstatic org.mongodb.morphia.mapping.MappedClass.INTERESTING_ANNOTATIONS:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 3
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 2 /* c */
        start local 2 // java.lang.Class c
         2: .line 538
            aload 0 /* this */
            aload 2 /* c */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.addAnnotation:(Ljava/lang/Class;)V
        end local 2 // java.lang.Class c
         3: .line 537
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 541
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 2 /* superclass */
        start local 2 // java.lang.Class superclass
         5: .line 542
            aload 2 /* superclass */
            ifnull 7
            aload 2 /* superclass */
            ldc Ljava/lang/Object;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 7
         6: .line 543
            aload 0 /* this */
            aload 1 /* mapper */
            aload 2 /* superclass */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getMappedClass:(Ljava/lang/Object;)Lorg/mongodb/morphia/mapping/MappedClass;
            putfield org.mongodb.morphia.mapping.MappedClass.superClass:Lorg/mongodb/morphia/mapping/MappedClass;
         7: .line 545
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class
      StackMap stack:
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 11
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class top int int java.lang.Class[]
      StackMap stack:
         8: aload 6
            iload 4
            aaload
            astore 3 /* aClass */
        start local 3 // java.lang.Class aClass
         9: .line 546
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.interfaces:Ljava/util/List;
            aload 1 /* mapper */
            aload 3 /* aClass */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getMappedClass:(Ljava/lang/Object;)Lorg/mongodb/morphia/mapping/MappedClass;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.Class aClass
        10: .line 545
            iinc 4 1
      StackMap locals:
      StackMap stack:
        11: iload 4
            iload 5
            if_icmplt 8
        12: .line 549
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* lifecycleClasses */
        start local 3 // java.util.List lifecycleClasses
        13: .line 550
            aload 3 /* lifecycleClasses */
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        14: .line 552
            aload 0 /* this */
            ldc Lorg/mongodb/morphia/annotations/EntityListeners;
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.mongodb.morphia.annotations.EntityListeners
            astore 4 /* entityLisAnn */
        start local 4 // org.mongodb.morphia.annotations.EntityListeners entityLisAnn
        15: .line 553
            aload 4 /* entityLisAnn */
            ifnull 17
            aload 4 /* entityLisAnn */
            invokeinterface org.mongodb.morphia.annotations.EntityListeners.value:()[Ljava/lang/Class;
            arraylength
            ifeq 17
        16: .line 554
            aload 3 /* lifecycleClasses */
            aload 4 /* entityLisAnn */
            invokeinterface org.mongodb.morphia.annotations.EntityListeners.value:()[Ljava/lang/Class;
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
        17: .line 557
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners
      StackMap stack:
            aload 3 /* lifecycleClasses */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 29
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners top java.util.Iterator
      StackMap stack:
        18: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 5 /* cls */
        start local 5 // java.lang.Class cls
        19: .line 558
            aload 5 /* cls */
            invokestatic org.mongodb.morphia.utils.ReflectionUtils.getDeclaredAndInheritedMethods:(Ljava/lang/Class;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 28
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners java.lang.Class java.util.Iterator top java.util.Iterator
      StackMap stack:
        20: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 7 /* m */
        start local 7 // java.lang.reflect.Method m
        21: .line 559
            getstatic org.mongodb.morphia.mapping.MappedClass.LIFECYCLE_ANNOTATIONS:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 27
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners java.lang.Class java.util.Iterator java.lang.reflect.Method java.util.Iterator top java.util.Iterator
      StackMap stack:
        22: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 9 /* c */
        start local 9 // java.lang.Class c
        23: .line 560
            aload 7 /* m */
            aload 9 /* c */
            invokevirtual java.lang.reflect.Method.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifeq 27
        24: .line 561
            aload 0 /* this */
            aload 9 /* c */
            aload 7 /* m */
            aload 5 /* cls */
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 25
            aconst_null
            goto 26
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners java.lang.Class java.util.Iterator java.lang.reflect.Method java.util.Iterator java.lang.Class java.util.Iterator
      StackMap stack: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.reflect.Method
        25: aload 5 /* cls */
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners java.lang.Class java.util.Iterator java.lang.reflect.Method java.util.Iterator java.lang.Class java.util.Iterator
      StackMap stack: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.reflect.Method java.lang.Class
        26: invokevirtual org.mongodb.morphia.mapping.MappedClass.addLifecycleEventMethod:(Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/lang/Class;)V
        end local 9 // java.lang.Class c
        27: .line 559
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners java.lang.Class java.util.Iterator java.lang.reflect.Method java.util.Iterator top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 22
        end local 7 // java.lang.reflect.Method m
        28: .line 558
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners java.lang.Class java.util.Iterator top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        end local 5 // java.lang.Class cls
        29: .line 557
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        30: .line 567
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.update:()V
        31: .line 569
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            iconst_1
            invokestatic org.mongodb.morphia.utils.ReflectionUtils.getDeclaredAndInheritedFields:(Ljava/lang/Class;Z)[Ljava/lang/reflect/Field;
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 56
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners top int int java.lang.reflect.Field[]
      StackMap stack:
        32: aload 8
            iload 6
            aaload
            astore 5 /* field */
        start local 5 // java.lang.reflect.Field field
        33: .line 570
            aload 5 /* field */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
        34: .line 571
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getModifiers:()I
            istore 9 /* fieldMods */
        start local 9 // int fieldMods
        35: .line 572
            aload 0 /* this */
            aload 5 /* field */
            iload 9 /* fieldMods */
            aload 1 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.isIgnorable:(Ljava/lang/reflect/Field;ILorg/mongodb/morphia/mapping/Mapper;)Z
            ifne 55
        36: .line 573
            aload 5 /* field */
            ldc Lorg/mongodb/morphia/annotations/Id;
            invokevirtual java.lang.reflect.Field.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifeq 40
        37: .line 574
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
            new org.mongodb.morphia.mapping.MappedField
            dup
            aload 5 /* field */
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            aload 1 /* mapper */
            invokespecial org.mongodb.morphia.mapping.MappedField.<init>:(Ljava/lang/reflect/Field;Ljava/lang/Class;Lorg/mongodb/morphia/mapping/Mapper;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        38: .line 575
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.update:()V
        39: .line 576
            goto 55
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners java.lang.reflect.Field int int java.lang.reflect.Field[] int
      StackMap stack:
        40: aload 5 /* field */
            ldc Lorg/mongodb/morphia/annotations/Property;
            invokevirtual java.lang.reflect.Field.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifne 46
        41: .line 577
            aload 5 /* field */
            ldc Lorg/mongodb/morphia/annotations/Reference;
            invokevirtual java.lang.reflect.Field.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifne 46
        42: .line 578
            aload 5 /* field */
            ldc Lorg/mongodb/morphia/annotations/Embedded;
            invokevirtual java.lang.reflect.Field.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifne 46
        43: .line 579
            aload 5 /* field */
            ldc Lorg/mongodb/morphia/annotations/Serialized;
            invokevirtual java.lang.reflect.Field.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifne 46
        44: .line 580
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
            invokestatic org.mongodb.morphia.mapping.MappedClass.isSupportedType:(Ljava/lang/Class;)Z
            ifne 46
        45: .line 581
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
            ldc Ljava/io/Serializable;
            invokestatic org.mongodb.morphia.utils.ReflectionUtils.implementsInterface:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifeq 48
        46: .line 582
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
            new org.mongodb.morphia.mapping.MappedField
            dup
            aload 5 /* field */
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            aload 1 /* mapper */
            invokespecial org.mongodb.morphia.mapping.MappedField.<init>:(Ljava/lang/reflect/Field;Ljava/lang/Class;Lorg/mongodb/morphia/mapping/Mapper;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        47: .line 583
            goto 55
        48: .line 584
      StackMap locals:
      StackMap stack:
            aload 1 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getOptions:()Lorg/mongodb/morphia/mapping/MapperOptions;
            invokevirtual org.mongodb.morphia.mapping.MapperOptions.getDefaultMapper:()Lorg/mongodb/morphia/mapping/CustomMapper;
            ifnull 51
        49: .line 585
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.persistenceFields:Ljava/util/List;
            new org.mongodb.morphia.mapping.MappedField
            dup
            aload 5 /* field */
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            aload 1 /* mapper */
            invokespecial org.mongodb.morphia.mapping.MappedField.<init>:(Ljava/lang/reflect/Field;Ljava/lang/Class;Lorg/mongodb/morphia/mapping/Mapper;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        50: .line 586
            goto 55
      StackMap locals:
      StackMap stack:
        51: getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            invokeinterface org.mongodb.morphia.logging.Logger.isWarningEnabled:()Z
            ifeq 55
        52: .line 587
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            ldc "Ignoring (will not persist) field: %s.%s [type:%s]"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.clazz:Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_2
        53: .line 588
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
        54: .line 587
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.mongodb.morphia.logging.Logger.warning:(Ljava/lang/String;)V
        end local 9 // int fieldMods
        end local 5 // java.lang.reflect.Field field
        55: .line 569
      StackMap locals: org.mongodb.morphia.mapping.MappedClass org.mongodb.morphia.mapping.Mapper java.lang.Class java.util.List org.mongodb.morphia.annotations.EntityListeners top int int java.lang.reflect.Field[]
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        56: iload 6
            iload 7
            if_icmplt 32
        57: .line 593
            return
        end local 4 // org.mongodb.morphia.annotations.EntityListeners entityLisAnn
        end local 3 // java.util.List lifecycleClasses
        end local 2 // java.lang.Class superclass
        end local 1 // org.mongodb.morphia.mapping.Mapper mapper
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   58     0              this  Lorg/mongodb/morphia/mapping/MappedClass;
            0   58     1            mapper  Lorg/mongodb/morphia/mapping/Mapper;
            2    3     2                 c  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            5   58     2        superclass  Ljava/lang/Class<*>;
            9   10     3            aClass  Ljava/lang/Class<*>;
           13   58     3  lifecycleClasses  Ljava/util/List<Ljava/lang/Class<*>;>;
           15   58     4      entityLisAnn  Lorg/mongodb/morphia/annotations/EntityListeners;
           19   29     5               cls  Ljava/lang/Class<*>;
           21   28     7                 m  Ljava/lang/reflect/Method;
           23   27     9                 c  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
           33   55     5             field  Ljava/lang/reflect/Field;
           35   55     9         fieldMods  I
    MethodParameters:
        Name  Flags
      mapper  final

  private void addAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
         0: .line 599
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.getClazz:()Ljava/lang/Class;
            aload 1 /* clazz */
            invokestatic org.mongodb.morphia.utils.ReflectionUtils.getAnnotations:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;
            astore 2 /* annotations */
        start local 2 // java.util.List annotations
         1: .line 600
            aload 2 /* annotations */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.annotation.Annotation
            astore 3 /* ann */
        start local 3 // java.lang.annotation.Annotation ann
         3: .line 601
            aload 0 /* this */
            aload 1 /* clazz */
            aload 3 /* ann */
            invokevirtual org.mongodb.morphia.mapping.MappedClass.addAnnotation:(Ljava/lang/Class;Ljava/lang/annotation/Annotation;)V
        end local 3 // java.lang.annotation.Annotation ann
         4: .line 600
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 603
            return
        end local 2 // java.util.List annotations
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    6     1        clazz  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            1    6     2  annotations  Ljava/util/List<+Ljava/lang/annotation/Annotation;>;
            3    4     3          ann  Ljava/lang/annotation/Annotation;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)V
    MethodParameters:
       Name  Flags
      clazz  final

  private void addLifecycleEventMethod(java.lang.Class<? extends java.lang.annotation.Annotation>, java.lang.reflect.Method, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class lceClazz
        start local 2 // java.lang.reflect.Method m
        start local 3 // java.lang.Class clazz
         0: .line 606
            new org.mongodb.morphia.mapping.MappedClass$ClassMethodPair
            dup
            aload 3 /* clazz */
            aload 2 /* m */
            invokespecial org.mongodb.morphia.mapping.MappedClass$ClassMethodPair.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Method;)V
            astore 4 /* cm */
        start local 4 // org.mongodb.morphia.mapping.MappedClass$ClassMethodPair cm
         1: .line 607
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.lifecycleMethods:Ljava/util/Map;
            aload 1 /* lceClazz */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 608
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.lifecycleMethods:Ljava/util/Map;
            aload 1 /* lceClazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            aload 4 /* cm */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 609
            goto 7
         4: .line 610
      StackMap locals: org.mongodb.morphia.mapping.MappedClass$ClassMethodPair
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* methods */
        start local 5 // java.util.List methods
         5: .line 611
            aload 5 /* methods */
            aload 4 /* cm */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 612
            aload 0 /* this */
            getfield org.mongodb.morphia.mapping.MappedClass.lifecycleMethods:Ljava/util/Map;
            aload 1 /* lceClazz */
            aload 5 /* methods */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // java.util.List methods
         7: .line 614
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.mongodb.morphia.mapping.MappedClass$ClassMethodPair cm
        end local 3 // java.lang.Class clazz
        end local 2 // java.lang.reflect.Method m
        end local 1 // java.lang.Class lceClazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    8     1  lceClazz  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            0    8     2         m  Ljava/lang/reflect/Method;
            0    8     3     clazz  Ljava/lang/Class<*>;
            1    8     4        cm  Lorg/mongodb/morphia/mapping/MappedClass$ClassMethodPair;
            5    7     5   methods  Ljava/util/List<Lorg/mongodb/morphia/mapping/MappedClass$ClassMethodPair;>;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/reflect/Method;Ljava/lang/Class<*>;)V
    MethodParameters:
          Name  Flags
      lceClazz  final
      m         final
      clazz     final

  private void callGlobalInterceptors(java.lang.Class<? extends java.lang.annotation.Annotation>, , com.mongodb.DBObject, org.mongodb.morphia.mapping.Mapper);
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class event
        start local 2 // java.lang.Object entity
        start local 3 // com.mongodb.DBObject dbObj
        start local 4 // org.mongodb.morphia.mapping.Mapper mapper
         0: .line 618
            aload 4 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getInterceptors:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 18
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.Object com.mongodb.DBObject org.mongodb.morphia.mapping.Mapper top java.util.Iterator
      StackMap stack:
         1: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.mongodb.morphia.EntityInterceptor
            astore 5 /* ei */
        start local 5 // org.mongodb.morphia.EntityInterceptor ei
         2: .line 619
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            invokeinterface org.mongodb.morphia.logging.Logger.isDebugEnabled:()Z
            ifeq 4
         3: .line 620
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Calling interceptor method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* event */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " on "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* ei */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.mongodb.morphia.logging.Logger.debug:(Ljava/lang/String;)V
         4: .line 623
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.Object com.mongodb.DBObject org.mongodb.morphia.mapping.Mapper org.mongodb.morphia.EntityInterceptor java.util.Iterator
      StackMap stack:
            aload 1 /* event */
            ldc Lorg/mongodb/morphia/annotations/PreLoad;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 624
            aload 5 /* ei */
            aload 2 /* entity */
            aload 3 /* dbObj */
            aload 4 /* mapper */
            invokeinterface org.mongodb.morphia.EntityInterceptor.preLoad:(Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)V
         6: .line 625
            goto 18
      StackMap locals:
      StackMap stack:
         7: aload 1 /* event */
            ldc Lorg/mongodb/morphia/annotations/PostLoad;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 10
         8: .line 626
            aload 5 /* ei */
            aload 2 /* entity */
            aload 3 /* dbObj */
            aload 4 /* mapper */
            invokeinterface org.mongodb.morphia.EntityInterceptor.postLoad:(Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)V
         9: .line 627
            goto 18
      StackMap locals:
      StackMap stack:
        10: aload 1 /* event */
            ldc Lorg/mongodb/morphia/annotations/PrePersist;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 13
        11: .line 628
            aload 5 /* ei */
            aload 2 /* entity */
            aload 3 /* dbObj */
            aload 4 /* mapper */
            invokeinterface org.mongodb.morphia.EntityInterceptor.prePersist:(Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)V
        12: .line 629
            goto 18
      StackMap locals:
      StackMap stack:
        13: aload 1 /* event */
            ldc Lorg/mongodb/morphia/annotations/PreSave;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 16
        14: .line 630
            aload 5 /* ei */
            aload 2 /* entity */
            aload 3 /* dbObj */
            aload 4 /* mapper */
            invokeinterface org.mongodb.morphia.EntityInterceptor.preSave:(Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)V
        15: .line 631
            goto 18
      StackMap locals:
      StackMap stack:
        16: aload 1 /* event */
            ldc Lorg/mongodb/morphia/annotations/PostPersist;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 18
        17: .line 632
            aload 5 /* ei */
            aload 2 /* entity */
            aload 3 /* dbObj */
            aload 4 /* mapper */
            invokeinterface org.mongodb.morphia.EntityInterceptor.postPersist:(Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)V
        end local 5 // org.mongodb.morphia.EntityInterceptor ei
        18: .line 618
      StackMap locals: org.mongodb.morphia.mapping.MappedClass java.lang.Class java.lang.Object com.mongodb.DBObject org.mongodb.morphia.mapping.Mapper top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        19: .line 635
            return
        end local 4 // org.mongodb.morphia.mapping.Mapper mapper
        end local 3 // com.mongodb.DBObject dbObj
        end local 2 // java.lang.Object entity
        end local 1 // java.lang.Class event
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   20     0    this  Lorg/mongodb/morphia/mapping/MappedClass;
            0   20     1   event  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            0   20     2  entity  Ljava/lang/Object;
            0   20     3   dbObj  Lcom/mongodb/DBObject;
            0   20     4  mapper  Lorg/mongodb/morphia/mapping/Mapper;
            2   18     5      ei  Lorg/mongodb/morphia/EntityInterceptor;
    Signature: (Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/Object;Lcom/mongodb/DBObject;Lorg/mongodb/morphia/mapping/Mapper;)V
    MethodParameters:
        Name  Flags
      event   final
      entity  final
      dbObj   final
      mapper  final

  private  getOrCreateInstance(java.lang.Class<?>, org.mongodb.morphia.mapping.Mapper);
    descriptor: (Ljava/lang/Class;Lorg/mongodb/morphia/mapping/Mapper;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.Class clazz
        start local 2 // org.mongodb.morphia.mapping.Mapper mapper
         0: .line 638
            aload 2 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getInstanceCache:()Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 639
            aload 2 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getInstanceCache:()Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
         2: .line 642
      StackMap locals:
      StackMap stack:
            aload 2 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getOptions:()Lorg/mongodb/morphia/mapping/MapperOptions;
            invokevirtual org.mongodb.morphia.mapping.MapperOptions.getObjectFactory:()Lorg/mongodb/morphia/ObjectFactory;
            aload 1 /* clazz */
            invokeinterface org.mongodb.morphia.ObjectFactory.createInstance:(Ljava/lang/Class;)Ljava/lang/Object;
            astore 3 /* o */
        start local 3 // java.lang.Object o
         3: .line 643
            aload 2 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getInstanceCache:()Ljava/util/Map;
            aload 1 /* clazz */
            aload 3 /* o */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* nullO */
        start local 4 // java.lang.Object nullO
         4: .line 644
            aload 4 /* nullO */
            ifnull 7
         5: .line 645
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            invokeinterface org.mongodb.morphia.logging.Logger.isErrorEnabled:()Z
            ifeq 7
         6: .line 646
            getstatic org.mongodb.morphia.mapping.MappedClass.LOG:Lorg/mongodb/morphia/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Race-condition, created duplicate class: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.mongodb.morphia.logging.Logger.error:(Ljava/lang/String;)V
         7: .line 650
      StackMap locals: java.lang.Object java.lang.Object
      StackMap stack:
            aload 3 /* o */
            areturn
        end local 4 // java.lang.Object nullO
        end local 3 // java.lang.Object o
        end local 2 // org.mongodb.morphia.mapping.Mapper mapper
        end local 1 // java.lang.Class clazz
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    8     1   clazz  Ljava/lang/Class<*>;
            0    8     2  mapper  Lorg/mongodb/morphia/mapping/Mapper;
            3    8     3       o  Ljava/lang/Object;
            4    8     4   nullO  Ljava/lang/Object;
    Signature: (Ljava/lang/Class<*>;Lorg/mongodb/morphia/mapping/Mapper;)Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      clazz   final
      mapper  final

  private boolean isIgnorable(java.lang.reflect.Field, int, org.mongodb.morphia.mapping.Mapper);
    descriptor: (Ljava/lang/reflect/Field;ILorg/mongodb/morphia/mapping/Mapper;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.mongodb.morphia.mapping.MappedClass this
        start local 1 // java.lang.reflect.Field field
        start local 2 // int fieldMods
        start local 3 // org.mongodb.morphia.mapping.Mapper mapper
         0: .line 655
            aload 1 /* field */
            ldc Lorg/mongodb/morphia/annotations/Transient;
            invokevirtual java.lang.reflect.Field.isAnnotationPresent:(Ljava/lang/Class;)Z
            ifne 5
         1: .line 656
            iload 2 /* fieldMods */
            invokestatic java.lang.reflect.Modifier.isTransient:(I)Z
            ifne 5
         2: .line 657
            aload 1 /* field */
            invokevirtual java.lang.reflect.Field.isSynthetic:()Z
            ifeq 3
            iload 2 /* fieldMods */
            invokestatic java.lang.reflect.Modifier.isTransient:(I)Z
            ifne 5
         3: .line 658
      StackMap locals:
      StackMap stack:
            aload 3 /* mapper */
            invokevirtual org.mongodb.morphia.mapping.Mapper.getOptions:()Lorg/mongodb/morphia/mapping/MapperOptions;
            invokevirtual org.mongodb.morphia.mapping.MapperOptions.isIgnoreFinals:()Z
            ifeq 4
            iload 2 /* fieldMods */
            invokestatic java.lang.reflect.Modifier.isFinal:(I)Z
            ifne 5
         4: .line 655
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_1
            ireturn
        end local 3 // org.mongodb.morphia.mapping.Mapper mapper
        end local 2 // int fieldMods
        end local 1 // java.lang.reflect.Field field
        end local 0 // org.mongodb.morphia.mapping.MappedClass this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/mongodb/morphia/mapping/MappedClass;
            0    6     1      field  Ljava/lang/reflect/Field;
            0    6     2  fieldMods  I
            0    6     3     mapper  Lorg/mongodb/morphia/mapping/Mapper;
    MethodParameters:
           Name  Flags
      field      final
      fieldMods  final
      mapper     final
}
SourceFile: "MappedClass.java"
NestMembers:
  org.mongodb.morphia.mapping.MappedClass$ClassMethodPair
InnerClasses:
  private ClassMethodPair = org.mongodb.morphia.mapping.MappedClass$ClassMethodPair of org.mongodb.morphia.mapping.MappedClass