public final List<ObjectSetUse> getObjectSetUses() {
		if(_objectSetUses == null) {
			List<ObjectSetUse> directObjectSetUses = getDirectObjectSetUses();
			List<ObjectSetUse> objectSetUses = new ArrayList<ObjectSetUse>();
			objectSetUses.addAll(directObjectSetUses);

			List list = getSuperTypes();
			if((list != null) && (list.size() > 0)) {
				for(int i = 0; i < list.size(); ++i) {
					DafSystemObjectType _systemObjectType = (DafSystemObjectType)list.get(i);
					List tmpList = _systemObjectType.getObjectSetUses();
					if(tmpList != null) {
						for(int j = 0; j < tmpList.size(); ++j) {
							DafObjectSetUse objectSetUse = (DafObjectSetUse)tmpList.get(j);
							long objectSetUseId = objectSetUse.getId();
							int k = 0;
							for(; k < objectSetUses.size(); ++k) {
								DafObjectSetUse _objectSetUse = (DafObjectSetUse)objectSetUses.get(k);
								if(_objectSetUse.getId() == objectSetUseId) {
									break;
								}
							}
							if(k == objectSetUses.size()) {
								objectSetUses.add(objectSetUse);
							}
						}
					}
				}
			}
			_objectSetUses = Collections.unmodifiableList(objectSetUses);
		}
		return _objectSetUses;
	}