public ConstructedValueExpression Compile(MapTypeContext context)
        {
            if (!context.TargetType.IsSupportedPrimitiveType() && context.TargetType != typeof(object))
            {
                return(ConstructedValueExpression.Nothing);
            }

            var column = context.SingleColumn();

            if (column == null)
            {
                return(ConstructedValueExpression.Nothing);
            }

            // Pull the value out of the reader into the rawVar
            var rawVar     = context.CreateVariable(typeof(object), "raw");
            var getRawStmt = Expression.Assign(
                rawVar,
                Expression.Call(
                    context.RecordParameter,
                    _getValueMethod,
                    Expression.Constant(column.Index)
                    )
                );

            var rawConvertExpr = MapScalar(context.TargetType, column, rawVar);

            column.MarkMapped();
            return(new ConstructedValueExpression(new[] { getRawStmt }, rawConvertExpr, new[] { rawVar }));
        }