presto-hive/src/main/java/io/prestosql/plugin/hive/HiveCoercionRecordCursor.java/StructCoercer/coerce
class StructCoercer:        @Override
        public void coerce(RecordCursor delegate, int field)
        {
            if (delegate.isNull(field)) {
                setIsNull(true);
                return;
            }
            Block block = (Block) delegate.getObject(field);
            if (pageBuilder.isFull()) {
                pageBuilder.reset();
            }
            BlockBuilder blockBuilder = pageBuilder.getBlockBuilder(0);
            BlockBuilder rowBuilder = blockBuilder.beginBlockEntry();
            for (int i = 0; i < toFieldTypes.size(); i++) {
                if (i >= fromFieldTypes.size() || block.isNull(i)) {
                    rowBuilder.appendNull();
                }
                else if (coercers[i] == null) {
                    toFieldTypes.get(i).appendTo(block, i, rowBuilder);
                }
                else {
                    rewriteBlock(fromFieldTypes.get(i), toFieldTypes.get(i), block, i, rowBuilder, coercers[i], bridgingRecordCursor);
                }
            }
            blockBuilder.closeEntry();
            pageBuilder.declarePosition();
            setObject(toType.getObject(blockBuilder, blockBuilder.getPositionCount() - 1));
        }