$ f x § p a § q b c d From start: ~ f From p checkpoint: ~ f From q checkpoint: ~ f From q checkpoint again: ~ f Force p checkpoint: ~ f.p() From q again: ~ f Go to p again by setting checkpoint manually: ~ f.checkpoint := &f.p ~ f