Currently, the FieldPosition is only ever populated with the first occurrence of a field. This is consistent with older APIs, which combined formatting with field position, such that calling the method a second time was expensive. However, with the decoupling of field position and formatting in the new API, the FieldPosition argument in populateFieldPosition could work sort-of like ParsePosition: if you call the method a second time, and the FieldPosition is already populated, it will give you the first field starting after the position currently stored in the FieldPosition.
For example, if you are looking for all of the grouping separators, you could do something like:
This would be cheaper than allocating the FieldPositionIterator.
To be clear, this suggestion applies only to the new API that is still @draft, not to any of the old APIs.