public <K> K getWatchedData(int index, Class<K> type, K def) {
WatchableObject object = (WatchableObject) DataWatcherRef.read.invoke(h().getDataWatcher(), index);
if (object == null) {
return def;
}
return Conversion.convert(object.b(), type, def);
}
@Override
public int hashCode() {
return entity == null ? super.hashCode() : entity.hashCode();