Message resultMsg = next.invoke(msg);
Object result = resultMsg.getBody();
// FIXME: How to deal with faults?
if (resultMsg.isFault()) {
// We need to figure out what fault type it is and then transform it back the source fault type
throw new InvocationRuntimeException((Throwable) result);
} else if (result != null) {
// FIXME: Should we fix the Operation model so that getOutputType returns DataType<DataType<T>>?
DataType<DataType> targetType =
new DataType<DataType>("idl:output", Object.class, targetOperation.getOutputType());