public static string Render(this AstNaryOperator @operator)
 {
     return(@operator switch
     {
         AstNaryOperator.Add => "$add",
         AstNaryOperator.Avg => "$avg",
         AstNaryOperator.Concat => "$concat",
         AstNaryOperator.ConcatArrays => "$concatArrays",
         AstNaryOperator.Max => "$max",
         AstNaryOperator.MergeObjects => "$mergeObjects",
         AstNaryOperator.Min => "$min",
         AstNaryOperator.Multiply => "$multiply",
         AstNaryOperator.SetEquals => "$setEquals",
         AstNaryOperator.SetIntersection => "$setIntersection",
         AstNaryOperator.SetUnion => "$setUnion",
         AstNaryOperator.StdDevPop => "$stdDevPop",
         AstNaryOperator.StdDevSamp => "$stdDevSamp",
         AstNaryOperator.Sum => "$sum",
         _ => throw new InvalidOperationException($"Unexpected n-ary operator: {@operator}.")
     });
 public AstNaryExpression(AstNaryOperator @operator, params AstExpression[] args)
     : this(@operator, (IEnumerable <AstExpression>)args)
 {
 }
 public AstNaryExpression(AstNaryOperator @operator, IEnumerable <AstExpression> args)
 {
     _operator = @operator;
     _args     = Ensure.IsNotNull(args, nameof(args)).AsReadOnlyList();
 }