The reason for the former  muleMessage.setPayload(ctx.getPayload())
was that the xpath implementation may consume an xml stream (sax/stax/eventreader) and replace it in the artifical message with a dom representation.
Aren't we loosing that?