Автоматически сгенерированный код в той же студии выглядит куда приличнее. Конечно, там тоже бывает, но в тривиальных ситуациях - код нормальный. Во флексе в принципе, система порочная, просто не бывает ситуаций, когда сгенерированный код не возможно было бы написать гораздо лучше.
Как бы это выглядело: все, что реализует IBindingClient (или IBindingClient2 - еще один замечеательный момент в СДК) реализовывало бы propertyChangeHandler, в который бы передавалась строка описывающая путь к измененному свойству. Собственно, похожим способом, как реализованы рантайм биндинги, только без попыток что-то скрыть, и ради этой скрытности наворотить кучу идиотизмов.
Соответственно, если в ответ на событие нужно было бы вызвать сгенерированный метод класса, а не анонимную функцию которую из класса-наследника и не достать особенно. Т.е. если смотреть на мой пример выше, то был бы сгенерирован примерно следующий код:

Код AS3:
protected function initBindings():void
{
. . .
this._bindings["baz.booz"] = this.generatedBinding;
. . .
}
public function propertyChangeHandler(property:String):void
{
this._bindings[property]();
}
protected function generatedBinding():void
{
this.foo.bar = this.baz.booz;
}
И не нужно ловить ошибки, и создавать видимость чего-то не понятного для разработчика. Если foo или baz нету на момент выполнения биндинга - пусть у разработчика болит голова, как это победить. А то получается ситуация, когда в половине случаев код, который в принципе не может выбросить исключения - типа чтения из константы - заворачивается в try-catch, и, наоборот, в оставшеся половине случаев, когда необходимо получить ошибку, чтобы понять, что что-то не успело проинициализироваться, или не правильно был определен порядок инициализации, все будет молчать.