Спасибо, вроде прояснилось.
Еще вопрос: каким образом из дочерней триады достучаться до родительской модели?
Сейчас у меня все устроено вот так:

Код AS3:
/**
* Установка свойства. Если в качестве значения передать null, свойство удаляется.
* @param name - имя свойства
* @param value - значение
*/
public function setProperty(name:String, value:*){
//Запоминаем старое значение
var oldValue :* = this.data[name]?this.data[name]:null;
//Если новое значение такое же - ничего не делаем
if(value == oldValue) return;
//При получении null удаляем свойство
if(oldValue && (value == null)){
//Если это дочерняя модель - отписываемся от неё
if(oldValue is Model){
oldValue.removeEventListener(ModelChangeEvent.PROPERTY_CHANGE, this.dispatchEvent);
}//if
//Сносим
delete this.data[name];
}else{
//Устанавливаем значение
this.data[name] = value;
//Если это дочерняя модель - подписываемся на её события
if(value is Model){
value.addEventListener(ModelChangeEvent.PROPERTY_CHANGE, this.dispatchEvent);
}//if
}//if
//Сообщаем об изменении
this.dispatchEvent(new ModelChangeEvent(ModelChangeEvent.PROPERTY_CHANGE, name, oldValue, value));
}//setProperty
Т.е. если в качестве значения передать модель, то она автоматически начнет слушаться для всплывания событий. И если дочерняя модель получает ссылку на родительскую, то она начинает её слушать, и при любом изменении одной из них получается перполнение стека от событий, которыми они друг друга закидывают.
Пока сделал ссылку на родителя просто отдельным полем.