Using Expressions to Clone F# Values

How to generate functions for copying F# record-array-union trees with Expr.