//! Retained widget tree + memoization.
//!
//! Widgets live across frames (retained). Each frame:
//! 1. Pipeline calls `RetainedTree::any_hash_changed` โ walks the tree,
//! aggregates child hashes into root hash.
//! 2. If root hash unchanged AND no resize: pipeline skips render entirely.
//! 3. Otherwise: `RetainedTree::render` walks the tree, calling `render()`
//! only on subtrees whose hash changed.
//!
//! See spec ยง5.
pub use ;
pub use crate;
pub use ;
pub use ;
pub use RetainedChild;
pub use RetainedTree;