function Argument.Validate(d,l)if d.RawValue==nil or#d.RawValue==0 and d.Required==false then return true end if d.Required and(d.RawSegments[1]==nil or#d.RawSegments[1]==0)then return false,"\084\104\105\115 \097\114\103\117\109\101\110\116 \105\115 \114\101\113\117\105\114\101\100\046"end if d.Type.Validate or d.Type.ValidateOnce then for Z=1,#d.TransformedValues,1 do if d.Type.Validate then local l,z=d.Type.Validate(d:GetTransformedValue(Z))if not l then return l,z or"\073\110\118\097\108\105\100 \118\097\108\117\101"end end if l and d.Type.ValidateOnce then local l,z=d.Type.ValidateOnce(d:GetTransformedValue(Z))if not l then return l,z end end end return true else return true end end

function Argument:Validate(isFinal)
	if self.RawValue == nil or #self.RawValue == 0 and self.Required == false then
		return true
	end

	if self.Required and (self.RawSegments[1] == nil or #self.RawSegments[1] == 0) then
		return false, "This argument is required."
	end

	if self.Type.Validate or self.Type.ValidateOnce then
		for i = 1, #self.TransformedValues do
			if self.Type.Validate then
				local valid, errorText = self.Type.Validate(self:GetTransformedValue(i))

				if not valid then
					return valid, errorText or "Invalid value"
				end
			end

			if isFinal and self.Type.ValidateOnce then
				local validOnce, errorTextOnce = self.Type.ValidateOnce(self:GetTransformedValue(i))

				if not validOnce then
					return validOnce, errorTextOnce
				end
			end
		end

		return true
	else
		return true
	end
end
