How can I make a Destroy function that behaves exactly the same as the FallenPartsDestroyHeight?

Well, maybe you would just say use :Destroy() but the behavior is not quite the same. You see, if a part is the last part in an ancestry tree of Model or Tool, then all ancestors of either class will be destroyed. But I only have to check for Model since Tool inherits from Model. But wait, the character is not destroyed, which means if there is a humanoid sibling, the parent will not be destroyed. I also noted that WorldModel instances siblings will prevent the model from being destroyed by FallenPartsDestroyHeight. All this is experimentally determined, so I emulated this behavior using:

function Destroy(Part:BasePart)
	local Parent = Part.Parent
	Part:Destroy()
	while Parent and (Parent:IsA("Model") and not Parent:IsA("WorldRoot") or Parent:IsA("Accoutrement")) and not Parent:FindFirstChildWhichIsA("BasePart", true) and not Parent:FindFirstChildWhichIsA("Humanoid", true) and not Parent:FindFirstChildWhichIsA("WorldRoot", true) do
		local Current = Parent
		Parent = Parent.Parent
		Current:Destroy()
	end
end

But am I missing anything? Does anyone have any insider knowledge on the classes that can prevent ancestor models from being destroyed when their last part falls into the abyss? Or better yet, is there a way to invoke the behavior directly (other than teleporting parts into the void) so I do not have to make my own copy?