resolveDisplayText

protected open suspend override fun resolveDisplayText(value: Int): String?

Called once per value, outside rendering, and the result is stored in ControlState.displayText.

There is no cache here and there should not be: one control instance serves all repeatable rows (see RepeatableControl.registerChildrenInGlobalMap), so a field on the instance would mix rows up. The proper cache is the state keyed by path.