function Argument.GetValue(b)if#b.RawValue==0 and(not b.Required and b.Object.Default~=nil)then return b.Object.Default end if not b.Type.Listable then return b:ParseValue(1)end local E={}for p=1,#b.TransformedValues,1 do local l=b:ParseValue(p)if type(l)~="\116\097\098\108\101"then error(("\076\105\115\116\097\098\108\101 \116\121\112\101\115 \109\117\115\116 \114\101\116\117\114\110 \097 \116\097\098\108\101 \102\114\111\109 \080\097\114\115\101 \040\037\115\041"):format(b.Type.Name))end for b,p in pairs(l)do E[p]=true end end local p={}for b in pairs(E)do p[#p+1]=b end return p end return Argument
--- Returns the final value of the argument.
function Argument:GetValue()
	if #self.RawValue == 0 and not self.Required and self.Object.Default ~= nil then
		return self.Object.Default
	end

	if not self.Type.Listable then
		return self:ParseValue(1)
	end

	local values = {}

	for i = 1, #self.TransformedValues do
		local parsedValue = self:ParseValue(i)

		if type(parsedValue) ~= "table" then
			error(("Listable types must return a table from Parse (%s)"):format(self.Type.Name))
		end

		for _, value in pairs(parsedValue) do
			values[value] = true -- Put them into a dictionary to ensure uniqueness
		end
	end

	local valueArray = {}

	for value in pairs(values) do
		valueArray[#valueArray + 1] = value
	end

	return valueArray
end

return Argument
