Index: src/libchcore/TSubTaskCopyMove.h
===================================================================
diff -u -N -r0b8ae6ab8b538881b651126bf8e6de9c9912a782 -r19925be73ffcadd9f345f10e03e55aadb3f0eeac
--- src/libchcore/TSubTaskCopyMove.h	(.../TSubTaskCopyMove.h)	(revision 0b8ae6ab8b538881b651126bf8e6de9c9912a782)
+++ src/libchcore/TSubTaskCopyMove.h	(.../TSubTaskCopyMove.h)	(revision 19925be73ffcadd9f345f10e03e55aadb3f0eeac)
@@ -62,9 +62,28 @@
 		unsigned long long GetCurrentFileProcessedSize() const;
 		void IncreaseCurrentFileProcessedSize(unsigned long long ullSizeToAdd);
 
+		void Store(const ISerializerRowDataPtr& spRowData) const;
+		static void InitLoader(const IColumnsDefinitionPtr& spColumns);
+		void Load(const ISerializerRowReaderPtr& spRowReader);
+		bool WasSerialized() const;
+
 	private:
-		volatile size_t m_stCurrentIndex;
-		volatile unsigned long long m_ullCurrentFileProcessedSize;	// count of bytes processed for current file
+		enum EModifications
+		{
+			eMod_Added,
+			eMod_CurrentIndex,
+			eMod_CurrentFileProcessedSize,
+
+			// last item
+			eMod_Last
+		};
+
+		typedef std::bitset<eMod_Last> Bitset;
+		mutable Bitset m_setModifications;
+
+		TSharedModificationTracker<size_t, Bitset, eMod_CurrentIndex> m_stCurrentIndex;
+		TSharedModificationTracker<unsigned long long, Bitset, eMod_CurrentFileProcessedSize> m_ullCurrentFileProcessedSize;	// count of bytes processed for current file
+
 		mutable boost::shared_mutex m_lock;
 	};
 }