function methods.InternalDestroy(O)for X,w in pairs(O.Channels)do w:InternalRemoveSpeaker(O)end O.eDestroyed:Fire()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(X,O)X.PlayerObj=O end function methods.InternalSendMessage(w,O,X)local G,m=pcall(function()w.eReceivedUnfilteredMessage:Fire(O,X)end)if not G and m 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 "..m)end end function methods.InternalSendFilteredMessage(w,O,X)local G,m=pcall(function()w.eReceivedMessage:Fire(O,X)w.eMessageDoneFiltering:Fire(O,X)end)if not G and m 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 "..m)end end function methods.InternalSendSystemMessage(w,O,X)local G,m=pcall(function()w.eReceivedSystemMessage:Fire(O,X)end)if not G and m then print("\069\114\114\111\114 \115\101\110\100\105\110\103 \105\110\116\101\114\110\097\108 \115\121\115\116\101\109 \109\101\115\115\097\103\101\058 "..m)end end function methods.UpdateChannelNameColor(w,O,X)w.eChannelNameColorUpdated:Fire(O,X)end
--///////////////// Internal-Use Methods
--//////////////////////////////////////
function methods:InternalDestroy()
	for i, channel in pairs(self.Channels) do
		channel:InternalRemoveSpeaker(self)
	end

	self.eDestroyed:Fire()

	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:InternalSendMessage(messageObj, channelName)
	local success, err = pcall(function()
		self.eReceivedUnfilteredMessage:Fire(messageObj, channelName)
	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.eReceivedMessage:Fire(messageObj, channelName)
		self.eMessageDoneFiltering:Fire(messageObj, channelName)
	end)
	if not success and err then
		print("Error sending internal filtered message: " .. err)
	end
end

function methods:InternalSendSystemMessage(messageObj, channelName)
	local success, err = pcall(function()
		self.eReceivedSystemMessage:Fire(messageObj, channelName)
	end)
	if not success and err then
		print("Error sending internal system message: " .. err)
	end
end

function methods:UpdateChannelNameColor(channelName, channelNameColor)
	self.eChannelNameColorUpdated:Fire(channelName, channelNameColor)
end
