This doesn't seem right either.

Consider a source that emits application/json - if the target module supports `ALL`, he should get the JSON, not some object that was decoded from JSON.

I believe we need to keep separate the conversion done for the purposes of transporting Vs. conversion to some supported type by the next module after we've restored the original payload as received from the source.