-- @Description Return true if the specified instance got a property named as specified.
-- @Arg1 Instance
-- @Arg2 PropertyName
-- @Return boolean

function Basic.HasProperty(instance, Property)
	local CachedProp = rawget(CachedProperties, instance.ClassName) and rawget(rawget(CachedProperties, instance.ClassName), Property)
	if CachedProp then return CachedProp end
	
	local success = pcall(function()
		return instance[Property]
	end)
		
	if not rawget(CachedProperties, instance.ClassName) then rawset(CachedProperties, instance.ClassName, {}) end
	rawset(rawget(CachedProperties, instance.ClassName), Property, success)
	
	return success
end
