You can always add a controlled component to any tagged type.  This would
seem to handle most of the cases where the parent type
has no need for finalization behavior, but the extension does need
to do something at finalization time.   I would be interested
in real-world examples where this capability is not enough to
solve the finalization problem.