function ServiceBag.new(e)local C=setmetatable(BaseObject.new(),ServiceBag)C._services={}C._parentProvider=e C._serviceTypesToInitializeSet={}C._initializedServiceTypeSet={}C._initializing=false C._serviceTypesToStart={}C._destroying=Signal.new()C._maid:GiveTask(C._destroying)return C end
--[=[
	Constructs a new ServiceBag

	@param parentProvider ServiceBag? -- Optional parent provider to find services in
	@return ServiceBag
]=]
function ServiceBag.new(parentProvider)
	local self = setmetatable(BaseObject.new(), ServiceBag)

	self._services = {}
	self._parentProvider = parentProvider

	self._serviceTypesToInitializeSet = {}
	self._initializedServiceTypeSet = {}
	self._initializing = false

	self._serviceTypesToStart = {}

	self._destroying = Signal.new()
	self._maid:GiveTask(self._destroying)

	return self
end
