function methods.InternalDestroy(o)for V,q in pairs(o.Channels)do q:InternalRemoveSpeaker(o)end o.eDestroyed:Fire()o.EventFolder=nil o.eDestroyed:Destroy()o.eSaidMessage:Destroy()o.eReceivedMessage:Destroy()o.eReceivedUnfilteredMessage:Destroy()o.eMessageDoneFiltering:Destroy()o.eReceivedSystemMessage:Destroy()o.eChannelJoined:Destroy()o.eChannelLeft:Destroy()o.eMuted:Destroy()o.eUnmuted:Destroy()o.eExtraDataUpdated:Destroy()o.eMainChannelSet:Destroy()o.eChannelNameColorUpdated:Destroy()end function methods.InternalAssignPlayerObject(V,o)V.PlayerObj=o end function methods.InternalAssignEventFolder(V,o)V.EventFolder=o end function methods.InternalSendMessage(q,o,V)local J,g=pcall(function()q:LazyFire("\101\082\101\099\101\105\118\101\100\085\110\102\105\108\116\101\114\101\100\077\101\115\115\097\103\101",o,V)if q.PlayerObj then q.EventFolder.OnNewMessage:FireClient(q.PlayerObj,o,V)end end)if not J and g then print("\069\114\114\111\114 \115\101\110\100\105\110\103 \105\110\116\101\114\110\097\108 \109\101\115\115\097\103\101\058 "..g)end end function methods.InternalSendFilteredMessage(q,o,V)local J,g=pcall(function()q:LazyFire("\101\082\101\099\101\105\118\101\100\077\101\115\115\097\103\101",o,V)q:LazyFire("\101\077\101\115\115\097\103\101\068\111\110\101\070\105\108\116\101\114\105\110\103",o,V)if q.PlayerObj then q.EventFolder.OnMessageDoneFiltering:FireClient(q.PlayerObj,o,V)end end)if not J and g then print("\069\114\114\111\114 \115\101\110\100\105\110\103 \105\110\116\101\114\110\097\108 \102\105\108\116\101\114\101\100 \109\101\115\115\097\103\101\058 "..g)end end
--///////////////// Internal-Use Methods
--//////////////////////////////////////
function methods:InternalDestroy()
	for i, channel in pairs(self.Channels) do
		channel:InternalRemoveSpeaker(self)
	end

	self.eDestroyed:Fire()

	self.EventFolder = nil
	self.eDestroyed:Destroy()
	self.eSaidMessage:Destroy()
	self.eReceivedMessage:Destroy()
	self.eReceivedUnfilteredMessage:Destroy()
	self.eMessageDoneFiltering:Destroy()
	self.eReceivedSystemMessage:Destroy()
	self.eChannelJoined:Destroy()
	self.eChannelLeft:Destroy()
	self.eMuted:Destroy()
	self.eUnmuted:Destroy()
	self.eExtraDataUpdated:Destroy()
	self.eMainChannelSet:Destroy()
	self.eChannelNameColorUpdated:Destroy()
end

function methods:InternalAssignPlayerObject(playerObj)
	self.PlayerObj = playerObj
end

function methods:InternalAssignEventFolder(eventFolder)
	self.EventFolder = eventFolder
end

function methods:InternalSendMessage(messageObj, channelName)
	local success, err = pcall(function()
		self:LazyFire("eReceivedUnfilteredMessage", messageObj, channelName)
		if self.PlayerObj then
			self.EventFolder.OnNewMessage:FireClient(self.PlayerObj, messageObj, channelName)
		end
	end)
	if not success and err then
		print("Error sending internal message: " .. err)
	end
end

function methods:InternalSendFilteredMessage(messageObj, channelName)
	local success, err = pcall(function()
		self:LazyFire("eReceivedMessage", messageObj, channelName)
		self:LazyFire("eMessageDoneFiltering", messageObj, channelName)
		if self.PlayerObj then
			self.EventFolder.OnMessageDoneFiltering:FireClient(self.PlayerObj, messageObj, channelName)
		end
	end)
	if not success and err then
		print("Error sending internal filtered message: " .. err)
	end
end
