List<Transformer> path = getTransformerChain(sourceDataType, targetDataType);
Object result = source;
int size = path.size();
for (int i = 0; i < size; i++) {
Transformer transformer = path.get(i);
TransformationContext context =
createTransformationContext(sourceDataType, targetDataType, size, i, transformer, metadata);
if (transformer instanceof PullTransformer) {
result = ((PullTransformer)transformer).transform(result, context);