public static T DeepCopy <T>(T value, DeepCopyOptions options = DeepCopyOptions.DeepCopier)
 {
     return(options switch
     {
         DeepCopyOptions.DeepCopier => DeepCopier.Copy(value),
         DeepCopyOptions.ExpressionCopier => ExpressionCopier <T> .Copy(value),
         _ => ExpressionCopier <T> .Copy(value)
     });
 private static ExprNode CopyVisitExpression(
     ExprNode expression,
     ExpressionCopier expressionCopier)
 {
     return expressionCopier.Copy(expression);
 }
 public RowRecogExprRepeatDesc CheckedCopy(ExpressionCopier expressionCopier) {
     ExprNode lowerCopy = Lower == null ? null : expressionCopier.Copy(Lower);
     ExprNode upperCopy = Upper == null ? null : expressionCopier.Copy(Upper);
     ExprNode singleCopy = Single == null ? null : expressionCopier.Copy(Single);
     return new RowRecogExprRepeatDesc(lowerCopy, upperCopy, singleCopy);
 }