You should delay the creation of the ArrayConstructorExpression, because if node.isStateless() is true, you'll create and return a LiteralExpression instead of this. Usually the flow of these methods is like this:

* determine what the dataType will be for the array based on children. You'll want to figure out the most specific, common base type for all children
* if node.isStateless() then create and return the appropriate LiteralExpression
* otherwise, instantiate a new ArrayConstructorExpression by passing in the children plus the dataType