docs: public static void bindObjectToProgram(SQLiteProgram prog, int index,
              Object value) {
          if (value == null) {
              prog.bindNull(index);
          } else if (value instanceof Double || value instanceof Float) {
              prog.bindDouble(index, ((Number)value).doubleValue());
          } else if (value instanceof Number) {
              prog.bindLong(index, ((Number)value).longValue());
          } else if (value instanceof Boolean) {
              Boolean bool = (Boolean)value;
              if (bool) {
                  prog.bindLong(index, 1);
              } else {
                  prog.bindLong(index, 0);
              }
          } else if (value instanceof byte[]){
              prog.bindBlob(index, (byte[]) value);
          } else {
              prog.bindString(index, value.toString());
          }
      }
  
      /**
       * Returns data type of the given object's value.
       *<p>
       * Returned values are
       * <ul>
       *   <li>{@link Cursor#FIELD_TYPE_NULL}</li>
       *   <li>{@link Cursor#FIELD_TYPE_INTEGER}</li>
       *   <li>{@link Cursor#FIELD_TYPE_FLOAT}</li>
       *   <li>{@link Cursor#FIELD_TYPE_STRING}</li>
       *   <li>{@link Cursor#FIELD_TYPE_BLOB}</li>
       *</ul>
       *</p>
       *
       * @param obj the object whose value type is to be returned
       * @return object value type
       * @hide
       */
      public static int getTypeOfObject(Object obj) {
          if (obj == null) {
              return Cursor.FIELD_TYPE_NULL;
          } else if (obj instanceof byte[]) {
              return Cursor.FIELD_TYPE_BLOB;
          } else if (obj instanceof Float || obj instanceof Double) {
              return Cursor.FIELD_TYPE_FLOAT;
          } else if (obj instanceof Long || obj instanceof Integer
                  || obj instanceof Short || obj instanceof Byte) {
              return Cursor.FIELD_TYPE_INTEGER;
          } else {
              return Cursor.FIELD_TYPE_STRING;
          }
      }