Parent property is locked

i’m trying to destroy my self.OriginPart. the problem surfaces because of this line but i don’t understand why.

		self.OriginPart:Destroy()
function Explosion.New(EffectTemplate : string)
	local self = setmetatable({}, Explosion)

	-- find the effect
	local Effect = VFX:FindFirstChild(EffectTemplate)
	if not Effect then
		error(string.format("Effect template %q not found", Effect))
	end

	self.LifeTime = 2

	self.OriginPart = Instance.new("Part")
	self.OriginPart.Name = EffectTemplate.."_".."OriginPart"
	self.OriginPart.Size = Vector3.zero
	self.OriginPart.Transparency = 1
	self.OriginPart.Anchored = true
	self.OriginPart.CanCollide = false
	self.OriginPart.CanQuery = false
	self.OriginPart.CanTouch = false
	
	for _, clonedInstance in pairs(Effect:Clone():GetChildren()) do
		clonedInstance.Parent = self.OriginPart
	end
	
		for _, clonedInstance: Instance in pairs(self:GetEffects()) do
			if clonedInstance:IsA("ParticleEmitter") then
				clonedInstance:Emit(clonedInstance:GetAttribute("EmitCount") or clonedInstance.Rate)
			elseif clonedInstance:IsA("Sound") then
				clonedInstance:Play()
			elseif clonedInstance:IsA("Script") then
				clonedInstance.Enabled = false
			elseif clonedInstance:IsA("Light") then
				clonedInstance.Enabled = true
			end
		end
		
		self.OriginPart:Destroy()
	
	return self
end

function Explosion:Destroy()
	self.OriginPart:Destroy()
end

In your Explosion.New you call self.OriginPart:Destroy() but in your function Explosion:Destroy() you also call self.OriginPart:Destroy(), so I suspect self.OriginPart has already been destroyed once, so successive calls will result in an error.

Perhaps in Explosion.New you meant to type self:Destroy() ?