This duplicates a lot of the code in `_incoming_xblock_adaptor`. Could it be refactored to separate the looping from the translation function?