case ScopeManager.AUTO:
if (propertyTypeClass != null
&& (propertyTypeClass.isArray() || List.class
.isAssignableFrom(propertyTypeClass))) {
if (data instanceof IObservableValue) {
IObservableValue observable = (IObservableValue) data;
return observeDetailList(observable, type, path,
propertyType);
}
return observeList(data, path);
} else if (propertyTypeClass != null
&& (Set.class.isAssignableFrom(propertyTypeClass))) {
if (data instanceof IObservableValue) {
IObservableValue observable = (IObservableValue) data;
return observeDetailSet(observable, type, path,
propertyType);
}
return observeSet(data, path);
} else {
if (data instanceof IObservableValue) {
IObservableValue observable = (IObservableValue) data;
return observeDetailValue(observable, type, path,
propertyType);
}
return observeValue(data, path);
}
case ScopeManager.VALUE:
if (data instanceof IObservableValue) {
IObservableValue observable = (IObservableValue) data;
return observeDetailValue(observable, type, path, propertyType);
}
return observeValue(data, path);
case ScopeManager.COLLECTION:
if (propertyTypeClass != null
&& Set.class.isAssignableFrom(propertyTypeClass)) {
if (data instanceof IObservableValue) {
IObservableValue observable = (IObservableValue) data;
return observeDetailSet(observable, type, path,
propertyType);
}
return observeSet(data, path);
}
if (data instanceof IObservableValue) {
IObservableValue observable = (IObservableValue) data;
return observeDetailList(observable, type, path, propertyType);
}
return observeList(data, path);
case ScopeManager.SET:
if (data instanceof IObservableValue) {
IObservableValue observable = (IObservableValue) data;
return observeDetailSet(observable, type, path, propertyType);
}
return observeSet(data, path);
case ScopeManager.LIST:
if (data instanceof IObservableValue) {
IObservableValue observable = (IObservableValue) data;
return observeDetailList(observable, type, path, propertyType);
}
return observeList(data, path);
}
return null;