From Raw Pointers to Memory Safety: A Modular Demand-Driven Typestate Analysis for Rust | Synapse