function DataStoreStage._doStore(e,M,n)assert(type(M)=="\115\116\114\105\110\103"or type(M)=="\110\117\109\098\101\114","\066\097\100 \110\097\109\101")assert(n~=nil,"\066\097\100 \118\097\108\117\101")local a if n==DataStoreDeleteToken then a=DataStoreDeleteToken elseif type(n)=="\116\097\098\108\101"then a=Table.deepCopy(n)else a=n end if not e._dataToSave then e._dataToSave={}end e._dataToSave[M]=a if e._topLevelStoreSignal then e._topLevelStoreSignal:Fire()end end return DataStoreStage
-- Stores the data for overwrite.
function DataStoreStage:_doStore(name, value)
	assert(type(name) == "string" or type(name) == "number", "Bad name")
	assert(value ~= nil, "Bad value")

	local newValue
	if value == DataStoreDeleteToken then
		newValue = DataStoreDeleteToken
	elseif type(value) == "table" then
		newValue = Table.deepCopy(value)
	else
		newValue = value
	end

	if not self._dataToSave then
		self._dataToSave = {}
	end

	self._dataToSave[name] = newValue
	if self._topLevelStoreSignal then
		self._topLevelStoreSignal:Fire()
	end
end

return DataStoreStage
