This seems a bit hacky since I'm using the into variable to store temporary projected MapValues but it is the simplest way I found. At the end, the into.value is set to the resulting projected list.

If an exception is thrown, then the into variable would have the last projected MapValue if any.