public int CreateCollation(IDbHandle db, ICollation collation)
        {
            var internalDbHandle = (DbHandle)db;

            var compareCallbackExecutor = new CompareCallbackExecutor(
                collation,
                SQLiteApiGenericInternal.GetCompareCallbackStringBytes);

            var func = new SQLiteApiGenericInternal.CompareCallback(compareCallbackExecutor.Execute);

            _allocatedGCHandles.Add(GCHandle.Alloc(func));

            return(SQLiteApiGenericInternal.sqlite3_create_collation(
                       internalDbHandle.DbPtr,
                       Encoding.UTF8.GetBytes(collation.Name),
                       SQLiteEncodings.SQLITE_UTF8,
                       IntPtr.Zero,
                       func));
        }