public class org.mongodb.morphia.dao.BasicDAO<T, K> implements org.mongodb.morphia.dao.DAO<T, K>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.mongodb.morphia.dao.BasicDAO
  super_class: java.lang.Object
{
  protected java.lang.Class<T> entityClazz;
    descriptor: Ljava/lang/Class;
    flags: (0x0004) ACC_PROTECTED
    Signature: Ljava/lang/Class<TT;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  protected org.mongodb.morphia.DatastoreImpl ds;
    descriptor: Lorg/mongodb/morphia/DatastoreImpl;
    flags: (0x0004) ACC_PROTECTED
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public void <init>(java.lang.Class<T>, com.mongodb.MongoClient, org.mongodb.morphia.Morphia, java.lang.String);
    descriptor: (Ljava/lang/Class;Lcom/mongodb/MongoClient;Lorg/mongodb/morphia/Morphia;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Class entityClass
        start local 2 // com.mongodb.MongoClient mongoClient
        start local 3 // org.mongodb.morphia.Morphia morphia
        start local 4 // java.lang.String dbName
         0: .line 51
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            aload 0 /* this */
            aload 2 /* mongoClient */
            aload 3 /* morphia */
            aload 4 /* dbName */
            invokevirtual org.mongodb.morphia.dao.BasicDAO.initDS:(Lcom/mongodb/MongoClient;Lorg/mongodb/morphia/Morphia;Ljava/lang/String;)V
         2: .line 53
            aload 0 /* this */
            aload 1 /* entityClass */
            invokevirtual org.mongodb.morphia.dao.BasicDAO.initType:(Ljava/lang/Class;)V
         3: .line 54
            return
        end local 4 // java.lang.String dbName
        end local 3 // org.mongodb.morphia.Morphia morphia
        end local 2 // com.mongodb.MongoClient mongoClient
        end local 1 // java.lang.Class entityClass
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    4     1  entityClass  Ljava/lang/Class<TT;>;
            0    4     2  mongoClient  Lcom/mongodb/MongoClient;
            0    4     3      morphia  Lorg/mongodb/morphia/Morphia;
            0    4     4       dbName  Ljava/lang/String;
    Signature: (Ljava/lang/Class<TT;>;Lcom/mongodb/MongoClient;Lorg/mongodb/morphia/Morphia;Ljava/lang/String;)V
    MethodParameters:
             Name  Flags
      entityClass  final
      mongoClient  final
      morphia      final
      dbName       final

  public void <init>(java.lang.Class<T>, org.mongodb.morphia.Datastore);
    descriptor: (Ljava/lang/Class;Lorg/mongodb/morphia/Datastore;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Class entityClass
        start local 2 // org.mongodb.morphia.Datastore ds
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 0 /* this */
            aload 2 /* ds */
            checkcast org.mongodb.morphia.DatastoreImpl
            putfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
         2: .line 64
            aload 0 /* this */
            aload 1 /* entityClass */
            invokevirtual org.mongodb.morphia.dao.BasicDAO.initType:(Ljava/lang/Class;)V
         3: .line 65
            return
        end local 2 // org.mongodb.morphia.Datastore ds
        end local 1 // java.lang.Class entityClass
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    4     1  entityClass  Ljava/lang/Class<TT;>;
            0    4     2           ds  Lorg/mongodb/morphia/Datastore;
    Signature: (Ljava/lang/Class<TT;>;Lorg/mongodb/morphia/Datastore;)V
    MethodParameters:
             Name  Flags
      entityClass  final
      ds           final

  protected void <init>(com.mongodb.MongoClient, org.mongodb.morphia.Morphia, java.lang.String);
    descriptor: (Lcom/mongodb/MongoClient;Lorg/mongodb/morphia/Morphia;Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // com.mongodb.MongoClient mongoClient
        start local 2 // org.mongodb.morphia.Morphia morphia
        start local 3 // java.lang.String dbName
         0: .line 77
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 78
            aload 0 /* this */
            aload 1 /* mongoClient */
            aload 2 /* morphia */
            aload 3 /* dbName */
            invokevirtual org.mongodb.morphia.dao.BasicDAO.initDS:(Lcom/mongodb/MongoClient;Lorg/mongodb/morphia/Morphia;Ljava/lang/String;)V
         2: .line 79
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getGenericSuperclass:()Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.ParameterizedType
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            iconst_0
            aaload
            checkcast java.lang.Class
            invokevirtual org.mongodb.morphia.dao.BasicDAO.initType:(Ljava/lang/Class;)V
         3: .line 80
            return
        end local 3 // java.lang.String dbName
        end local 2 // org.mongodb.morphia.Morphia morphia
        end local 1 // com.mongodb.MongoClient mongoClient
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    4     1  mongoClient  Lcom/mongodb/MongoClient;
            0    4     2      morphia  Lorg/mongodb/morphia/Morphia;
            0    4     3       dbName  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      mongoClient  final
      morphia      final
      dbName       final

  protected void <init>(org.mongodb.morphia.Datastore);
    descriptor: (Lorg/mongodb/morphia/Datastore;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.Datastore ds
         0: .line 83
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 84
            aload 0 /* this */
            aload 1 /* ds */
            checkcast org.mongodb.morphia.DatastoreImpl
            putfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
         2: .line 85
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getGenericSuperclass:()Ljava/lang/reflect/Type;
            checkcast java.lang.reflect.ParameterizedType
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            iconst_0
            aaload
            checkcast java.lang.Class
            invokevirtual org.mongodb.morphia.dao.BasicDAO.initType:(Ljava/lang/Class;)V
         3: .line 86
            return
        end local 1 // org.mongodb.morphia.Datastore ds
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    4     1    ds  Lorg/mongodb/morphia/Datastore;
    MethodParameters:
      Name  Flags
      ds    final

  public long count();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 90
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.getCount:(Ljava/lang/Class;)J
            lreturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;

  public long count(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.String key
        start local 2 // java.lang.Object value
         0: .line 95
            aload 0 /* this */
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.find:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/Query;
            aload 1 /* key */
            aload 2 /* value */
            invokeinterface org.mongodb.morphia.query.Query.filter:(Ljava/lang/String;Ljava/lang/Object;)Lorg/mongodb/morphia/query/Query;
            invokevirtual org.mongodb.morphia.dao.BasicDAO.count:(Lorg/mongodb/morphia/query/Query;)J
            lreturn
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String key
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1    key  Ljava/lang/String;
            0    1     2  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      key    final
      value  final

  public long count(org.mongodb.morphia.query.Query<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
         0: .line 100
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 1 /* query */
            invokevirtual org.mongodb.morphia.DatastoreImpl.getCount:(Lorg/mongodb/morphia/query/Query;)J
            lreturn
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;)J
    MethodParameters:
       Name  Flags
      query  final

  public org.mongodb.morphia.query.Query<T> createQuery();
    descriptor: ()Lorg/mongodb/morphia/query/Query;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 105
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.find:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/Query;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
    Signature: ()Lorg/mongodb/morphia/query/Query<TT;>;

  public org.mongodb.morphia.query.UpdateOperations<T> createUpdateOperations();
    descriptor: ()Lorg/mongodb/morphia/query/UpdateOperations;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 110
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.createUpdateOperations:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/UpdateOperations;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
    Signature: ()Lorg/mongodb/morphia/query/UpdateOperations<TT;>;

  public com.mongodb.WriteResult delete(T);
    descriptor: (Ljava/lang/Object;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Object entity
         0: .line 115
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 1 /* entity */
            invokevirtual org.mongodb.morphia.DatastoreImpl.delete:(Ljava/lang/Object;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // java.lang.Object entity
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  entity  TT;
    Signature: (TT;)Lcom/mongodb/WriteResult;
    MethodParameters:
        Name  Flags
      entity  final

  public com.mongodb.WriteResult delete(T, com.mongodb.WriteConcern);
    descriptor: (Ljava/lang/Object;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Object entity
        start local 2 // com.mongodb.WriteConcern wc
         0: .line 120
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 1 /* entity */
            aload 2 /* wc */
            invokevirtual org.mongodb.morphia.DatastoreImpl.delete:(Ljava/lang/Object;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
            areturn
        end local 2 // com.mongodb.WriteConcern wc
        end local 1 // java.lang.Object entity
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  entity  TT;
            0    1     2      wc  Lcom/mongodb/WriteConcern;
    Signature: (TT;Lcom/mongodb/WriteConcern;)Lcom/mongodb/WriteResult;
    MethodParameters:
        Name  Flags
      entity  final
      wc      final

  public com.mongodb.WriteResult deleteById(K);
    descriptor: (Ljava/lang/Object;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Object id
         0: .line 125
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            aload 1 /* id */
            invokevirtual org.mongodb.morphia.DatastoreImpl.delete:(Ljava/lang/Class;Ljava/lang/Object;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // java.lang.Object id
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1    id  TK;
    Signature: (TK;)Lcom/mongodb/WriteResult;
    MethodParameters:
      Name  Flags
      id    final

  public com.mongodb.WriteResult deleteByQuery(org.mongodb.morphia.query.Query<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;)Lcom/mongodb/WriteResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
         0: .line 130
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 1 /* query */
            invokevirtual org.mongodb.morphia.DatastoreImpl.delete:(Lorg/mongodb/morphia/query/Query;)Lcom/mongodb/WriteResult;
            areturn
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;)Lcom/mongodb/WriteResult;
    MethodParameters:
       Name  Flags
      query  final

  public void ensureIndexes();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 135
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.ensureIndexes:(Ljava/lang/Class;)V
         1: .line 136
            return
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;

  public boolean exists(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.String key
        start local 2 // java.lang.Object value
         0: .line 140
            aload 0 /* this */
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.find:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/Query;
            aload 1 /* key */
            aload 2 /* value */
            invokeinterface org.mongodb.morphia.query.Query.filter:(Ljava/lang/String;Ljava/lang/Object;)Lorg/mongodb/morphia/query/Query;
            invokevirtual org.mongodb.morphia.dao.BasicDAO.exists:(Lorg/mongodb/morphia/query/Query;)Z
            ireturn
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String key
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1    key  Ljava/lang/String;
            0    1     2  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      key    final
      value  final

  public boolean exists(org.mongodb.morphia.query.Query<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
         0: .line 145
            aload 1 /* query */
            new org.mongodb.morphia.query.FindOptions
            dup
            invokespecial org.mongodb.morphia.query.FindOptions.<init>:()V
            iconst_1
            invokevirtual org.mongodb.morphia.query.FindOptions.limit:(I)Lorg/mongodb/morphia/query/FindOptions;
            invokeinterface org.mongodb.morphia.query.Query.get:(Lorg/mongodb/morphia/query/FindOptions;)Ljava/lang/Object;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    2     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;)Z
    MethodParameters:
       Name  Flags
      query  final

  public org.mongodb.morphia.query.QueryResults<T> find();
    descriptor: ()Lorg/mongodb/morphia/query/QueryResults;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 150
            aload 0 /* this */
            invokevirtual org.mongodb.morphia.dao.BasicDAO.createQuery:()Lorg/mongodb/morphia/query/Query;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
    Signature: ()Lorg/mongodb/morphia/query/QueryResults<TT;>;

  public org.mongodb.morphia.query.QueryResults<T> find(org.mongodb.morphia.query.Query<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;)Lorg/mongodb/morphia/query/QueryResults;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
         0: .line 155
            aload 1 /* query */
            areturn
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;)Lorg/mongodb/morphia/query/QueryResults<TT;>;
    MethodParameters:
       Name  Flags
      query  final

  public java.util.List<K> findIds();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 161
            aload 0 /* this */
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.find:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/Query;
            invokeinterface org.mongodb.morphia.query.Query.asKeyList:()Ljava/util/List;
            invokevirtual org.mongodb.morphia.dao.BasicDAO.keysToIds:(Ljava/util/List;)Ljava/util/List;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
    Signature: ()Ljava/util/List<TK;>;

  public java.util.List<K> findIds(java.lang.String, );
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.String key
        start local 2 // java.lang.Object value
         0: .line 167
            aload 0 /* this */
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.find:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/Query;
            aload 1 /* key */
            aload 2 /* value */
            invokeinterface org.mongodb.morphia.query.Query.filter:(Ljava/lang/String;Ljava/lang/Object;)Lorg/mongodb/morphia/query/Query;
            invokeinterface org.mongodb.morphia.query.Query.asKeyList:()Ljava/util/List;
            invokevirtual org.mongodb.morphia.dao.BasicDAO.keysToIds:(Ljava/util/List;)Ljava/util/List;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String key
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1    key  Ljava/lang/String;
            0    1     2  value  Ljava/lang/Object;
    Signature: (Ljava/lang/String;Ljava/lang/Object;)Ljava/util/List<TK;>;
    MethodParameters:
       Name  Flags
      key    final
      value  final

  public java.util.List<K> findIds(org.mongodb.morphia.query.Query<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
         0: .line 173
            aload 0 /* this */
            aload 1 /* query */
            invokeinterface org.mongodb.morphia.query.Query.asKeyList:()Ljava/util/List;
            invokevirtual org.mongodb.morphia.dao.BasicDAO.keysToIds:(Ljava/util/List;)Ljava/util/List;
            areturn
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;)Ljava/util/List<TK;>;
    MethodParameters:
       Name  Flags
      query  final

  public T findOne(java.lang.String, );
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.String key
        start local 2 // java.lang.Object value
         0: .line 178
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.find:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/Query;
            aload 1 /* key */
            aload 2 /* value */
            invokeinterface org.mongodb.morphia.query.Query.filter:(Ljava/lang/String;Ljava/lang/Object;)Lorg/mongodb/morphia/query/Query;
            invokeinterface org.mongodb.morphia.query.Query.get:()Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String key
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1    key  Ljava/lang/String;
            0    1     2  value  Ljava/lang/Object;
    Signature: (Ljava/lang/String;Ljava/lang/Object;)TT;
    MethodParameters:
       Name  Flags
      key    final
      value  final

  public T findOne(org.mongodb.morphia.query.Query<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
         0: .line 186
            aload 1 /* query */
            invokeinterface org.mongodb.morphia.query.Query.get:()Ljava/lang/Object;
            areturn
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;)TT;
    MethodParameters:
       Name  Flags
      query  final

  public org.mongodb.morphia.Key<T> findOneId();
    descriptor: ()Lorg/mongodb/morphia/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 191
            aload 0 /* this */
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.find:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/Query;
            invokevirtual org.mongodb.morphia.dao.BasicDAO.findOneId:(Lorg/mongodb/morphia/query/Query;)Lorg/mongodb/morphia/Key;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
    Signature: ()Lorg/mongodb/morphia/Key<TT;>;

  public org.mongodb.morphia.Key<T> findOneId(java.lang.String, );
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Lorg/mongodb/morphia/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.String key
        start local 2 // java.lang.Object value
         0: .line 196
            aload 0 /* this */
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.find:(Ljava/lang/Class;)Lorg/mongodb/morphia/query/Query;
            aload 1 /* key */
            aload 2 /* value */
            invokeinterface org.mongodb.morphia.query.Query.filter:(Ljava/lang/String;Ljava/lang/Object;)Lorg/mongodb/morphia/query/Query;
            invokevirtual org.mongodb.morphia.dao.BasicDAO.findOneId:(Lorg/mongodb/morphia/query/Query;)Lorg/mongodb/morphia/Key;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String key
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1    key  Ljava/lang/String;
            0    1     2  value  Ljava/lang/Object;
    Signature: (Ljava/lang/String;Ljava/lang/Object;)Lorg/mongodb/morphia/Key<TT;>;
    MethodParameters:
       Name  Flags
      key    final
      value  final

  public org.mongodb.morphia.Key<T> findOneId(org.mongodb.morphia.query.Query<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;)Lorg/mongodb/morphia/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
         0: .line 201
            aload 1 /* query */
            invokeinterface org.mongodb.morphia.query.Query.fetchKeys:()Lorg/mongodb/morphia/query/MorphiaKeyIterator;
            invokevirtual org.mongodb.morphia.query.MorphiaKeyIterator.iterator:()Ljava/util/Iterator;
            astore 2 /* keys */
        start local 2 // java.util.Iterator keys
         1: .line 202
            aload 2 /* keys */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 2
            aload 2 /* keys */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.mongodb.morphia.Key
            goto 3
      StackMap locals: java.util.Iterator
      StackMap stack:
         2: aconst_null
      StackMap locals:
      StackMap stack: org.mongodb.morphia.Key
         3: areturn
        end local 2 // java.util.Iterator keys
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    4     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
            1    4     2   keys  Ljava/util/Iterator<Lorg/mongodb/morphia/Key<TT;>;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;)Lorg/mongodb/morphia/Key<TT;>;
    MethodParameters:
       Name  Flags
      query  final

  public T get();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Object id
         0: .line 207
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            aload 1 /* id */
            invokevirtual org.mongodb.morphia.DatastoreImpl.get:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Object id
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1    id  TK;
    Signature: (TK;)TT;
    MethodParameters:
      Name  Flags
      id    final

  public com.mongodb.DBCollection getCollection();
    descriptor: ()Lcom/mongodb/DBCollection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 212
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            invokevirtual org.mongodb.morphia.DatastoreImpl.getCollection:(Ljava/lang/Class;)Lcom/mongodb/DBCollection;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;

  public org.mongodb.morphia.Datastore getDatastore();
    descriptor: ()Lorg/mongodb/morphia/Datastore;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 220
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;

  public java.lang.Class<T> getEntityClass();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 225
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
    Signature: ()Ljava/lang/Class<TT;>;

  public org.mongodb.morphia.Key<T> save(T);
    descriptor: (Ljava/lang/Object;)Lorg/mongodb/morphia/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Object entity
         0: .line 230
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 1 /* entity */
            invokevirtual org.mongodb.morphia.DatastoreImpl.save:(Ljava/lang/Object;)Lorg/mongodb/morphia/Key;
            areturn
        end local 1 // java.lang.Object entity
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  entity  TT;
    Signature: (TT;)Lorg/mongodb/morphia/Key<TT;>;
    MethodParameters:
        Name  Flags
      entity  final

  public org.mongodb.morphia.Key<T> save(T, com.mongodb.WriteConcern);
    descriptor: (Ljava/lang/Object;Lcom/mongodb/WriteConcern;)Lorg/mongodb/morphia/Key;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Object entity
        start local 2 // com.mongodb.WriteConcern wc
         0: .line 235
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 1 /* entity */
            new org.mongodb.morphia.InsertOptions
            dup
            invokespecial org.mongodb.morphia.InsertOptions.<init>:()V
            aload 2 /* wc */
            invokevirtual org.mongodb.morphia.InsertOptions.writeConcern:(Lcom/mongodb/WriteConcern;)Lorg/mongodb/morphia/InsertOptions;
            invokevirtual org.mongodb.morphia.DatastoreImpl.save:(Ljava/lang/Object;Lorg/mongodb/morphia/InsertOptions;)Lorg/mongodb/morphia/Key;
            areturn
        end local 2 // com.mongodb.WriteConcern wc
        end local 1 // java.lang.Object entity
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  entity  TT;
            0    1     2      wc  Lcom/mongodb/WriteConcern;
    Signature: (TT;Lcom/mongodb/WriteConcern;)Lorg/mongodb/morphia/Key<TT;>;
    MethodParameters:
        Name  Flags
      entity  final
      wc      final

  public org.mongodb.morphia.query.UpdateResults update(org.mongodb.morphia.query.Query<T>, org.mongodb.morphia.query.UpdateOperations<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;Lorg/mongodb/morphia/query/UpdateOperations;)Lorg/mongodb/morphia/query/UpdateResults;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
        start local 2 // org.mongodb.morphia.query.UpdateOperations ops
         0: .line 240
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 1 /* query */
            aload 2 /* ops */
            invokevirtual org.mongodb.morphia.DatastoreImpl.update:(Lorg/mongodb/morphia/query/Query;Lorg/mongodb/morphia/query/UpdateOperations;)Lorg/mongodb/morphia/query/UpdateResults;
            areturn
        end local 2 // org.mongodb.morphia.query.UpdateOperations ops
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
            0    1     2    ops  Lorg/mongodb/morphia/query/UpdateOperations<TT;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;Lorg/mongodb/morphia/query/UpdateOperations<TT;>;)Lorg/mongodb/morphia/query/UpdateResults;
    MethodParameters:
       Name  Flags
      query  final
      ops    final

  public org.mongodb.morphia.query.UpdateResults updateFirst(org.mongodb.morphia.query.Query<T>, org.mongodb.morphia.query.UpdateOperations<T>);
    descriptor: (Lorg/mongodb/morphia/query/Query;Lorg/mongodb/morphia/query/UpdateOperations;)Lorg/mongodb/morphia/query/UpdateResults;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // org.mongodb.morphia.query.Query query
        start local 2 // org.mongodb.morphia.query.UpdateOperations ops
         0: .line 245
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            aload 1 /* query */
            aload 2 /* ops */
            invokevirtual org.mongodb.morphia.DatastoreImpl.updateFirst:(Lorg/mongodb/morphia/query/Query;Lorg/mongodb/morphia/query/UpdateOperations;)Lorg/mongodb/morphia/query/UpdateResults;
            areturn
        end local 2 // org.mongodb.morphia.query.UpdateOperations ops
        end local 1 // org.mongodb.morphia.query.Query query
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    1     1  query  Lorg/mongodb/morphia/query/Query<TT;>;
            0    1     2    ops  Lorg/mongodb/morphia/query/UpdateOperations<TT;>;
    Signature: (Lorg/mongodb/morphia/query/Query<TT;>;Lorg/mongodb/morphia/query/UpdateOperations<TT;>;)Lorg/mongodb/morphia/query/UpdateResults;
    MethodParameters:
       Name  Flags
      query  final
      ops    final

  public org.mongodb.morphia.DatastoreImpl getDs();
    descriptor: ()Lorg/mongodb/morphia/DatastoreImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 254
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public java.lang.Class<T> getEntityClazz();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
         0: .line 263
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
            areturn
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
    Signature: ()Ljava/lang/Class<TT;>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  protected void initDS(com.mongodb.MongoClient, org.mongodb.morphia.Morphia, java.lang.String);
    descriptor: (Lcom/mongodb/MongoClient;Lorg/mongodb/morphia/Morphia;Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // com.mongodb.MongoClient mongoClient
        start local 2 // org.mongodb.morphia.Morphia mor
        start local 3 // java.lang.String db
         0: .line 267
            aload 0 /* this */
            aload 2 /* mor */
            aload 1 /* mongoClient */
            aload 3 /* db */
            invokevirtual org.mongodb.morphia.Morphia.createDatastore:(Lcom/mongodb/MongoClient;Ljava/lang/String;)Lorg/mongodb/morphia/Datastore;
            checkcast org.mongodb.morphia.DatastoreImpl
            putfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
         1: .line 268
            return
        end local 3 // java.lang.String db
        end local 2 // org.mongodb.morphia.Morphia mor
        end local 1 // com.mongodb.MongoClient mongoClient
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    2     1  mongoClient  Lcom/mongodb/MongoClient;
            0    2     2          mor  Lorg/mongodb/morphia/Morphia;
            0    2     3           db  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      mongoClient  final
      mor          final
      db           final

  protected void initType(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.lang.Class type
         0: .line 271
            aload 0 /* this */
            aload 1 /* type */
            putfield org.mongodb.morphia.dao.BasicDAO.entityClazz:Ljava/lang/Class;
         1: .line 272
            aload 0 /* this */
            getfield org.mongodb.morphia.dao.BasicDAO.ds:Lorg/mongodb/morphia/DatastoreImpl;
            invokevirtual org.mongodb.morphia.DatastoreImpl.getMapper:()Lorg/mongodb/morphia/mapping/Mapper;
            aload 1 /* type */
            invokevirtual org.mongodb.morphia.mapping.Mapper.addMappedClass:(Ljava/lang/Class;)Lorg/mongodb/morphia/mapping/MappedClass;
            pop
         2: .line 273
            return
        end local 1 // java.lang.Class type
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    3     1  type  Ljava/lang/Class<TT;>;
    Signature: (Ljava/lang/Class<TT;>;)V
    MethodParameters:
      Name  Flags
      type  final

  protected java.util.List<?> keysToIds(java.util.List<org.mongodb.morphia.Key<T>>);
    descriptor: (Ljava/util/List;)Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.mongodb.morphia.dao.BasicDAO this
        start local 1 // java.util.List keys
         0: .line 279
            new java.util.ArrayList
            dup
            aload 1 /* keys */
            invokeinterface java.util.List.size:()I
            iconst_2
            imul
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* ids */
        start local 2 // java.util.List ids
         1: .line 280
            aload 1 /* keys */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.mongodb.morphia.dao.BasicDAO java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.mongodb.morphia.Key
            astore 3 /* key */
        start local 3 // org.mongodb.morphia.Key key
         3: .line 281
            aload 2 /* ids */
            aload 3 /* key */
            invokevirtual org.mongodb.morphia.Key.getId:()Ljava/lang/Object;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // org.mongodb.morphia.Key key
         4: .line 280
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 283
            aload 2 /* ids */
            areturn
        end local 2 // java.util.List ids
        end local 1 // java.util.List keys
        end local 0 // org.mongodb.morphia.dao.BasicDAO this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/mongodb/morphia/dao/BasicDAO<TT;TK;>;
            0    6     1  keys  Ljava/util/List<Lorg/mongodb/morphia/Key<TT;>;>;
            1    6     2   ids  Ljava/util/List<Ljava/lang/Object;>;
            3    4     3   key  Lorg/mongodb/morphia/Key<TT;>;
    Signature: (Ljava/util/List<Lorg/mongodb/morphia/Key<TT;>;>;)Ljava/util/List<*>;
    MethodParameters:
      Name  Flags
      keys  final
}
Signature: <T:Ljava/lang/Object;K:Ljava/lang/Object;>Ljava/lang/Object;Lorg/mongodb/morphia/dao/DAO<TT;TK;>;
SourceFile: "BasicDAO.java"