function ValueObject.__index(f,q)if q=="\086\097\108\117\101"then return f._value elseif ValueObject[q]then return ValueObject[q]elseif q=="\095\118\097\108\117\101"then return nil else error(("\037\113 \105\115 \110\111\116 \097 \109\101\109\098\101\114 \111\102 \086\097\108\117\101\079\098\106\101\099\116"):format(tostring(q)))end end function ValueObject.__newindex(P,q,f)if q=="\086\097\108\117\101"then local q=rawget(P,"\095\118\097\108\117\101")if q~=f then rawset(P,"\095\118\097\108\117\101",f)local C=Maid.new()P.Changed:Fire(f,q,C)P._maid._valueMaid=C end else error(("\037\113 \105\115 \110\111\116 \097 \109\101\109\098\101\114 \111\102 \086\097\108\117\101\079\098\106\101\099\116"):format(tostring(q)))end end
--[=[
	The value of the ValueObject
	@prop Value T
	@within ValueObject
]=]
function ValueObject:__index(index)
	if index == "Value" then
		return self._value
	elseif ValueObject[index] then
		return ValueObject[index]
	elseif index == "_value" then
		return nil -- Edge case
	else
		error(("%q is not a member of ValueObject"):format(tostring(index)))
	end
end

function ValueObject:__newindex(index, value)
	if index == "Value" then
		local previous = rawget(self, "_value")
		if previous ~= value then
			rawset(self, "_value", value)

			local maid = Maid.new()

			self.Changed:Fire(value, previous, maid)

			self._maid._valueMaid = maid
		end
	else
		error(("%q is not a member of ValueObject"):format(tostring(index)))
	end
end
