For wide compatibility, the aggregation builder accepts an array everywhere an operator (stage, expression, query) is expected.
In order to improve type safety, generate an array shape for every stage/expression/query.
This shape will be recursive for expression and query.