LocaleData
The locale-dependent data a formatter needs, separated from the formatting itself.
LocaleFormatter's KDoc anticipated seven actual implementations of the four functions. This is the narrower seam that replaced that plan: the platforms supply symbols -- separators, month and weekday names, currency affixes -- and SymbolLocaleFormatter does the assembly once, in common code, for every target.
The reason is formatDate. Only two of the seven targets can consume a Unicode TR35 pattern natively (NSDateFormatter and android.icu.text.SimpleDateFormat); the JVM's java.text dialect is close but not the same, and Intl.DateTimeFormat does not take patterns at all. Seven native implementations would therefore have been three or four different pattern engines, and the same payload would have rendered differently depending on which one a host happened to run -- the divergence the digit handling in FallbackLocaleFormatter already exists to remove.
What is given up is the part of each platform's formatting that is not expressible as symbols: the numbering system stays Latin even where the locale's default is not, and the grouping is whatever LocaleSymbols.groupSizes says rather than whatever the platform would have done.
Functions
How this locale writes an amount in code, an ISO 4217 currency code.