public IObservableList observe(Realm realm, Object source) {
IObservableList[] lists = new IObservableList[properties.length];
for (int i = 0; i < lists.length; i++)
lists[i] = properties[i].observe(realm, source);
IObservableList multiList = new MultiList(lists, elementType);
for (int i = 0; i < lists.length; i++)
PropertyObservableUtil.cascadeDispose(multiList, lists[i]);
return multiList;