We need a set of maxLength and scale because it is possible for the expression to have multiple children, and we need to perform rescale/truncation on every step.