code: public Object decode(final Class c, final Object fromDBObject, final MappedField mf) {
          Class toDecode = c;
          if (toDecode == null) {
              toDecode = fromDBObject.getClass();
          }
          return getEncoder(toDecode).decode(toDecode, fromDBObject, mf);
      }
docs: decode the {@link com.mongodb.DBObject} and provide the corresponding java (type-safe) object
  <br><b>NOTE: mf might be null</b>
  
  @param c            the class to create and populate
  @param fromDBObject the DBObject to use when populating the new instance
  @param mf           the MappedField that contains the metadata useful for decoding
  @return the new instance