I think I understand what you mean :) I feel though (and IIUC that's also @agudian's concern) that the conversions themselves got much more complicated with this change.

Indeed this change seems to remove quite a few redundancies, but I find it more and more hard to get - from looking at the templates - what the generated output will be.

Couldn't a conversion have:

a)   a source reference as before (for the case it has no nested other conversion or method reference) OR
b) a nested other conversion or method reference

I think this would still allow to set the begin and end part directly within the template (making it a bit nicer to grasp), and between the two either the reference from a) or the other templated object from b) is included.

This leaves a problem where the nested conversion/method declares exceptions, though. This could possibly be solved by "pulling out" the exeptions and generating them only for the outermost conversion (i.e. a conversion would need to know whether it's nested or not, so it doesn't render the try/catch itself in case it is nested).

Al that said, I really like that we get rid of the repeated code between the different mapping methods :)