public void Process(BulkLoadContext loadContext, BulkLoadSqlContext sqlContext, ICollection <ItemChange> changes)
        {
            if (!loadContext.RemoveItemsFromCaches && !loadContext.ClearCaches)
            {
                return;
            }

            var stopwatch = Stopwatch.StartNew();

            // Remove items from database cache.
            // We don't do this within the transaction so that items will be re-read from the committed data.
            var db = Factory.GetDatabase(loadContext.Database, true);

            if (loadContext.ClearCaches)
            {
                _cachUtil.ClearCaches(db);
                loadContext.Log.Info($"Caches cleared: {(int)stopwatch.Elapsed.TotalSeconds}s");
            }
            else
            {
                _cachUtil.RemoveItemsFromCachesInBulk(db, GetCacheClearEntries(loadContext.ItemChanges));
                loadContext.Log.Info($"Items removed from cache: {(int)stopwatch.Elapsed.TotalSeconds}s");
            }
        }