function RxInstanceUtils.observeProperty(F,c)assert(typeof(F)=="\073\110\115\116\097\110\099\101","\'\105\110\115\116\097\110\099\101\' \115\104\111\117\108\100 \098\101 \111\102 \116\121\112\101 \073\110\115\116\097\110\099\101")assert(type(c)=="\115\116\114\105\110\103","\'\112\114\111\112\101\114\116\121\078\097\109\101\' \115\104\111\117\108\100 \098\101 \111\102 \116\121\112\101 \115\116\114\105\110\103")return Observable.new(function(b)local D=Maid.new()D:GiveTask((F:GetPropertyChangedSignal(c)):Connect(function()b:Fire(F[c],F)end))b:Fire(F[c],F)return D end)end
--[=[
	Observes an instance's property

	@param instance Instance
	@param propertyName string
	@return Observable<T>
]=]
function RxInstanceUtils.observeProperty(instance, propertyName)
	assert(typeof(instance) == "Instance", "'instance' should be of type Instance")
	assert(type(propertyName) == "string", "'propertyName' should be of type string")

	return Observable.new(function(sub)
		local maid = Maid.new()

		maid:GiveTask(instance:GetPropertyChangedSignal(propertyName):Connect(function()
			sub:Fire(instance[propertyName], instance)
		end))
		sub:Fire(instance[propertyName], instance)

		return maid
	end)
end
