You should know already the type of the array and array element, so no need to loop over the children to figure that out in the evaluate. The child type is determined at compile time so when this expression is instantiated, you already know this (or can/should calculate it in the constructor)