Согласование состояний appearance радиокнопок и checkbox
Запись значения кнопочного поля теперь согласует состояние /AS каждого виджета с выбором, а уплощение согласует ещё раз перед генерацией appearance, поэтому устаревший /AS Off никогда не перебьёт обновлённое /V
Запись значений
SetFormFieldValue и SetLoadedFormFieldValueByName обходят поле (и его /Kids) и в словаре состояний /AP /N каждого виджета выбирают состояние, чьё имя равно унаследованному /V; все остальные виджеты откатываются к Off. Дочерние radio без собственного /V разрешают выбор через цепочку родителей
Уплощение
FlattenLoadedFormFields согласует каждую цель до генерации appearance, поэтому импортированные значения (FDF, XFDF) уплощаются в правильное состояние checkbox или radio, даже если документ последний раз сохранялся с другим выбором
Стабильность регенерации
EnsureLoadedFieldAppearanceStream сохраняет существующее имя on-состояния словаря состояний при регенерации appearance кнопок, поэтому export value radio никогда не переименуется в безликое Yes, а дочерние radio без словаря состояний выводят имя своего on-состояния из собственного /T