private void ProcessChunk(IFileImportEntitiesChunkProcessor chunkProcessor, ImportParameters importParameters, ImportDataChunk <EntityChunkData> chunk)
        {
            EventHandler <ImportEntitySavedEventArgs> successImportEntitySavedHadler = (o, arg) => {
                chunk.Data.SuccessProcessedEntityCount++;
                _importEntitiesChunksDataProvider.SaveProcessedRow(chunk.ChunkId, (int)arg.RowIndex);
            };

            chunkProcessor.ImportEntitySaved += successImportEntitySavedHadler;
            EventHandler <ImportEntitySaveErrorEventArgs> importEntitySavedWithErrorHandler = (o, arg) => {
                chunk.Data.ProcessedWithErrorEntityCount++;
                _importEntitiesChunksDataProvider.SaveProcessedRow(chunk.ChunkId, (int)arg.ImportEntity.RowIndex, false);
            };

            chunkProcessor.ImportEntitySaveError += importEntitySavedWithErrorHandler;

            ImportParameters newImportParameters = PrepareImportParameters(importParameters, chunk);

            SaveProcessedChunk(chunk, ImportChunkState.InProcess);
            chunkProcessor.ProcessChunk(newImportParameters);
            SaveProcessedChunk(chunk, ImportChunkState.Processed);

            _importEntitiesChunksDataProvider.RemoveProcessedRows(chunk.ChunkId);
            chunkProcessor.ImportEntitySaved     -= successImportEntitySavedHadler;
            chunkProcessor.ImportEntitySaveError -= importEntitySavedWithErrorHandler;
        }