Solving shape-analysis problems in languages with destructive updating | Synapse