Collator::getTailoredSet() requires that the collator has a rule string, and it parses that rule string to find the set of tailored characters and contractions. It also uses the CanonicalIterator on each item.
This does not work for users who remove the rule strings from the data (because the rule strings can be large and are otherwise rarely useful).
It also seems very inefficient. It seems like the code should enumerate the already-built mapping data and report which characters and contractions have mappings.
Worse, the behavior of getTailoredSet() and the actual builder code can get out of sync, which can lead to incorrect results.
Same for ucol_getContractions() and ucol_getContractionsAndExpansions().
"collv2" enumerates the data structure