Согласование состояний 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