It looks like this condition was added to prevent multiple reference
deletions, but Object::remove() should already handle this (by grabbing
the upgraded control), and the condition is preventing
upgraded-then-destructed objects from freeing inheritance references as
well as keeping the original object (not the copy created by
::upgrade()) from getting fully cleaned in ::clean() as ::remove() is
what adds the object to baseplane.destruct.
It looks like this condition was added to prevent multiple reference deletions, but Object::remove() should already handle this (by grabbing the upgraded control), and the condition is preventing upgraded-then-destructed objects from freeing inheritance references as well as keeping the original object (not the copy created by ::upgrade()) from getting fully cleaned in ::clean() as ::remove() is what adds the object to baseplane.destruct.