If you have an email with multiple levels of subparts, and you call body_str_set() or any other modifier on a deep part, the top level Email::MIME's ->as_string (and other things) should notice that it was changed and reflect those changes accordingly.
(See wolfsage/Email-Footer@5d80744 for an example of something working around this problem).