public static List<SystemObject> getObjects(String objectSpecString, DataModel dataModel) throws IllegalArgumentException {
		List<SystemObject> allObjects = new LinkedList<SystemObject>();
		String[] objectSpecs = objectSpecString.split(",");
		for(int specIndex = 0; specIndex < objectSpecs.length; ++specIndex) {
			List objects = new LinkedList();

			String[] objectSpecParts = objectSpecs[specIndex].split(":");
			try {
				long objectId = 0;
				objectId = Long.parseLong(objectSpecParts[0]);
				objects.add(dataModel.getObject(objectId));
			}
			catch(Exception e) {
				SystemObject theNewObject = dataModel.getObject(objectSpecParts[0]);
				if(theNewObject != null) {
					objects.add(theNewObject);
				}
				else {
					debug.error("Objekt \"" + objectSpecParts[0] + "\" existiert nicht.");
					throw new IllegalArgumentException(
							"Objekt \"" + objectSpecParts[0] + "\" existiert nicht"
					);
				}
			}
			for(int partIndex = 1; partIndex < objectSpecParts.length; ++partIndex) {
				String objectSetName = objectSpecParts[partIndex];
				List newObjects = new LinkedList();
				Iterator objectsIterator = objects.iterator();
				while(objectsIterator.hasNext()) {
					Object object = objectsIterator.next();
					if(object instanceof ConfigurationObject) {
						if(objectSetName.equals("*")) {
							if(object instanceof SystemObjectType) {
								SystemObjectType typeObject = (SystemObjectType)object;
								List elements = typeObject.getElements();
								newObjects.addAll(elements);
							}
						}
						else {
							ObjectSet set = ((ConfigurationObject)object).getObjectSet(objectSetName);
							if(set != null) newObjects.addAll(set.getElements());
						}
					}
				}
				objects = newObjects;
			}
			allObjects.addAll(objects);
		}
		return allObjects;
	}