The caller uses ExpandoRenderData to define a set of callback functions.
The formatter uses these functions to get data, then format it.