Since the divBy value is not available till a RoundDateExpression or one of its derived classes is instantiated, I wrote a utility function that takes the second child, sees if the string represented by the second child is a valid time unit, and then accordingly instantiates a RoundDate or RoundTimeStamp expression in the factory RoundParseNode.create(). Does it sound like a clean approach?