function ValueObjectUtils.observeValue(E)assert(ValueObject.isValueObject(E),"\066\097\100 \118\097\108\117\101\079\098\106\101\099\116")return Observable.new(function(u)if not E.Destroy then warn("\091\086\097\108\117\101\079\098\106\101\099\116\085\116\105\108\115\046\111\098\115\101\114\118\101\086\097\108\117\101\093 - \067\111\110\110\101\099\116\105\110\103 \116\111 \100\101\097\100 \086\097\108\117\101\079\098\106\101\099\116")u:Complete()return end local z=Maid.new()z:GiveTask(E.Changed:Connect(function()u:Fire(E.Value)end))u:Fire(E.Value)return z end)end
--[=[
	Observes the current value of the ValueObject
	@param valueObject ValueObject<T>
	@return Observable<T>
]=]
function ValueObjectUtils.observeValue(valueObject)
	assert(ValueObject.isValueObject(valueObject), "Bad valueObject")

	return Observable.new(function(sub)
		if not valueObject.Destroy then
			warn("[ValueObjectUtils.observeValue] - Connecting to dead ValueObject")
			-- No firing, we're dead
			sub:Complete()
			return
		end

		local maid = Maid.new()

		maid:GiveTask(valueObject.Changed:Connect(function()
			sub:Fire(valueObject.Value)
		end))

		sub:Fire(valueObject.Value)

		return maid
	end)
end
