docs: @NonNull
      @Override
      public PutResult performPut(@NonNull StorIOContentResolver storIOContentResolver, @NonNull T object) {
          final UpdateQuery updateQuery = mapToUpdateQuery(object);
  
          final Query query = Query.builder()
                  .uri(updateQuery.uri())
                  .where(nullableString(updateQuery.where()))
                  .whereArgs((Object[]) nullableArrayOfStringsFromListOfStrings(updateQuery.whereArgs()))
                  .build();
  
          final StorIOContentResolver.LowLevel lowLevel = storIOContentResolver.lowLevel();
  
          final Cursor cursor = lowLevel.query(query);
  
          try {
              final ContentValues contentValues = mapToContentValues(object);
  
              if (cursor.getCount() == 0) {
                  final InsertQuery insertQuery = mapToInsertQuery(object);
                  final Uri insertedUri = lowLevel.insert(insertQuery, contentValues);
                  return PutResult.newInsertResult(insertedUri, insertQuery.uri());
              } else {
                  final int numberOfRowsUpdated = lowLevel.update(updateQuery, contentValues);
                  return PutResult.newUpdateResult(numberOfRowsUpdated, updateQuery.uri());
              }
          } finally {
              cursor.close();
          }
      }